-2

以下のコードのように書きました。

<?php
global $wpdb;
$table = $wpdb->prefix . 'submitted_form'; 
$randomFact = $wpdb->get_results( "SELECT * FROM " .$table);
$NumRows = count((array) $randomFact);
?>
<form name="delform" method="post" action="">
 <table>
 <?php for($i=0; $i<=$NumRows-1; $i++){ ?>
 <tr>
 <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php print          $randomFact[$i]->id; ?>"> </td>
<td><?php print $randomFact[$i]->name; ?></td>
<td><?php print $randomFact[$i]->address; ?></td>
</tr>
<?php } ?>
 <tr>
<td><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
 <?php if($delete): ?>
  <?php for($i=0; $i<=$NumRows-1; $i++){ ?>
  <?php $id = $checkbox[$i]; ?>
   <?php $wpdb->query("DELETE FROM wp_submitted_form WHERE id =".$id); ?>
    <?php } ?>
   <?php endif; ?>
   </table>
  </form>

削除操作がうまくいきません...助けてください

4

1 に答える 1

3

ここであなたがする必要があることを変更します: 変数$delete$checkboxは定義されていません。それらを定義するか、代わりに $_POST 変数を使用できます。

// test what we have here:
//echo '<pre>', print_r($_POST),'</pre>';
if (isset($_POST['delete'])):
    // i dont think that you should use $NumRows here, cause user 
    // can check 1 or 2 checkboxes, not all of them
    $size = count($_POST['checkbox']);
    for ($i=0; $i<=$size-1; $i++) {
        $id = $_POST['checkbox'][$i];
        $wpdb->query("DELETE FROM wp_submitted_form WHERE id =".$id);
    }
endif;

1また、ループで減算する必要はありません。以下を使用できます。

for ($i=0; $i < $size; $i++)

$_POST['checkbox'][$i]また、mysql インジェクションを避けるために、が本当に整数かどうかを確認することを忘れないでください。

于 2013-08-03T08:42:59.000 に答える