2012-02-07 107 views
0

我一直在努力爲新線程構建存檔。總體目標是,如果有人想編輯或刪除新聞帖子,他們可以將其保存爲草稿,從而不會向公衆顯示。我正在使用MySQL來存儲所有新聞線程,並且我已經將它打印出來,以便它可以打印出每個新聞和它的信息。但是,當我點擊編輯按鈕來編輯該線程時,它總是使用最後一個MySQL條目所調用的ID,而不是通過隱藏窗體將其設置爲使用的ID。無論如何,這裏的代碼和所有部分。我很困惑,真的可以用一些幫助。如果你有問題就問。ID在循環中丟失

主腳本:http://pastebin.com/hn3cgVXu
Article_Post:http://pastebin.com/hhaLkuXe
Article_Archive:http://pastebin.com/X2fDg4dk

爲ID的原始值是從數據庫調用,並且從article_archive

顯示組: http://i25.photobucket.com/albums/c51/dog199200/Untitled-2.png

的鉛筆是編輯,垃圾箱是刪除。圖像清楚地表明循環獲得了ID,但是當編輯圖像被點擊時該特定ID沒有被傳遞。

+0

你應該使用mysql_real_escape_string而不是htmlentities - 否則就是一個巨大的安全漏洞。 – whichdan 2012-02-07 01:04:29

+0

請詳細解釋差異,以及爲什麼更詳細地說明。我被告訴了很多不同的事情,讓很多不同的人使用它,令人困惑: -/ – dpg199200 2012-02-07 01:21:52

+0

http://us3.php.net/mysql_real_escape_string - 因爲它是一個專門爲你正在嘗試做的事情而設計的功能:) – whichdan 2012-02-07 01:22:57

回答

0

在您的Article_Archive中,當您循環訪問數據庫結果時,您將所有結果命名爲隱藏的輸入字段。

<?php 
while($row = mysql_fetch_array($news_list)) { 
    echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\" id=\"result_".$row['id']."\" name=\"result_".$row['id']."\">"; 
    // ... 
    echo "... <input type=\"hidden\" name=\"id\" value=\"".$row['id']."\">"; 
    // ... 
    echo "</form>"; 
} ?> 

你說它id,所以當你把多個隱藏輸入字段相同的形式上它只是搶到最後一個。當您點擊edit時,javascript在哪裏?由於您使用相同的name屬性覆蓋了所有輸入字段,因此您將無法使用該代碼進行標準表單提交。

+0

我已經意識到了。我試圖找出一種解決方法,最好不使用JavaScript。 – dpg199200 2012-02-07 01:18:33

+0

您可以嘗試將名稱更改爲數組鍵,例如name =「id []」 - 會起作用嗎? – whichdan 2012-02-07 01:24:13

+0

表單的「提交」在哪裏?那麼你需要有多個表單。 (編輯我的代碼) – 2012-02-07 01:26:50