2011-01-06 49 views
0

我正在創建一個搜索項目然後能夠編輯/更新它的頁面。當它只返回一個結果時,我能夠做到這一點,但當它給我多個結果時,我只能編輯最後一個項目。下面是我的代碼:在搜索查詢中編輯/更新結果之一

....... 
$dj =$_POST[djnum]; 
$sql= "SELECT * From dj WHERE datajack LIKE '$dj%'"; 
$result = mysql_query($sql); 
    //more code in here// 

while ($info =mysql_fetch_array($result)) { 

    // display the result 
echo "<form action=\"dj_update.php\" method=\"POST\"><input type=\"hidden\" name=\"djnumber\" value=\"".$info['datajack']."\">"; 
echo "<tr><td>DJ ".$info['datajack']."</td>"; 
echo "<td>".$info['building']."&nbsp;</td>"; 
echo "<td>Rm ".$info['room']."&nbsp;</td>"; 
echo "<td>".$info['switch']."&nbsp;</td>"; 
echo "<td>".$info['port']."&nbsp;</td>"; 
echo "<td>".$info['notes']."&nbsp;</td>"; 
echo "<td style=\"text-align:center;\"><input type=\"Submit\" value=\"Edit\" ></td></tr>";  
} 

// more code here // 

那麼這樣的結果的屏幕截圖:

alt text

的想法是,用戶應該能夠點擊「編輯」,並能夠編輯/更新該特定項目。但是當我點擊任何編輯按鈕時,我只能編輯最後一個項目。我在這裏錯過了什麼?有沒有更簡單的方法來做到這一點?

謝謝你們和新年快樂!

回答

2

沒有表格結束標籤 - 它應該在每個「編輯」按鈕後添加。

現在,由於表單沒有關閉,所以在每個表單中都有幾個隱藏的輸入具有相同的「djnumber」,我想瀏覽器只發送一個值 - 這是在最後一行中指定的。

所以,添加在你的循環結束後:

echo "</form>"; 

應該有所幫助。

+0

哇,修好了。我怎麼會錯過這個。非常感謝。我感謝您的幫助。 – eggman20 2011-01-06 18:37:02

1

datajack的值是多少?

如果這些值是datajack1,datajack2等,那麼LIKE將每次返回第一個,您需要使您的查詢更具體。

$sql = "SELECT * From dj WHERE datajack id ' " . mysql_escape_string($id) . "' LIMIT 1"; 

我已經改變了查詢壞,你要編輯的特定行,而不是一行是潛在LIKE你認爲行匹配一行,還可以使用一個ID字段,在這種情況下使用LIKE你正在編輯。

注意也使用mysql_escape_string()來阻止MySQL注入技術。

希望有所幫助。

+0

嗨,datajack值不同。這些值與您在屏幕截圖中看到的一樣。有時候是一個5位數字,後跟一個字母或數字。無論如何,就像凱爾說的那樣,我錯過了表格的結束標籤,現在它就可以工作。謝謝。 – eggman20 2011-01-06 18:41:42