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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: импорт из CSV-файла
 
 автор: Ксения_954   (02.07.2007 в 16:50)   письмо автору
 
 

Пытаюсь создать универсальный каталог продукции и поиск по этому каталогу.
И для этого импортирую прайс-лист, который в формате csv.
При импорте на странице addfile.php появляется:


insert into product values ( '', 'Очищающий гель для лица', 77, Китай, -, офис Мейтан, 'Ул. Свердлова 5. тел. 75-22-21 ' ),( '', 'Антибактериальное молочко для жирной и проблемной кожи ', 77, Китай, -, офис Мейтан, 'Ул. Свердлова 5. тел. 75-22-21 ' ),( '', 'Очищающее молочко для лица ', 77, Китай, -, офис Мейтан, 'Ул. Свердлова 5. тел. 75-22-21 ' )

и т.д.


Подскажите, пожалуйста, что может быть не так.

   
 
 автор: sim5   (02.07.2007 в 18:24)   письмо автору
 
   для: Ксения_954   (02.07.2007 в 16:50)
 

Многострочный оператор INSERT:

mysql> INSERT INTO nametable VALUES (param),
-> (param),
-> (param);

   
 
 автор: Ксения_954   (02.07.2007 в 19:09)   письмо автору
 
   для: sim5   (02.07.2007 в 18:24)
 

что это значит? я не поняла...:(

   
 
 автор: Trianon   (02.07.2007 в 19:23)   письмо автору
 
   для: Ксения_954   (02.07.2007 в 19:09)
 

Как выглядит код?

   
 
 автор: Ксения_954   (02.07.2007 в 19:28)   письмо автору
 
   для: Trianon   (02.07.2007 в 19:23)
 



<?php


  
// Осуществляем соединение с базой данных
  
require_once("config.php");
  if(empty(
$_FILES['csv']['tmp_name']))
      
puterror("Ошибка при отправке csv-файла");
  if(!(
$fp fopen($_FILES['csv']['tmp_name'],"rb")))
      
puterror("Ошибка при открытии отправленного файла");
    
// Читаем содержимое файла
    
$buffer fread($fp,filesize($_FILES['csv']['tmp_name']));
    
// Закрываем файл
    
fclose($fp);
    
// Удаляем файл
    
unlink($_FILES['csv']['tmp_name']);
    
// Присваиваем по умолчанию
    
$separator ";";
    
// Если передан параметр separator изменяем значение переменной $separator
    
$separator $_POST['separator'];
    
// Если имеются пустые позиции забиваем их прочерком -
    
$buffer str_replace($separator.$separator$separator."-".$separator,$buffer);
    
$buffer str_replace("\n".$separator"\n-".$separator,$buffer);
    
$buffer str_replace($separator."\n"$separator."-\n",$buffer);
    
// Разбиваем файл по строкам, каждую из которых заносим
    // в отдельный элемент массива $strtmp
    
$tok strtok($buffer,"\n");
    while (
$tok)
    {
      
$tok strtok("\n");
      
$strtmp[] = $tok;
    }
    
// Начало формирования SQL-запроса на вставку данных из
    // csv-файла
    
$insert_query "insert into product values ";
    
// Разбиваем строку по отдельным словам, используя
    // разделитель $separator
    
foreach($strtmp as $value)
    {
      
// Если строка пуста - выходим из цикла. Пустые строки могут появится,
      // если в конце csv-файла находятся пустые строки.
      
if(empty($value)) break;
      
// Определяем район
      
switch(substr(strtolower(strtok($value,$separator)), 03))
      {
          case 
'Авто':
            
$categoria "avtomobili";
            break;
          case 
'апт':
            
$categoria "apteki";
            break;
          case 
'банк':
            
$categoria "banki";
            break;
          case 
'dvd':
            
$categoria "dvd";
            break;
      }
 
// Вид
      
$vid strtok($separator);
      
// Марка
      
$marka strtok($separator);
 
// Цена
      
$tok strtok($separator);
      
$price substr($tok,0,strlen($tok)-1);
      
$price str_replace(" ","",$price);
 
// Страна
      
$strana strtok($separator);
 
// опис
      
$note strtok($separator);
                
// Фото
      
$photo strtok($separator);
  
// Фирма
      
$firma strtok($separator);
 
// Адрес
      
$address strtok($separator);


      
// Преобразуем прямые кавычки в обратные
     
      
$categoria str_replace("'","`",$categoria);
      
// Формируем и выполняем SQL-запрос на добавление позиции
      
$insert_query .= "(

'
$categoria',
$vid,
 
$marka,
$price,
$strana,
$note,
$photo,
$firma,
$address,
                        
"
.$_POST['id_catalog']."),";
    }
    
// Из запроса $insert_query удаляем последнюю запятую
    
$insert_query substr($insert_query,0,strlen($insert_query)-1);
    
// Удаляем предыдущие записей
    
$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 
$insert_query;
      echo 
"<br>";
    }
?>



   
 
 автор: Trianon   (02.07.2007 в 19:43)   письмо автору
 
   для: Ксения_954   (02.07.2007 в 19:28)
 

У Вас исполняется

echo $insert_query;       
echo "<br>";  
- а значит запрос отвергнут.
поставьте там вместо этих двух строк

echo "SQL: $insery_query<br>Error: ".mysql_error();  


чтобы понять, что не нравится серверу.
А еще - приведите пожалуйста структуру таблицы (лучше дамп)

   
 
 автор: Ксения_954   (02.07.2007 в 19:57)   письмо автору
 
   для: Trianon   (02.07.2007 в 19:43)
 

когда поменяла, пишут

SQL:
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 '«Естественная красота», 7, Китай, -, -, офис Мейтан, Ул. Свердлова 5. тел' at line 5


-- Структура таблицы `product`
--

CREATE TABLE `product` (
`id_product` int(11) NOT NULL auto_increment,
`categoria` enum('avtomobili','apteki','banki','dvd') NOT NULL default 'avtomobili',
`vid` tinytext NOT NULL,
`marka` tinytext NOT NULL,
`price` int(10) NOT NULL default '0',
`strana` tinytext NOT NULL,
`note` tinytext NOT NULL,
`photo` tinytext NOT NULL,
`firma` tinytext NOT NULL,
`address` tinytext NOT NULL,
`hide` enum('show','hide') NOT NULL default 'show',
`pos` int(11) NOT NULL default '0',
`id_catalog` int(8) NOT NULL,
PRIMARY KEY (`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=127 ;

--
-- Дамп данных таблицы `product`
--

INSERT INTO `product` VALUES (16, '', 'Марка', 'Цена (руб)', 0, 'Описание', 'Фото', 'Предприятие', 'Информация о предприятии', '', 'show', 0, 0);
INSERT INTO `product` VALUES (17, '', '«Океан красоты» ', '77', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (18, '', '«Естественная красота»', '77', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (19, '', '«Зеленый чай»', '77', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (20, '', '“D.U.G"', '259', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (21, '', '“D.U.G"', '34', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (22, '', '«Sevel` er»', '236', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (23, '', ' «Sevel` er» ', '98', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (24, '', ' «Sevel` er» ', '23', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (25, '', '«Sevel` er»', '137', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (26, '', '«Sevel` er»', '180', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (27, '', '«Sevel` er»', '86', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (28, '', '«Sevel` er»', '28', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (29, '', '«Классика зелени»', '156', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (30, '', '«Классика зелени»', '200', 0, '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (77, 'avtomobili', '«Океан красоты» ', '77', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (78, 'avtomobili', '«Естественная красота»', '77', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (79, 'avtomobili', '«Зеленый чай»', '77', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (80, 'avtomobili', '“D.U.G"', '259', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (81, 'avtomobili', '“D.U.G"', '34', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (82, 'avtomobili', '«Sevel` er»', '236', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (83, 'avtomobili', ' «Sevel` er» ', '98', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (84, 'avtomobili', ' «Sevel` er» ', '23', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (85, 'avtomobili', '«Sevel` er»', '137', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (86, 'avtomobili', '«Sevel` er»', '180', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (87, 'avtomobili', '«Sevel` er»', '86', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (88, 'avtomobili', '«Sevel` er»', '28', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (89, 'avtomobili', '«Классика зелени»', '156', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (90, 'avtomobili', '«Классика зелени»', '200', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (91, 'avtomobili', '«Классика зелени»', '127', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (92, 'avtomobili', '«Классика зелени»', '151', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (93, 'avtomobili', '«Классика зелени»', '142', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (94, 'avtomobili', '«Классика зелени»', '161', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (95, 'avtomobili', '«Классика зелени»', '179', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (96, 'avtomobili', '«Классика зелени»', '146', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (97, 'avtomobili', '«BITO»', '262', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (98, 'avtomobili', '«BITO»', '262', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (99, 'avtomobili', ' «Сияющая красота - Шан-шан-мэй»', '47', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (100, 'avtomobili', '“Jumei”', '121', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (101, 'avtomobili', '“Jumei” ', '140', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (102, 'avtomobili', '“Jumei”', '109', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (103, 'avtomobili', '“Jumei”', '90', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (104, 'avtomobili', '“Jumei”', '90', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (105, 'avtomobili', 'Renown', '142', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (106, 'avtomobili', 'Renown', '172', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (107, '', '', '55', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (108, '', '', '16', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (109, '', '', '19', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (110, '', '', '437', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (111, '', '', '85', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (112, '', '', '85', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (113, '', '', '85', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (114, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (115, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (116, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (117, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (118, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (119, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (120, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (121, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (122, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (123, '', '', '45', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (124, '', '', '150', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (125, '', '', '226', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);
INSERT INTO `product` VALUES (126, '', '', '211', 0, '-', '-', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', '', 'show', 0, 0);

   
 
 автор: Trianon   (02.07.2007 в 20:44)   письмо автору
 
   для: Ксения_954   (02.07.2007 в 19:57)
 

Похоже, тут надо по-взрослому исправлять...

<?php

  
// Осуществляем соединение с базой данных
  
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`,
                         `hide`,`pos`,`id_catalog`)values "
;

    for(
$sep " "rewind($fp); $arr fgetcsv($fp$len$separator); $sep ",")
    {
        
$categoria "avtomobili";
         switch(
substr(strtolower($arr[0]), 03))
         {
          case 
'Авто':
            
$categoria "avtomobili";
            break;
          case 
'апт':
            
$categoria "apteki";
            break;
          case 
'банк':
            
$categoria "banki";
            break;
          case 
'dvd':
            
$categoria "dvd";
            break;
         }
         
$arr[0] = $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();
?>


   
 
 автор: Trianon   (02.07.2007 в 23:23)   письмо автору
 
   для: Ксения_954   (02.07.2007 в 19:57)
 

Получилось?

   
 
 автор: Ксения_954   (04.07.2007 в 08:13)   письмо автору
 
   для: Trianon   (02.07.2007 в 23:23)
 

Я сделала как Высказали...выдает ошибку...:(


SQL: insert into product(
`categoria`,`vid`,`marka`,`price`,`strana`,
`note`,`photo`,`firma`,`address`,
`hide`,`pos`,`id_catalog`)values
('avtomobili','avtomobili','Очищающий гель для лица','«Океан красоты» ','77','Китай','','',' офис Мейтан','Ул. Свердлова 5. тел. 75-22-21','show','0','0',')
,('avtomobili','avtomobili','Антибактериальное молочко для жирной и проблемной кожи ','«Естественная красота»','77','Китай','','',' офис Мейтан','Ул. Свердлова 5. тел. 75-22-21','show','0','0',')


Скажите, возможно ли загружать файлы(прайсы) в каталог не используя addfile.php?
Я хочу создать каталог, который просматривается в режиме пользователя. Как мне загрузить туда информацию, не используя импорт CSV?

Заранее спасибо.

   
 
 автор: Trianon   (04.07.2007 в 09:28)   письмо автору
 
   для: Ксения_954   (04.07.2007 в 08:13)
 

Вы не привели самого сообщения об ошибке. После слова Error
Также неплохо было бы прикрепить CSV-файл. Хотя бы небольшой.

загрузить таблицу можно по-разному, но обычно всё определяется тем, где расположен сервер с БД , что является источником данных, и опять же где этот источник находится.
В конце концов, можно даже вручную набивать данные SQL-запросами, хотя, по-моему, это абсурд.

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

простите, вот сообщение об ошибке:
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 'avtomobili','Антибактериальное молочко для жирной и проблемной кожи ','«Естеств' at line 5

csv файл прикрепила.

   
 
 автор: Night_Charter   (04.07.2007 в 18:15)   письмо автору
 
   для: Ксения_954   (04.07.2007 в 12:20)
 

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

   
 
 автор: Ксения_954   (04.07.2007 в 19:12)   письмо автору
 
   для: Night_Charter   (04.07.2007 в 18:15)
 

....вроде нет

   
 
 автор: Ксения_954   (04.07.2007 в 21:43)   письмо автору
 
   для: Ксения_954   (04.07.2007 в 19:12)
 

ничего не могу понять. почему не получается?
может быть ошибка с базой?

Структура таблицы `product`
--

CREATE TABLE `product` (
`id_product` int(11) NOT NULL auto_increment,
`categoria` enum('avtomobili','apteki','banki','dvd') NOT NULL default 'avtomobili',
`vid` tinytext NOT NULL,
`marka` tinytext NOT NULL,
`price` int(10) NOT NULL default '0',
`strana` tinytext NOT NULL,
`note` tinytext NOT NULL,
`photo` tinytext NOT NULL,
`firma` tinytext NOT NULL,
`address` tinytext NOT NULL,
`hide` enum('show','hide') NOT NULL default 'show',
`pos` int(11) NOT NULL default '0',
`id_catalog` int(8) NOT NULL,
PRIMARY KEY (`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=134 ;

--
-- Дамп данных таблицы `product`
--

INSERT INTO `product` VALUES (1, 'avtomobili', 'Очищающий гель для лица', '«Океан красоты» ', 77, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (2, 'avtomobili', 'Антибактериальное молочко для жирной и проблемной кожи ', '«Естественная красота»', 77, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (3, 'avtomobili', 'Очищающее молочко для лица ', '«Зеленый чай»', 77, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (4, 'avtomobili', 'Крем антицеллюлитный (из серии «Красный перец»)', '“D.U.G"', 259, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (5, 'avtomobili', 'Маска для живота ', '“D.U.G"', 34, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (6, 'avtomobili', 'Крем для лица против морщин 30гр.', '«Sevel` er»', 236, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (7, 'avtomobili', 'Крем для рук и ног 100гр. ', ' «Sevel` er» ', 98, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (8, 'avtomobili', 'Крем для ступней ног 30гр.', ' «Sevel` er» ', 23, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (9, 'avtomobili', 'Регенерирующий крем для лица 60гр. ', '«Sevel` er»', 137, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (10, 'avtomobili', 'Мягкий увлажняющий лосьон 100 ml', '«Sevel` er»', 180, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (11, 'avtomobili', 'Увлажняющее молочко 100гр.', '«Sevel` er»', 86, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (12, 'avtomobili', 'Профилактический крем для ступней ног 30г', '«Sevel` er»', 28, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (13, 'avtomobili', 'Увлажняющий питательный крем с минеральной водой 55g ', '«Классика зелени»', 156, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (14, 'avtomobili', 'Лосьон, сужающий поры 130ml ', '«Классика зелени»', 200, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (15, 'avtomobili', 'Отшелушивающий гель-скраб для лица 60 g ', '«Классика зелени»', 127, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (16, 'avtomobili', 'Крем от угрей (с отбеливающим эффектом) 55g ', '«Классика зелени»', 151, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (17, 'avtomobili', 'Молочко для умывания 100g ', '«Классика зелени»', 142, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (18, 'avtomobili', 'Крем против морщин для лица (обладает отбеливающим эффектом) 55g', '«Классика зелени»', 161, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (19, 'avtomobili', 'Крем вокруг глаз против морщин 15g ', '«Классика зелени»', 179, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (20, 'avtomobili', 'Увлажняющий отбеливающий крем ', '«Классика зелени»', 146, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (21, 'avtomobili', 'Восстанавливающая оживляющая эссенция для лица 120ml (Акулий хрящ)', '«BITO»', 262, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (22, 'avtomobili', 'Крем от - морщин и мешков под глазами 30g ', '«BITO»', 262, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (23, 'avtomobili', 'Зубная паста с фтором и кальцием 105 гр.', ' «Сияющая красота - Шан-шан-мэй»', 47, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (24, 'avtomobili', ' Прокладки ежедневные гигиенические на травах; 20 шт.', '“Jumei”', 121, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (25, 'avtomobili', 'Супертонкие, ежедневные гигиенические прокладки с ментолом; 30 шт.', '“Jumei” ', 140, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (26, 'avtomobili', ' Ежедневные гигиенические прокладки ; 18 шт', '“Jumei”', 109, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (27, 'avtomobili', 'Дневные гигиенические прокладки с ментолом на критические дни; 16 шт.', '“Jumei”', 90, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (28, 'avtomobili', 'Ночные гигиенические прокладки с ментолом на критические дни; 12 шт.', '“Jumei”', 90, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (29, 'avtomobili', 'Плацентарное увлажняющее молочко, 120г', 'Renown', 142, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);
INSERT INTO `product` VALUES (30, 'avtomobili', 'Крем тональный , 60г', 'Renown', 172, 'Китай', '', '', ' офис Мейтан', 'Ул. Свердлова 5. тел. 75-22-21', 'show', 0, 0);


Нужна ли ещё таблица для создания этого файла addfile.php?

   
 
 автор: Trianon   (05.07.2007 в 09:43)   письмо автору
 
   для: Ксения_954   (04.07.2007 в 21:43)
 

Исправьте скрипт следующим образом.


<?php 

  
// Осуществляем соединение с базой данных 
  
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, и как именно Вы хотите поместить записи оттуда в таблицу, всей этой возни можно было бы избежать.

Не получалось ничего потому, что типы и количество формируемых полей в INSERT-запросе (а они берутся из CSV) должны соответствовать структуре таблицы. А они у Вас разные. Следовательно одно к другому нужно приводить. А как догадаешься , каким именно образом? Либо по коду - так он у Вас ошибочный был. Либо по содержимому.

   
 
 автор: Ксения_954   (05.07.2007 в 10:21)   письмо автору
 
   для: Trianon   (05.07.2007 в 09:43)
 

я вставила код который Вы написали..выдает ошибку:

Parse error: parse error, unexpected '[', expecting T_PAAMAYIM_NEKUDOTAYIM in d:\hst\estvse72-ru_575360dc\http\addfile.php on line 26

Скажите, а каким образом должны выглядеть таблица, которую загружаю? нужен ли столбец id_catalog или только категория, вид, марка и т.д.?

ps-спасибо что на связи :)

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

Последний вариант скрипта составлен так, чтобы читать тот CSV, который Вы прикрепили.

Соответственно, он пропускает первое поле с идентификатором.
id генерируется сервером БД автоматически при добавлении очередной строки.

Сделать можно как угодно, но поймите же, нужно знать как делать. А не гадать посреди процесса.

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

Извините. Долар забыл.
Исправьте строку unset(arr[0]); на unset($arr[0]);

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

я не могу разобраться что означает эта ошибка...


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 'avtomobili','«Естественная красота»','77','Китай','','','офис Мейтан','Ул. Сверд' at line 5

нужно исправлять таблицу которая в бд или csv-файл?

я совсем запуталась :(

   
 
 автор: Ксения_954   (05.07.2007 в 10:57)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 10:51)
 

а как по-другому можно вставить файлы(таблицы) в каталог?..кроме "импорта csv-файлов" и ручного вбивания позиций?

   
 
 автор: Trianon   (05.07.2007 в 11:26)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 10:57)
 

какие файлы и какие таблицы?
XLS документ напрямую в MySQL не вставить - таблица EXCEL и таблица реляционной БД - вещи совершенно разные, и для разных целей предназначенные.
Вы же идете по правильному пути.

   
 
 автор: Trianon   (05.07.2007 в 11:24)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 10:51)
 

Прошу прощения еще раз...
Вот эта версия добавляет прикрепленный Вами файл в таблицу, строктуру которой Вы описали без ошибок.
Только что проверил.


<?php

  
// Осуществляем соединение с базой данных
  
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();
?>

последняя ошибка была из-за того, что я случайно забыл апостроф в самом конце шаблона запроса...

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

спасибо огромнейшее!!!!!!!

   
 
 автор: Ксения_954   (05.07.2007 в 14:00)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 12:36)
 

:( почему-то всегда выдается категория "автомобили".....странно

   
 
 автор: Trianon   (05.07.2007 в 14:20)   письмо автору
 
   для: Ксения_954   (05.07.2007 в 14:00)
 

а если убрать strtolower ?
У меня зарегистрировалось как аптеки.
Явно проблема с локалью.

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

написала так:


 unset($arr[0]);
        $categoria = "avtomobili";
         switch(substr($arr[1]) 0, 3)
         {


пишет ошибку Parse error: parse error, unexpected T_LNUMBER в строке switch(substr($arr[1]) 0, 3)

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

горе луковое...
switch(substr($arr[1], 0, 3))

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

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

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

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

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

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

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

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

   
 
 автор: Ксения_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 в 13:22)   письмо автору
 
   для: Ксения_954   (06.07.2007 в 12:18)
 

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


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

setlocale( "LC_ALL", "ru_RU" ); 


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

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

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

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

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

   
 
 автор: Ксения_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();  
?>  

   
 
 автор: Ксения_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

   
 
 автор: 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 в 16:08)   письмо автору
 
   для: Trianon   (07.07.2007 в 12:46)
 

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

   
Rambler's Top100
вверх

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