簡體   English   中英

使用按鈕更新表中的特定行

[英]Update a specific row in a table using a button

我有一個html表,該表顯示數據庫中的所有條目,因此每個條目都有一行。

每行都有一個按鈕。

當我單擊按鈕時,我要編輯與按下的按鈕關聯的行的值,並獲取與該特定行有關的所有值。

<html>
<body>
<?php

$user="user";
$password="password";
$database="database";

$username=$_SESSION['username'];

mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * FROM table";
$result=mysql_query($query);
$num=mysql_numrows($result);

?>


<form id="view_admin" method="post">


<table id="my_table" class= "sample" >

<tr>
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Id</font></strong></td>
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Column1</font></strong></td>
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Status</font></td>
<td align="center"><strong><font face="Arial, Helvetica, sans-serif">Edit Status</font></td>
</tr>

<?php

$i=0;
while ($i < $num) {

$f0=mysql_result($result,$i,"id");
$f1=mysql_result($result,$i,"column1");
$f2=mysql_result($result,$i,"status");

?>

<tr>
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f0; ?></font></td>
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td align="center"><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td align="center"><input type="submit" name="approved" value="approve"> <input type="submit" name="refused" value="refuse"> </td>
</tr>

<?php
if (isset($_POST['approved'])) {
$query_update = "UPDATE main SET status='APPROVED' WHERE id ='$f0'";
$result_update=mysql_query($query_update);}
else if (isset($_POST['refused'])) {
$query_update = "UPDATE main SET status='REFUSED' WHERE id ='$f0'";
$result_update=mysql_query($query_update);
}
$i++;
}

mysql_close();


?>

</table>
</form>
</body>
</html>

現在,當我按下按鈕時,所有行都會更新。

我該如何解決我的問題?

您可以在每個按鈕集周圍放置一個表單,並添加一個包含要更新的字段ID的隱藏字段。

您還需要刪除包裝表格的表單標簽。

現在只有一個ID和按下的按鈕將被提交。

在表中:

<form id="view_admin" method="post">
  <input type="hidden" name="f0" value="<?php echo $f0; ?>">
  <input type="submit" name="approved" value="approve">
  <input type="submit" name="refused" value="refuse">
</form>

在以后的php中:

$f0_submitted = (int) $_POST['f0'];
$query_update = "UPDATE main SET status='APPROVED' WHERE id ='$f0_submitted'";

您可以為每一行使用一個表單標簽,並為每一行添加一個隱藏字段“ id”。 提交表單時,您只需在MySQL查詢中使用“ id”來更新當前行的值。

UPDATE table SET ... WHERE id = $_POST['id']

首先,我認為您應該檢查使用面向對象的MySQL命令。 您正在為此付出艱苦的努力。

檢出ORM DB層或至少使用mysqli。 http://www.php.net/manual/en/mysqli.quickstart.statements.php

更新每一行的原因是因為您有一個很大的表單,其中有一堆名稱相同的按鈕。 因此,單擊它們中的任何一個都類似於單擊所有它們。 您的條件語句在每個循環中都是正確的。

相反,如果您想堅持使用PHP進行此操作,我將根據行的ID來確定提交名稱。 然后,當頁面發布並再次加載時,如果發布的值等於當前行ID,請進行更新。

<form...>
  <input type='hidden' name='form_submitted' value='true' />
<?php
while(...)
{
  echo "<tr><td><input type='submit' name='update_{$row_id}' value='Update' /></td></tr>";
  if(!empty($_POST['form_submitted']) && isset($_POST['update_'.$row_id])) ...do update;
}
>?

如果您只想要一個大表格,則可以采用此方法,也可以為每行創建一個表格,其中包含與行ID對應的隱藏類型和值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM