0

HTML テーブルでチェックボックスを使用していますが、一括操作を使用しています。誰かが 2 つまたは 3 つのチェックボックスをオンにして一括削除アクションを使用した場合のように、テーブルからすべてのチェックされたアイテムを削除する必要があります。

ここに画像の説明を入力

ここに私のHTMLコードがあります

              <table id="datatable_example" class="responsive table table-striped table-bordered" style="width:100%;margin-bottom:0; ">
            <thead>
              <tr>
                <th style="width:0px; padding-right:0px;" class="no_sort"> <label class="checkbox ">
                    <input type="checkbox">
                  </label>
                </th>
                <th style="width:200px;" class="no_sort"> Institue </th>
                <th style="width:150px;" class="no_sort"> Education </th>
                <th style="width:300px;" class="no_sort"> Description </th>
                <th style="width:150px;" class="ue no_sort"> Started </th>
                <th style="width:150px;" class="ue no_sort"> Completion </th>
                <th class="ms no_sort "> Actions </th>
              </tr>
            </thead>
            <tbody>
              <?php echo $educations ?>
            </tbody>
          </table>

編集: これは、テーブルの本文セクションです。私はPHPで作業しているので、このようなものにしました。

    $educations .= "<tr>
                <td><label class=\"checkbox\">
                    <input type=\"checkbox\">
                  </label></td>
                <td class=\"to_hide_phone\"> $institue_name</td>
                <td class=\"to_hide_phone\"> $education_name</td>
                    <td>$education_desc</td>
                <td>$education_started</td>
                <td>$education_ended</td>
                <td class=\"ms\">
                <div class=\"btn-group1\"> 
                <a href=\"education-edit.php?id=$education_id\" class=\"btn btn-small\" rel=\"tooltip\" data-placement=\"left\" data-original-title=\" edit \">
                <i class=\"gicon-edit\"></i></a> 
                <a class=\"btn btn-small\" rel=\"tooltip\" data-placement=\"top\" data-original-title=\"View\">
                <i class=\"gicon-eye-open\"></i>
                </a> 
                <a class=\"btn  btn-small\" rel=\"tooltip\" data-placement=\"bottom\" data-original-title=\"Remove\"><i class=\"gicon-remove \"></i></a> 
                </div>
                </td>
              </tr>";

2行を選択/チェックして削除アクションをクリックすると、両方の行が削除されます。このアクションを実行する方法を知りたいです。

明確でない場合は申し訳ありませんが、試していますが、実装方法がわかりません。


更新:これまでに私があなたの助けから試したことはここにあります。

HTML エリア:

<form action="<?php $_PHP_SELF ?>" method="post">
        <div class="content top">
          <table id="datatable_example" class="responsive table table-striped table-bordered" style="width:100%;margin-bottom:0; ">
            <thead>
              <tr>
                <th style="width:0px; padding-right:0px;" class="no_sort"> <label class="checkbox ">
                    <input type="checkbox" class="chk_boxes">
                  </label>
                </th>
                <th style="width:200px;" class="no_sort"> Institue </th>
                <th style="width:150px;" class="no_sort"> Education </th>
                <th style="width:300px;" class="no_sort"> Description </th>
                <th style="width:150px;" class="ue no_sort"> Started </th>
                <th style="width:150px;" class="ue no_sort"> Completion </th>
                <th class="ms no_sort "> Actions </th>
              </tr>
            </thead>
            <tbody>
              <?php echo $educations ?>
            </tbody>
          </table>
          <div class="row-fluid control-group">
            <div class="pull-left span6 " action="#">
              <div>


                <div class="controls inline input-large pull-left">                    
                  <select name="bulkaction" data-placeholder="Bulk actions: " class="chzn-select " id="default-select">
                    <option value=""></option>
                    <option value="delete">Delete</option>
                  </select>
                </div>
                <button type="submit" name="submitbulkaction" class="btn btn-inverse inline">Apply</button></form>

tbody エリア内:

    $educations .= "<tr>
                <td><label class=\"checkbox\">
                    <input type=\"checkbox\" class=\"chk_boxes1\" name=\"ids[]\" value=\"$education_id\">
                  </label></td>
                <td class=\"to_hide_phone\"> $institue_name</td>
                <td class=\"to_hide_phone\"> $education_name</td>
                    <td>$education_desc</td>
                <td>$education_started</td>
                <td>$education_ended</td>
                <td class=\"ms\">
                <div class=\"btn-group1\"> 
                <a href=\"education-edit.php?id=$education_id\" class=\"btn btn-small\" rel=\"tooltip\" data-placement=\"left\" data-original-title=\" edit \">
                <i class=\"gicon-edit\"></i></a> 
                <a class=\"btn btn-small\" rel=\"tooltip\" data-placement=\"top\" data-original-title=\"View\">
                <i class=\"gicon-eye-open\"></i>
                </a> 
                <a class=\"btn  btn-small\" rel=\"tooltip\" data-placement=\"bottom\" data-original-title=\"Remove\"><i class=\"gicon-remove \"></i></a> 
                </div>
                </td>
              </tr>";

APPLY ボタンを押したときに実行される部分:

    if(isset($_POST['submitbulkaction']))
{
    $ids = array();
    foreach ((array) $_POST['ids'] as $id) {
    // sanitize input
    $id = (int) $id;
    if ($id) $ids[] = $id;
}
// good idea to say how much row will be deleted to DB
    $limit = count($ids);
    if ($limit) {
    // can see the output
    $ids = join(',', $ids);
    mysql_query("DELETE * FROM cv_education WHERE id IN ($ids) LIMIT $limit");
}
}

さて、エラーは発生していませんが、データベーステーブルからもデータが削除されていません。

私のテーブル名は次のとおりです。

cv_教育

私が間違っていることはありますか?

4

3 に答える 3

1

まず、入力に次のような名前を付けます

<input type="checkbox" name="selectedRows[]" value="<?php echo $row['id'] ?>">

次に、投稿されたphpファイルで処理します

var_dump($_POST['selectedRows'])

$_POST['selectedRows']選択した値を含む配列になります。

この配列をSQLクエリで使用したい場合は、 implodeなどを使用してくださいIN

// filter id's first for security.
$ids = array_map('intval',$_POST['selectedRows']);

mysqli_query("DELETE * FROM table_name WHERE id IN (".implode(',',$ids).")");
于 2013-01-24T18:47:57.897 に答える
1

のようなチェックボックスを設定する必要があります<input type="checkbox" name="ids[]" value="<?=$data['id']?>">

ids[]配列を提供します。

そして、このように各チェックボックスを処理して、ids削除されるものを収集できます。

$ids = array();
foreach ((array) $_POST['ids'] as $id) {
    // sanitize input
    $id = (int) $id;
    if ($id) $ids[] = $id;
}
// good idea to say how much row will be deleted to DB
$limit = count($ids);
if ($limit) {
    // can see the output
    $ids = join(',', $ids);
    mysql_query("DELETE FROM cv_education WHERE edu_id IN ($ids) LIMIT $limit");
}
于 2013-01-24T20:23:44.707 に答える
0

生成されるコードを確認する必要があります$educationsが、アイデアは次のとおりです。

チェックボックスは次のようになります。

<input type="checkbox" name="educations[]" value="<?php $row['id']?>" />

フォームを送信するときは、次のようにします。

foreach($_POST['educations'] as $value){
    // query
    mysql_query("DELETE FROM tbl WHERE id = " . $value);
}

これは単なるガイドラインです。あなたはSQLインジェクションに対してオープンです。

于 2013-01-24T18:50:30.640 に答える