2014-01-19 106 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; 
    } 
}