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

Форум PHP

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

 

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

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

тема: импорт прайс-листа
 
 автор: dina   (24.04.2006 в 11:38)   письмо автору
 
 

Все коды перепробовала, которые сдесь писали. Но так ничего не получилось.
Помогите ,где ошибка?(переделанный пример из книги)

<?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 name_cat values ";
    
// Разбиваем строку по отдельным словам, используя
    // разделитель $separator
    
foreach($strtmp as $value)
    {
      
// Если строка пуста - выходим из цикла. Пустые строки могут появится,
      // если в конце csv-файла находятся пустые строки.
     // if(empty($value)) break;
      // товар
      
$name strtok($separator);
      
$tok=strtok($separator);
       
//$org_id=strtok($separator);
      
$org_id=substr($tok,0,strlen($tok)-1);
     
$org_id=str_replace(" ",""$org_id);
     
     
//print "$price=substr($tok,0,strlen($tok)-1)";
      
$price=str_replace(" ",""$price);
      
//$sub_id=strtok($separator);
    
$sub_id=substr($tok,0,strlen($tok)-1);
      
$sub_id=str_replace(" ",""$sub_id);
    
     
      
      
// Преобразуем прямые кавычки в обратные
     // $name = str_replace("'","'",$name);
      // Формируем и выполняем SQL-запрос на добавление позиции
      
$insert_query .= "(null,
                        '
$name',
                        
$org_id,
                        '
$price',
                        
$sub_id),";
                        
    }
    
// Из запроса $insert_query удаляем последнюю запятую
    
$insert_query substr($insert_query,0,strlen($insert_query)-1);
    
// Удаляем предыдущие записей
    
$query_delete "delete from name_cat where sub_id=21";
   
mysql_query($query_delete);
    
// Выполняем SQL-запросы
   
mysql_query($insert_query);
    
    
?>



<?php


  
if(!isset($button)) $button "Добавить";
  if(!isset(
$separator)) $separator ";";
  if(!isset(
$action)) $action "addfile1.php";
?>
<table><tr><td>
<p class=boxmenu>
</p>
</td></tr></table>

<form enctype='multipart/form-data' action='<?php echo $action?>' method='post'>
<table>
<tr><td><p class='zag2'>файл</td><td><input size='61' class='input' type='file' name='csv'></td></tr>
<tr><td><p class='zag2'>разделитель</td><td><input size='61' class='input' type='text' name='separator' value='<?php echo $separator?>'></td></tr>
<tr><td></td><td><input class='button' type='submit' value='<?php echo $button?>'></td></tr>

</table>
</form>

   
 
 автор: dina   (24.04.2006 в 13:55)   письмо автору
 
   для: dina   (24.04.2006 в 11:38)
 

что то у меня ничего не работает!!!!!!!!
Говорит 404. Файл не найден.
Проверьте правильность введенного URL. Обратите внимание на то, что строчные и прописные буквы в написании имен файлов и каталогов различаются.



Пример 1. Чтение и вывод на экран содержания CSV-файла

<?php
$row 
1;
$handle fopen("test.csv""r");
while ((
$data fgetcsv($handle1000",")) !== FALSE) {
   
$num count($data);
   echo 
"<p> $num полей в строке $row: <br /></p>\n";
   
$row++;
   for (
$c=0$c $num$c++) {
       echo 
$data[$c] . "<br />\n";
   }
}
fclose($handle);
?>  
 

   
 
 автор: cheops   (24.04.2006 в 14:41)   письмо автору
 
   для: dina   (24.04.2006 в 11:38)
 

На каком этапе происходит сбой?

   
 
 автор: dina   (24.04.2006 в 14:51)   письмо автору
 
   для: cheops   (24.04.2006 в 14:41)
 

В смысле?
Я вот хотела испытать пример

Пример 1. Чтение и вывод на экран содержания CSV-файла 

<?php 
$row 
1
$handle fopen("test.csv""r"); 
while ((
$data fgetcsv($handle1000",")) !== FALSE) { 
   
$num count($data); 
   echo 
"<p> $num полей в строке $row: <br /></p>\n"
   
$row++; 
   for (
$c=0$c $num$c++) { 
       echo 
$data[$c] . "<br />\n"
   } 

fclose($handle); 
?>   

Но выдает ошибку.
А это может из-за того что не php5?
А в самом первом примере, где то в начале ошибка, потому что в цикл вставляла print, но ничего не печатается

   
 
 автор: dina   (24.04.2006 в 15:53)   письмо автору
 
   для: dina   (24.04.2006 в 14:51)
 

Странно все заработало, хотя ничего не делала.
Но в первом коде, пока не происходит запись в БД

   
 
 автор: Trianon   (24.04.2006 в 20:30)   письмо автору
 
   для: dina   (24.04.2006 в 15:53)
 

Некая компиляция этих двух фрагментов.
Предполагается, что таблица table1 имеет на 1 столбец больше, чем csv-файл - самый первый столбец считается первичным ключом и генерируется автоинкрементом.

<?php
  
require_once("config.php");
  if(!empty(
$_FILES['csv']['tmp_name']))
  {
     
$name $_FILES['csv']['name'];
     if(!(
$fp fopen($_FILES['csv']['tmp_name'],"rb")))
        
puterror("Ошибка при открытии отправленного файла");
     
$maxlen 0;

    
$separator $_POST['separator'];
    
$quotechar $_POST['quotechar'];
    if(
get_magic_quotes_gpc())
    {
        
$separator stripslashes($separator);
        
$quotechar stripslashes($quotechar);
    }
    while(!
feof($fp))
        
$maxlen max($maxlenstrlen(fgets($fp)));
    
fseek($fp0SEEK_SET);
     
// Читаем содержимое файла
     
$lines 0;
     while((
$row fgetcsv($fp$maxlen$separator$quotechar)) !== false)
     {
         ;
         
$query 'INSERT INTO table1 values (null';
         foreach(
$row as $val)
             
$query .= ',"'mysql_escape_string($val). '"';
         
$query .= ')';
         
$res mysql_query($query);
         if(!
$res) die("error in insert request: [$query] "mysql_error());
         
$lines += mysql_affected_rows();
     }
    
fclose($fp);
    echo 
"<br><br>Добавлено $lines строк из файла $name <br><br>\r\n";
  }

  if(!isset(
$separator)) $separator ";";
  if(!isset(
$quotechar)) $quotechar '"';
?>

<table><form enctype=multipart/form-data  method=post>
<tr><td><p class='zag2'>файл</td><td><input size='61' class='input' type='file' name='csv'></td></tr>
<tr><td><p class='zag2'>разделитель</td><td><input size='1' class='input' type='text' name='separator' value='<?php echo $separator?>'></td></tr>
<tr><td><p class='zag2'>символ кавычки</td><td><input size='1' class='input' type='text' name='quotechar' value='<?php echo $quotechar?>'></td></tr>
<tr><td></td><td><input class='button' type='submit' value='Add file'></td></tr>
</form></table>

   
Rambler's Top100
вверх

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