2013-08-03 64 views
-2

操作我寫了如下代碼:如何執行批量刪除WP

<?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> 

刪除操作不起作用......請幫我

+0

哪裏定義了$ delete?我想你應該使用'$ _POST ['delete']'。 –

+0

我試過使用$ _POST ['delete'],它仍然沒有工作.. – Nida

+0

其實我正在使用教程http://www.phpeasystep.com/mysql/8.html – Nida

回答

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-注射。