Php 通过多种形式循环

Php 通过多种形式循环,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,我正在将sql数据提取到另一个用于站点的php表中。对于表中的每一行,我都有一个按钮来删除或编辑该特定行。“编辑”按钮工作正常,但“删除”按钮出现问题。到目前为止,“删除”按钮仅删除表的第一行,而不删除已选择删除的行 以下是表格的示例: while($row = mysqli_fetch_array($result)){ <tr> <td>'.($row['some_data']).'</td> <td> <f

我正在将sql数据提取到另一个用于站点的php表中。对于表中的每一行,我都有一个按钮来删除或编辑该特定行。“编辑”按钮工作正常,但“删除”按钮出现问题。到目前为止,“删除”按钮仅删除表的第一行,而不删除已选择删除的行

以下是表格的示例:

while($row = mysqli_fetch_array($result)){
  <tr>
    <td>'.($row['some_data']).'</td>
    <td>
      <form action="meeting_update_milestone.php" method="POST">
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="submit" value="EDIT" />
      </form>
    </td>
    <td>
      <form id="meeting_delete_item">
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="button" onclick="delete_meeting_item()" value="DELETE" />
      </form>
    </td>
  </tr>';
}

正如你所知道的,我在各行中循环创建具有相同id的多个表单。我认为这就是问题所在?如果是这样,我如何通过保持相同的格式来修复它。我相信表单必须有一个唯一的名称,但我不确定如何在ajax数据字符串中实现它。

在循环之外,您可以保留一个计数器:
$x=0
,并在生成表单时使用它:
。在循环结束时,增加下一次迭代的计数器
+$x
。在javascript中,您可能会根据按下的按钮检索id

示例表单:

  <form id="myForm1">
    <button>Click me!</button>
  </form>
  <form id="myForm2">
    <button>Click me!</button>
  </form>
$('form button').click(function(e) {
  var $form = $(this).closest('form');
  console.log($form.attr('id'));
  return false; //stop form submission
});

此外,内联js(比如html中的onclick)从来都不是好的实践。相反,按照我的示例代码中的示例,用javascript绑定click函数。有关此主题的更多信息,请阅读以下结果:

您的问题就在这里

$('#meeting_delete_item').serialize()
您应该使用其他内容来确定当前行是否正确

用于删除的HTML表单部分

  <form id="meeting_delete_item">
    <input type="button" onclick="delete_meeting_item('.$row['id'].')" value="DELETE" />
  </form>

我不能评论php代码的有效性,但正如您所说,
id
值必须是唯一的。在这种情况下,我不相信ID对你想要实现的目标有多大影响

删除
id
和内联
onclick
事件:

while($row = mysqli_fetch_array($result)){
  <tr>
    <td>'.($row['some_data']).'</td>
    <td>
      <form action="meeting_update_milestone.php" method="POST">
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="submit" value="EDIT" />
      </form>
    </td>
    <td>
      <form>
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="button" class="delete" value="DELETE" />
      </form>
    </td>
  </tr>';
}
单击delete按钮,我们得到最近的表单并序列化该表单的数据

function delete_meeting_item(deleteId){
  var x = confirm("Are you sure you want to permanetly delete this item?");
  if (x){
    $.ajax({
      type: "POST",
      url: "meeting_delete_item.php",
      data: {mile_id: deleteId},
      cache: false,
      success: function(result){
        alert(result);
      }
    })//end ajax
  }
  else{
    return false;
  }
}
while($row = mysqli_fetch_array($result)){
  <tr>
    <td>'.($row['some_data']).'</td>
    <td>
      <form action="meeting_update_milestone.php" method="POST">
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="submit" value="EDIT" />
      </form>
    </td>
    <td>
      <form>
        <input type="hidden" name="mile_id" value="'.$row['id'].'" />
        <input type="button" class="delete" value="DELETE" />
      </form>
    </td>
  </tr>';
}
$(document).ready(function(){
    $('.delete').click(function(){

      var x = confirm("Are you sure you want to permanetly delete this item?");
      if (x){
        $.ajax({
          type: "POST",
          url: "meeting_delete_item.php",
          data: $(this).closest(form).serialize(),
          cache: false,
          success: function(result){
            alert(result);
          }
        })//end ajax
      }
      else{
        return false;
      }
    }
}