Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: импорт из CSV-файла

Сообщения:  [1-10]    [11-20]   [21-30]  [31-38] 

 
 автор: Ксения_954   (07.07.2007 в 16:08)   письмо автору
 
   для: Trianon   (07.07.2007 в 12:46)
 

спасибо. теперь точно всё получлось)
что бы мы без Вас делали!!!!

   
 
 автор: Trianon   (07.07.2007 в 12:46)   письмо автору
 
   для: Ксения_954   (07.07.2007 в 09:27)
 

из кода Вы удалили цикл формирующий все CSV-поля . В результате остался только id_catalog из формы равный единице.

Зачем убирать категории? Только потому что они не заносятся?
Я бы не убирал его , а изменил его тип на VARCHAR(255) NULL чтобы туда названия категорий можно было записывались без приведения категории к одному из четырех слов.

В этом случае, для того чтобы отключить код приведения категории достаточно изменить одну строку, поставив перед ней знак коментария

//                                 $arr[1] = $categoria;  


Можно конечно убрать весь код, то есть выкинуть строки



        $categoria = "avtomobili";  
         switch(substr(strtolower($arr[1]), 0, 3))  
         {  
          case 'Авто':  
            $categoria = "avtomobili";  
            break;  
          case 'апт':  
            $categoria = "apteki";  
            break;  
          case 'банк':  
            $categoria = "banki";  
            break;  
          case 'dvd':  
            $categoria = "dvd";  
            break;  
         }  
         $arr[1] = $categoria;  



Если вы всё же хотите избавиться от этого поля совсем, нужно не только убрать эти (но не остальные!) строки , но еще выкинуть имя поля из начала insert-запроса - кстати этот момент Вы сделали корректно.

   
 
 автор: Ксения_954   (07.07.2007 в 09:27)   письмо автору
 
   для: Ксения_954   (07.07.2007 в 09:26)
 

пишет ошибку:
SQL: insert into product(
`vid`,`marka`,`price`,`strana`,
`note`,`photo`,`firma`,`address`,
`id_catalog`)values
(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)
,(,1)

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ,(,1) ' at line 5

   
 
 автор: Ксения_954   (07.07.2007 в 09:26)   письмо автору
 
   для: Trianon   (06.07.2007 в 15:42)
 

кириллица windows.
а проще, скажите, пожалуйста, как убрать столбец категории? я удалила из таблицы БД и из файла csv.
из кода тоже удалила, получилось так:


<?php  
setlocale
(LC_ALL'rus'); 
  
// Осуществляем соединение с базой данных  
  
require_once("config.php");  
  if(empty(
$_FILES['csv']['tmp_name']))  
      
puterror("Ошибка при отправке csv-файла");  
  if(!(
$fp fopen($_FILES['csv']['tmp_name'],"rb")))  
      
puterror("Ошибка при открытии отправленного файла");  

    
// Считаем размер самой длинной строки файла  
    
for($len 0; !feof($fp); )   $len max($lenstrlen(fgets($fp)));  

    
$separator ";";  
    
// Если передан параметр separator изменяем значение переменной $separator  
    
if(!empty($_POST['separator']))  
        
$separator $_POST['separator'];  

    
// Начало формирования SQL-запроса на вставку данных из csv-файла  
    
$insert_query "insert into product(  
                     `vid`,`marka`,`price`,`strana`,  
                         `note`,`photo`,`firma`,`address`,  
                         `id_catalog`)values "
;  

    for(
$sep " "rewind($fp); $arr fgetcsv($fp$len$separator); $sep ",")  
    {  
               
   
                    
         
$insert_query .= "\r\n$sep($list,{$_POST['id_catalog']})";  
    }  
    
// Закрываем файл  
    
fclose($fp);  
    
// ---   $vid, $marka, $price, $strana, $note, $photo, $firma, $address, $id_catalog ---  
    // Удаляем предыдущие записи  
    
$query_delete "delete from product where id_catalog=".$_POST['id_catalog'];  
    
mysql_query($query_delete);  
    
// Выполняем SQL-запросы  
    
if(mysql_query($insert_query))  
    {  
      echo 
"<HTML><HEAD>  
            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=291005.php?id_parent="
.$_POST['id_catalog']."'>  
            </HEAD></HTML>"
;  
    }  
    else  
      echo 
"SQL: ".nl2br(htmlspecialchars($insert_query)). "<br>Error: ".mysql_error();  
?>  

   
 
 автор: Trianon   (06.07.2007 в 15:42)   письмо автору
 
   для: Ксения_954   (06.07.2007 в 14:33)
 

кириллица - какая? Их шесть разных.

   
 
 автор: Ксения_954   (06.07.2007 в 14:33)   письмо автору
 
   для: Trianon   (06.07.2007 в 13:22)
 

кодировка кириллица...

   
 
 автор: Trianon   (06.07.2007 в 13:22)   письмо автору
 
   для: Ксения_954   (06.07.2007 в 12:18)
 

наиболее вероятно,что потребуется написать


setlocale( "LC_ALL", "ru_RU.CP1251" ); 
или

setlocale( "LC_ALL", "ru_RU" ); 


Не прощу. Вы не ответили на вопрос о кодировке браузера.
Хотя куда уж проще, открыть браузер, зайти на собственный сайт, ткнуть правой кнопкой мыши в страницу и прочесть что стоит напротив слова "кодировка"

   
 
 автор: Ксения_954   (06.07.2007 в 12:18)   письмо автору
 
   для: Trianon   (06.07.2007 в 01:24)
 

то есть нужно вставить setlocale(LC_ALL, 'rus');?

вот так?

<?php 
setlocale
(LC_ALL'rus');
  
// Осуществляем соединение с базой данных 
  
require_once("config.php"); 
  if(empty(
$_FILES['csv']['tmp_name'])) 
      
puterror("Ошибка при отправке csv-файла"); 
  if(!(
$fp fopen($_FILES['csv']['tmp_name'],"rb"))) 
      
puterror("Ошибка при открытии отправленного файла"); 

    
// Считаем размер самой длинной строки файла 
    
for($len 0; !feof($fp); )   $len max($lenstrlen(fgets($fp))); 

    
$separator ";"
    
// Если передан параметр separator изменяем значение переменной $separator 
    
if(!empty($_POST['separator'])) 
        
$separator $_POST['separator']; 

    
// Начало формирования SQL-запроса на вставку данных из csv-файла 
    
$insert_query "insert into product( 
                     `categoria`,`vid`,`marka`,`price`,`strana`, 
                         `note`,`photo`,`firma`,`address`, 
                         `id_catalog`)values "


    for(
$sep " "rewind($fp); $arr fgetcsv($fp$len$separator); $sep ","
    { 
        unset(
$arr[0]); 
        
$categoria "avtomobili"
         switch(
substr(strtolower($arr[1]), 03)) 
         { 
          case 
'Авто'
            
$categoria "avtomobili"
            break; 
          case 
'апт'
            
$categoria "apteki"
            break; 
          case 
'банк'
            
$categoria "banki"
            break; 
          case 
'dvd'
            
$categoria "dvd"
            break; 
         } 
         
$arr[1] = $categoria
         foreach(
$arr as $key => $val
             
$arr[$key] = "'".mysql_escape_string($val)."'"
         
$list implode(','$arr); 

         
$insert_query .= "\r\n$sep($list,{$_POST['id_catalog']})"
    } 
    
// Закрываем файл 
    
fclose($fp); 
    
// ---  $categoria, $vid, $marka, $price, $strana, $note, $photo, $firma, $address, $id_catalog --- 
    // Удаляем предыдущие записи 
    
$query_delete "delete from product where id_catalog=".$_POST['id_catalog']; 
    
mysql_query($query_delete); 
    
// Выполняем SQL-запросы 
    
if(mysql_query($insert_query)) 
    { 
      echo 
"<HTML><HEAD> 
            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index1.php?id_parent="
.$_POST['id_catalog']."'> 
            </HEAD></HTML>"

    } 
    else 
      echo 
"SQL: ".nl2br(htmlspecialchars($insert_query)). "<br>Error: ".mysql_error(); 
?> 


у меня снова не получается..:(( или csv-файл не тот..:( я вставляю тот который я здесь вставляла....что же такое =((
ps.-простите меня, незнающую...:(

   
 
 автор: Trianon   (06.07.2007 в 01:24)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 15:33)
 

в какой кодировке у Вас хранятся скрипты и выводятся в браузер данные?
И где вообще происходит дело - на хостинге или не локальной машине?

Если на хостинге - Вам нужно выяснить у хостера, каким вызовом можно установить локаль для той кодировки, в которой у Вас хранятся скрипты.

   
 
 автор: Ксения_954   (05.07.2007 в 15:33)   письмо автору
 
   для: Trianon   (05.07.2007 в 15:12)
 

:) ой, извините..:)

всё равно тоже самое...
какую категорию пишу здесь:
unset($arr[0]);
$categoria = "apteki"; // здесь
switch(substr($arr[1], 0, 3))

та и появляется потом в таблице..:(

а мне нужно чтобы появлялась категория, та же, что и в отправляемом csv-файле.

   

Сообщения:  [1-10]    [11-20]   [21-30]  [31-38] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования