2017-09-20 16 views
0

チェックボックスを使用してデータベーステーブル内の複数のアイテムを削除しようとしています。私はPHPでこれをやったが、今はjavascriptでやりたいので、ページを更新しないだろう。下のコードを修正してページを更新せずに複数のアイテムを削除するにはどうすればよいですか?チェックボックスを使用して複数のアイテムを削除する - ajaxまたはjquery

HTML

<div id="msg"></div> 
<form> 
    <input type="checkbox" id='remove[]-<?php echo $item_id;?>' name="remove[]" value="<?php echo $item_id; ?>" /> 
    <button class="btn btn-danger" id="del_btn" type="submit" name="delete" 
     onclick='return del(<?php echo $item_id;?>)'><b>DELETE</b></button> 
</form> 

JAVASCRIPT

function del(item_id){ 
    $.ajax({ 
     type:"post", 
     url:"delete_form.php", 
     data: { 
      id: item_id, 
      name: $('#remove[]-'+item_id).val() 
     }, 
     cache:false, 
     success: function(html){ 
      $('#msg').html(html); 
     } 
     }); 
     $("html, body").animate({ scrollTop: 0 }, "slow"); 
    return false; 
} 

PHP

foreach ((array) $_POST['remove'] as $remove_id) { 
    $delete_item = "delete from products where item_id='$remove_id'"; 
    $run_delete = mysqli_query($con, $delete_item); 
    if ($run_delete){ 
     echo "<h3> was deleted successfully</h3>"; 
    } 
} 
+1

オンクリックをクリックした後、チェックボックスをオンにして、PHPファイルに送信してください。 – ProEvilz

答えて

0

ARRAを得るためにあなたのjsにループしてみてくださいIDのy。

var array = []; 
    $.each($(inputclass),function(a){ 
    if($(this).is(':checked')===true){ 
    array.push($(this).val()); 
    } 
    } 

次に、ajaxコールのパラメータで送信します。

PHPでそれを受け取り、削除する値をループします。

0

JavaScriptで1つの項目だけを渡していても、PHPで複数の項目をループしたり削除したりすると、あなたのコードはあまり意味がありません。

あなたがボタンに

<form> 
    <!-- id is useless IMO --> 
    <input type="checkbox" name="remove[]" value="1" /> 
    <input type="checkbox" name="remove[]" value="2" /> 
    <!-- etc --> 
    <!-- change type to button to prevent the form from submitting --> 
    <button type="button" class="btn btn-danger" id="del_btn"><b>DELETE</b></button> 
</form> 

Attach an onclick event handlerのような形を持っている場合。 「serialize your form」と入力するだけで、「チェック済み」チェックボックスが表示されます。代わりに、ループのあなたのPHPで

$('#del_btn').click(function() { 
    $.post("delete_form.php", $(this).closest('form').serialize(), function (html) { 
     $('#msg').html(html); 
    }); 
}); 

INオペレータ脇

$ids = $_POST['remove']; 
$in = implode(', ', $ids); // [1, 2, 3] becomes '1, 2, 3' 
$sql = "DELETE FROM products WHERE item_id IN ($in)"; 

if (mysqli_query($con, $sql)) { 
    echo "<h3> was deleted successfully</h3>"; 
} else { 
    echo "<h3> something went wrong</h3>"; 
} 

を使用して1つのクエリを使用:あなたはおそらくあなたのSQLを実行する前に、受信したデータを検証する必要がありますので、あなたのコードは、SQLインジェクションの脆弱性であります。

+0

ありがとうございます。あなたのコードは動作しますが、安定していないようです。ときどき、削除ボタンをクリックすると、何も削除せずにフォームが消え、時にはアイテムが削除され、エコーが削除されます。これを引き起こしている可能性があることは分かりますか? – Oponjous

+0

@Oponjous上記のようにコード**を正確に**コピーしました(これ以上何もありません)。ブラウザのコンソールログを開き、ボタンをクリックした後でエラーが表示されるかどうかを確認します。 PHPファイルの上部にある[PHPエラー報告](https://stackoverflow.com/a/5438125/1022914)も有効にしてください。ドキュメント内にjQueryが正しく配置されていることを確認してください(https://learn.jquery.com/about-jquery/how-jquery-works/)。 – Mikey

関連する問題