2010-04-11 3 views
1

Я загружаю файл, а затем пытаюсь использовать fgetcsv, чтобы что-то делать с ним.Использование fopen на загружаемом файле с php

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

Im получать мой «файл загружен» уведомление, и файл сохранения правильно, но счетчик числа записей показывает 0.

if(isset($_FILES[csvgo])){ 

    $tmp = $_FILES[csvgo][tmp_name]; 

    $name = "temp.csv"; 

    $tempdir = "csvtemp/"; 

    if(move_uploaded_file($tmp, $tempdir.$name)){ echo "file uploaded<br>"; } 

    $csvfile = $tempdir.$name; 

    $fh = fopen($csvfile, 'r'); 
    $headers = fgetcsv($fh); 
    $data = array(); 
    while (! feof($fh)) 
    { 
     $row = fgetcsv($fh); 
     if (!empty($row)) 
     { 
      $obj = new stdClass; 
      foreach ($row as $i => $value) 
      { 
       $key = $headers[$i]; 
       $obj->$key = $value; 
      } 
      $data[] = $obj; 
     } 
    } 
    fclose($fh); 

    $c=0; 

    foreach($data AS $key){ 

      $c++; 

      $phone = $key->PHONE; 

      $fax = $key->Fax; 

      $email = $key->Email; 

      // do things with the data here 

    } 

    echo "$c entries <br>"; 
} 
+0

Если вы вообще не получаете никаких ошибок, вы не видите все ошибки. Например, $ _FILES [csvgo] должен генерировать ошибку уровня E_NOTICE, потому что 'csvgo' не является константой, и у вас должны быть кавычки вокруг него. Вы должны убедиться, что у вас есть error_reporting (E_ALL); и ini_set ('display_errors', '1'); где-то в вашем коде. – Rithiur

ответ

0

Вы, возможно, потребуется указать абсолютный путь на сервере.

$tempdir = $_SERVER['DOCUMENT_ROOT'] . "/csvtemp/"; 

Edit: я проверил свой код лишь несколько незначительных изменений (абсолютный путь и добавляя кавычки в массив имен ключей), и она работала отлично. Вероятно, это нечто вне рамки того, что вы опубликовали. Возможно, ошибка разрешения файлов или что-то напуганное с формой загрузки.

Просто подумайте, но вы можете попытаться повысить уровень ошибок в PHP. Это может раскрыть что-то, что иначе оставалось незамеченным.

ini_set("display_errors", 1); 
ini_set("error_reporting", 2147483647); 

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

+0

сделал изменение, но все равно ничего. Нет ошибок, ничего. – mrpatg

+0

Хм, чертит. Ответ обновлен! –

+0

нашел проблему, получив что-то причудливое с CSV-файлами. Я понятия не имею, почему и как, но когда я его открываю и сохраняю в OpenOffice Calc и сохраняю (данные идентичны, проверены в блокноте ++), это работает. Не знаю, что происходит. – mrpatg

Смежные вопросы