2011-10-15 72 views
2

我需要一些幫助來弄清楚如何在一個包含多行的textarea的mysql db中添加多個字段。我想將每行分成6個值(我的db的每個字段都有一個值)。如何從文本區域字段插入到多個文件夾中

例如,我有以下行:

info1|info2|info3|info4|info5|info6 

info1|infob|infoc|infod|infoe|infof 

info1|info8|info9|info0|info1|info2 

info1|info4|info4|info5|info6|info7 

每個字段與 「|」 分隔(因爲我在網上找到的例子中的多數民衆贊成,將張貼在這裏的幾個:)

然後我有以下文件:insert_form.php

<form action="insert_engine.php" method="post"> 
    <p> 
    <textarea name="pctext" id="pctext" cols="100" rows="10"></textarea> 
    </p> 
    <p> 
    <input type="submit" /> 
    </p> 
</form> 

和我有insert_engine.php:

<?php 
$con = mysql_connect("localhost","USER","PASS"); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("DBNAME", $con); 

// assuming the text area value is in $_GET["pctext"] 
$lines = explode("\n", $_GET["pctext"]); 
foreach($lines as $line) { 
    list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line); 
    $sql="INSERT INTO TABLENAME (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6) 
     VALUES 
     ('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')"; 

    if (!mysql_query($sql,$con)) 
    { 
      die('Error: ' . mysql_error()); 
    } 
    echo "record added"; 
} 
mysql_close($con) 
?> 
<meta http-equiv="refresh" content="2;URL=confirmation.php" /> 

說實話,我幾乎不瞭解php,我正在學習,通過強制,在線查看示例,然後在我的Linux上進行測試等等。我從另一個線程得到了這個:Inserting text from textarea into MySQL database without losing formatting,我正在嘗試讓它工作。

據我所知,我連接到MySQL,選擇數據庫,從pctext(textarea)獲取內容,爆炸每一行,並打破「|」 (管道),然後使用循環(foreach)插入表中。

當我點擊表單上的提交按鈕,我進入引擎頁面,2秒後到達確認頁面,沒有在我的數據庫中插入任何內容,但我有一個空的註冊表,所以有些事情正在進行。

任何人都可以用這個腳本來幫助我嗎?

預先感謝您

PC

+0

如果您幾乎不知道PHP,這不是一個很好的例子,您應該從簡單的mysql交互開始作爲字符串和數組的函數和操作。 –

+0

謝謝你糾正我的文字:) –

+0

我會同意你,如果不是因爲我需要的事實。我已經設法添加單個項目,列表,按字段組織等等,下一個是一個。 :) –

回答

1
$lines = explode("\n", $_GET["pctext"]); 

應該

$lines = explode("\n", $_POST["pctext"]); 

因爲你的表格方式設置爲 '後',而不是 '得到'

也隨之變化

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line); 

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode("|", $line); 

因爲你的榜樣文本沒有周圍的空間|

另外..單不轉的元素融入到$ _ POST瓦爾

('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')"; 

應該

( '$ FIELD1', '$ FIELD2', '$ FIELD3', '$ FIELD4', '字段5 $', 'FIELD6')「;

+0

蒂洛,很好,現在我數據庫中有全部4行,但空白。我檢查了數據庫,並且所有4行都在那裏,再次空白。任何其他偉大的建議? :) 再次感謝您指出此問題。 –

+0

^^用另一個更正編輯 –

+0

我做了更正得到了同樣的結果:我有4個新的線在我的數據庫,但線是空的。 再次感謝您的幫助:) –

0

不僅你使用$ _GET而不是$ _POST,但你也缺少常量的語言行爲,數組鍵被引用,但在你使用$ _POST [」FIELD1 「]而不是$ FIELD1

+0

這是真的!但是.. $ _POST [$ FIELD1]不應該被使用..它應該只是$ FIELD1 –

+0

好趕上@Thilo –

+0

真的,謝謝 –

相關問題