2012-04-03 6 views
0

ok Все, что я хочу сделать, это предоставить пользователю простую форму, где они могут загрузить CSV-файл, содержащий тарифы. Затем данные должны загружаться в базу данных.Загрузка csv и импорт данных в MySQL

Вот код ...

<?php 
require_once('includes/connection.php'); 
if(isset($_POST['submit'])) 
    { 
    $filename=$_POST['filename']; 
    $handle = fopen("$filename", "r"); 
    while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) 
    { 

     $import="INSERT into fares_usa(cruise_id, active, type, category, placement, deck, fare, offered, status, sortorder)   values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')"; 
     mysql_query($import, $connection) or die(mysql_error()); 
    } 
    fclose($handle); 
    print "Import done"; 
    } 
    else 
    { 

     print "<form enctype='multipart/form-data' action='fileupload.php' method='POST'>"; 
     print "Select file to import:"; 
     print "<input type='file' name='filename' size='20'>"; 
     print "<input type='submit' name='submit' value='submit'></form>"; 
    } 
    ?> 

Любая помощь очень ценится!

Благодаря

Rich :)

+0

Не могли бы вы дать нам описание ошибки, которую вы получаете/что происходит не так? – vimist

+0

@ Cheif17 - ничего не происходит, страница просто сидит там с вращением колеса ... – Rich

+4

Просто измените '$ _POST ['filename']' на '$ _FILES ['filename'] ['tmp_name']' и сбегите прежде чем использовать его в запросе, и это должно работать нормально. – DaveRandom

ответ

0

Вы, кажется, используют $_POST и не $_FILES

<?php 
require_once('includes/connection.php'); 
if(isset($_POST['submit'])) 
    { 
    $filename=$_FILES['filename']['tmp_name']; 
    $handle = fopen("$filename", "r"); 
    while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) 
    { 

     $import="INSERT into fares_usa(cruise_id, active, type, category, placement, deck, fare, offered, status, sortorder) 
     values('".mysql_real_escape_string($data[0])."', 
     '".mysql_real_escape_string($data[1])."', 
     '".mysql_real_escape_string($data[2])."', 
     '".mysql_real_escape_string($data[3])."', 
     '".mysql_real_escape_string($data[4])."', 
     '".mysql_real_escape_string($data[5])."', 
     '".mysql_real_escape_string($data[6])."', 
     '".mysql_real_escape_string($data[7])."', 
     '".mysql_real_escape_string($data[8])."', 
     '".mysql_real_escape_string($data[9])."')"; 
     mysql_query($import, $connection) or die(mysql_error()); 
    } 
    fclose($handle); 
    print "Import done"; 
    } 
    else 
    { 

     print "<form enctype='multipart/form-data' action='fileupload.php' method='POST'>"; 
     print "Select file to import:"; 
     print "<input type='file' name='filename' size='20'>"; 
     print "<input type='submit' name='submit' value='submit'></form>"; 
    } 
    ?> 

Также добавлен mysql_real_escape_string избежать ввода перед добавлением его в базу данных. Это минимальная «чистка», которую вы должны делать для ввода пользователем.

+0

отлично, работает с удовольствием. Спасибо всем, особенно Nick и @DaveRandom – Rich

+0

Рассмотрите расследование подготовленных заявлений PDO. Ваш sql будет уменьшен до ... VALUES (?,? ,?,?,?,?,?,?,?), и все ваши экраны и цитаты исчезнут. http://us2.php.net/manual/en/pdo.prepared-statements.php – Cerad

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