2013-03-14 61 views
0

我正在嘗試讀取文本文件。閱讀txt文件日期00-00-000

這是我的文本文件的例子:

「20130228」, 「0000079511」, 「ESTEVES PAIVA TERESA赫」, 「」, 「4」, 「PAGO UNICO」, 「」, 「」,「」,「」,「」,0.00,0.00,0.00,0.00,2000.00,「20121213」

,你可以想像我有這兩個日期20130228和20121213,第5列是一個數字,但是當我讀取文件並填寫數據庫中的表時,我在每個日期中獲得00-00-0000,而0代替數字4.

這裏是我的閱讀,並在表中插入信息碼:

if ($type == "text/csv") { 
      move_uploaded_file($temp, "upload/$name"); 

      $fp = fopen("upload/$name",'r') or die("no se puede abrir el archivo"); 

       do { 
      if ($data[0]) { 
       mysql_query("INSERT INTO contacts (fecha_pago, cedula_alumno, nombre_alumno, mencion, codigo_forma) VALUES 
        ( 
         '".addslashes($data[0])."', 
         '".addslashes($data[1])."', 
         '".addslashes($data[2])."' 
         '".addslashes($data[3])."' 
         '".addslashes($data[4])."' 
        ) 
       "); 
      } 
     } while ($data = fgetcsv($fp,1000,",","'")); 

在此先感謝您的幫助

+1

[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-03-14 19:08:47

+1

我建議修理你的縮進,所以很清楚支架與哪個結構對齊。另外,在'do'循環的第一次運行期間'$ data'有什麼值?如果它是未定義的,那麼我想知道這個循環應該是'while'而不是'do ... while'嗎? – halfer 2013-03-14 19:09:01

回答

1

您需要解析的日期,也就是解析的$數據[0值],然後再執行INSERT。 MySQL的,我猜你插入,將接受日期格式2012-12-31,但不是20121231.

所以考慮做

$parsedDateYear = substr($data[0], 0, 4); 
$parsedDateMonth = substr($data[0], 4, 2); 
$parsedDateDay = substr($data[0], 6, 2); 

$finalDate = $parsedDateYear . "-" . $parsedDateMonth . "-" . $parsedDateDay; 

而在你的INSERT使用$ finalDate聲明。

+0

謝謝亞歷克斯,但例如,日期是20130228我得到$ finalDate = 2048; – Jean 2013-03-14 19:37:09

+0

我解決了它。謝謝 – Jean 2013-03-14 19:39:05

+0

這是因爲我搞砸了,並且使用了+來進行字符串連接:)對不起,我最近做了太多的Python。修復了答案。 – 2013-03-14 22:22:29