2014-01-19 68 views
0

我正在将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>'; 
} 

该数据被发送到一个Ajax调用:

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

可以这样说,通过创建与多种形式的行我环路相同的ID。我认为这是造成这个问题?如果是这样,我怎么能通过保持相同的格式来解决它。我相信表单必须有一个唯一的名称,但我不知道如何将其实现到ajax数据字符串中。

回答

0

,我不能对你的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>'; 
} 

而且使用jQuery绑定。我添加了一个类可以让选择器进入删除按钮。

$(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; 
     } 
    } 
} 

点击删除按钮,我们得到最近的表格并序列化该表格的数据。

0

在循环之外,您可以保留一个计数器:$x = 0并在生成表格时使用该计数器:<form id="meeting_delete_item"'.$x.'>。在循环结束时,递增计数器以进行下一次迭代++$x。在您的JavaScript中,您可能会根据按下的按钮来检索该ID。

表格样本:

<form id="myForm1"> 
    <button>Click me!</button> 
    </form> 
    <form id="myForm2"> 
    <button>Click me!</button> 
    </form> 

JavaScript示例:

$('form button').click(function(e) { 
    var $form = $(this).closest('form'); 
    console.log($form.attr('id')); 
    return false; //stop form submission 
}); 

Live demo (click).

此外,内联JS(喜欢的onclick在你的HTML)从来都不是好实践。相反,请按照我的示例代码中的示例并使用javascript绑定click功能。欲了解更多关于这个问题,阅读一些结果:https://www.google.com/search?q=Why+is+inline+js+bad%3F

0

你的问题是在这里

$('#meeting_delete_item').serialize() 

你应该用别的东西来确定当前行。

HTML组成部分进行删除

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

JS

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; 
    } 
}