首页 > 解决方案 > 通过 PHP foreach 循环按钮将数据提交到 mysql 数据库的单行

问题描述

我通过使用 php 的foreach构造循环在网站上显示 mysql 表,例如:

<?php foreach($bills as $bills): ?>
   <tr>
      <td><?= $bills->column1; ?></td>
      <td><?= $bills->valid; ?></td>
      <td><?= $button; ?></td>
   </tr>
<?php endforeach; ?>

名为 的列valid设置为varchar(1),因此它的值是yn来定义账单是有效还是无效。

默认情况下,命名列的每一行都valid设置为n- 通过单击一行的按钮,我想将valid特定行的值设置为,y但我对如何以正确的方式传递数据有点迷茫。

$button变量包含以下 html 代码:

<form id="submit">
   <button type="submit">Valid</button>
</form>

单击该按钮运行下面的 ajax 脚本:

<script>
   $('#submit').click(function() {
      $.ajax({
         url: 'connect.php',
         type: 'POST',
         data: null,
         success: function(msg) {
            alert('Success ');
         }
      });
   });
</script>

connect.php 运行以下代码:

<?php include('../config.php') ?>

<?php 
   $query = $pdo->prepare("UPDATE bills SET valid='y'");
   $query->execute();
?>

我的猜测是我必须通过 ajax 的data选项发送一个变量,然后在 mysql 查询中调用它,比如

UPDATE bills SET valid='y' WHERE variablefromajax = id

但正如我上面提到的,我对如何检查单击了哪个特定按钮然后传递该信息有点无能为力。

提前感谢您的帮助。

标签: phphtmlmysqlajax

解决方案


在这种情况下,由于您计划有多个按钮,请确保每个按钮都有两个 HTML 属性:

  • data-row-id="<ID of the row>"
  • 特定类,如 class="row-submitter"

然后,稍微改变你的逻辑来跟踪类点击,而不是 ID:

$('.row-submitter').click(function() {
      $.ajax({
         url: 'connect.php',
         type: 'POST',
         data: null,
         success: function(msg) {
            alert('Success ');
         }
      });
   });

由于按钮的属性上还有 ID 数据,您现在可以说:

$('.row-submitter').click(function() {
      $.ajax({
         url: 'connect.php',
         type: 'POST',
         data: "id="+$(this).data('row-id')+'&value=newvalue',
         success: function(msg) {
            alert('Success ');
         }
      });
   });

并像使用它们一样

   $query = $pdo->prepare("UPDATE bills SET valid='".$_POST['value']."' where id=".$_POST['id']."");

推荐阅读