Javascript 使用按钮更新表中的特定行

Javascript 使用按钮更新表中的特定行,javascript,php,mysql,html-table,Javascript,Php,Mysql,Html Table,我有一个html表,显示数据库中的所有条目,因此每个条目有一行 我每行也有一个按钮 单击按钮时,我希望编辑与按下按钮关联的行的值,并获取与该特定行相关的所有值 <html> <body> <?php $user="user"; $password="password"; $database="database"; $username=$_SESSION['username']; mysql_connect(localhost,$user,$password);

我有一个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
第1列
状态
编辑状态

您可以在每个按钮集周围放置一个表单,并添加一个包含要更新的字段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>

您可以在每个按钮集周围放置一个表单,并添加一个包含要更新的字段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>

您可以为每行使用一个表单标记,并为每行包含一个隐藏字段“id”。提交表单时,您可以在MySQL查询中使用“id”更新当前行的值

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

您可以为每行使用一个表单标记,并为每行包含一个隐藏字段“id”。提交表单时,您可以在MySQL查询中使用“id”更新当前行的值

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

首先,我认为您应该检查使用面向对象的MySQL命令。你这样做是很痛苦的

查看ORMDB层或至少使用mysqli

您更新每一行的原因是因为您有一个大表单,其中有一组具有相同名称的按钮。所以点击其中任何一个就像点击所有的一样。您的条件语句在每个循环中都是true

相反,如果您想继续在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;
}
>?


首先,我认为您应该检查使用面向对象的MySQL命令。你这样做是很痛苦的

查看ORMDB层或至少使用mysqli

您更新每一行的原因是因为您有一个大表单,其中有一组具有相同名称的按钮。所以点击其中任何一个就像点击所有的一样。您的条件语句在每个循环中都是true

相反,如果您想继续在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;
}
>?


这没有意义:Javascript无法与表交互,因此OP肯定需要php。请注意,没有服务器端技术就没有ajax。@jeroen-我想你误读了我写的东西。我说过Javascript将使用AJAX调用AJAX脚本。那就是PHP。几乎每个站点都是这样工作的。我已经建立了一百个这样的网站。我对否决票感到失望。我想你不明白我在说什么。人们一直使用AJAX与数据库交互。当然,您必须在PHP中构建一个由AJAX调用的某种模型。您的文本提出了不同的建议:
,如果您想坚持在PHP中这样做的话。除此之外,我认为让OP以正常方式工作已经足够有挑战性了。下一步是添加ajax以获得更好的用户体验,但这超出了本问题的范围。无论如何,我的反对票是支持使用javascript和抛弃php的建议。如果你能根据你的评论修改文本,我将删除它。@jeroen-只要它超出了问题的范围,就足够公平了。建议已删除。这没有意义:Javascript无法与表交互,因此OP肯定需要php。请注意,没有服务器端技术就没有ajax。@jeroen-我想你误读了我写的东西。我说过Javascript将使用AJAX调用AJAX脚本。那就是PHP。几乎每个站点都是这样工作的。我已经建立了一百个这样的网站。我对否决票感到失望。我想你不明白我在说什么。人们一直使用AJAX与数据库交互。当然,您必须在PHP中构建一个由AJAX调用的某种模型。您的文本提出了不同的建议:
,如果您想坚持在PHP中这样做的话。除此之外,我认为让OP以正常方式工作已经足够有挑战性了。下一步是添加ajax以获得更好的用户体验,但这超出了本问题的范围。无论如何,我的反对票是支持使用javascript和抛弃php的建议。如果你能根据你的评论修改文本,我将删除它。@jeroen-只要它超出了问题的范围,就足够公平了。建议删除。