2012-10-24 62 views
1

我創建了以下代碼來填充存儲在數據庫中的數據的表。 正如你所看到的,數據也可以在字段中直接編輯,我想要做的是將編輯的字段保存到數據庫。 如果該字段已被修改,則只需覆蓋「舊」字段,如果該字段未被修改,則使用舊字段。如何從PHP表列表中獲取ID

<?php 

$querymod =" SELECT * FROM table ORDER BY id DESC "; 

$result = mysql_query($querymod) or die(mysql_error()); 

echo "<div style='width: 100%; text-align: center;'>";     
echo "<table style='margin: auto auto;'>"; 
echo "<tr><th>ID</th><th>Image</th><th>Article Number</th><th>Description</th></tr>"; 

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

$id = $row['id']; 
$img_name = $row['img_name']; 
$art_number = $row['art_number']; 
$description = $row['description']; 


echo "<form method='post' action=''>"; 
echo "<tr> 
<td style='width: 20px;'><input name='id' id='id' value='".$id."' disabled='yes'> 
<input type='submit' name='submit' value='Save'></td> 
<td style='width: 210px;'><img src='../../upload/content/uploads/". $img_name ."' width='200px'></td> 
<td style='width: 100px;'><input type='text' name='art_number' value='".$art_number."'></td> 
<td style='width: 100px;'><input type='text' name='description' value='".$description."'></td> 
</tr>";  
} 
echo "</table><br /><br /></div>"; 
echo "</form>"; 

?>

我知道,與「更新」功能,我可以更新數據庫和領域,但問題是,我不知道怎麼去修改後的行的ID ,並開始更新相關的修改字段。

有什麼提示嗎?

+0

你有ID嗎? – wesside

+3

[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+0

我有10個不同的行,顯然有10個不同的ID。 – Mark

回答

4

您需要移動:

echo "</form>"; 

while循環中。每次通過循環都會創建一個新表單,但在整個循環完成之前不會關閉它。這是創建不正確的嵌套。

此外,擺脫id='id'(你可能不需要它)或做一些事情,以確保ID是唯一的。

+0

謝謝你,我是個笨蛋。 :( 現在我有一個表格樣式的問題,第一行是完全對齊的,但其餘的有點混亂。 – Mark

0

使用類型=隱藏用於輸入:

<td style='width: 20px;'><input name='id' id='id' value='".$id."' type='hidden'> 
+0

我試過了,但問題是,如果我點擊第二行的「保存」按鈕,它會得到始終是第一行的ID。 – Mark

+0

我不確定,但嘗試在HTML中刪除'id ='id''。您無法在多個元素上使用相同的HTML ID,這可能會造成混淆。 – Barmar

+0

我剛剛看到了接受的答案。我錯過了! – ToddB

0

1。使用每

或形式:

2。創建一個名爲id的隱藏輸入。爲提交按鈕使用onClick='document.forms.form_name.id.value='$id';document.forms.form_name.submit();"屬性,但將type ='submit'更改爲type ='button'。將$ id值附加到每個其他輸入的名稱。然後,當頁面提交後重新加載,你將有ID,也可以在POST其他輸入:

echo "<form name='myform' action='' method='POST'> 
    <input type='hidden' name='id' value=''> 
    <table>"; 

while($row = mysql_fetch_array($result)) { 
    $id   = $row['id']; 
    $img_name = $row['img_name']; 
    $art_number = $row['art_number']; 
    $description = $row['description']; 
    $onClick = "document.forms.myform.id.value='$id';document.forms.myform.submit();"; 

    echo "<tr> 
     <td><input type='button' name='save_$id' value='Save' onClick='$onClick'></td> 
     <td><img src='../../upload/content/uploads/$img_name' width='200px'></td> 
     <td><input type='text' name='art_number_$id' value='$art_number'></td> 
     <td><input type='text' name='description_$id' value='$description'></td> 
     </tr>\n"; 
} 
echo "</table>\n</form>\n"; 

然後,當保存已被點擊,就可以在開機自檢讀取值:

$id = !empty($_POST["id"]) ? $_POST["id"] : NULL; 
$art_number = !empty($_POST["art_number_$id"]) ?$_POST["art_number_$id"] : NULL; 
$description = !empty($_POST["description_$id"]) ?$_POST["description_$id"] : NULL; 

您可以使用它來更新SQL數據庫。