我创建了一个函数list_product
show list product。
我想在列表产品上的每个产品上都有一个按钮delete
。
但我无法删除$id
。
有什么方法可以删除列表数据库中的行吗?
我的功能如下:
<?php
function product_list() {
?>
<div class="wrap">
<?php
global $wpdb;
$table_name = $wpdb->prefix . "product";
if (isset($_POST['delete'])) {
$wpdb->query($wpdb->prepare("DELETE FROM $table_name WHERE id = %s", $id));
} else {
$rows = $wpdb->get_results("SELECT id,name from $table_name");
}
?>
<table>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<?php foreach ($rows as $row) { ?>
<tr>
<td><?php echo $row->id; ?></td>
<td><?php echo $row->name; ?></td>
<td><a href="<?php echo admin_url('admin.php?page=product_update&id=' . $row->id); ?>">Cập nhật</a></td>
<td><input type='submit' name="delete" value='Delete' class='button' onclick="return confirm('¿ Confirm Delete?')"></td>
</tr>
<?php } ?>
</table>
</div>
<?php
}
感谢。
答案 0 :(得分:0)
我不是真正的PHP专家,但我认为这是正在发生的事情
您没有在任何地方发送$id
变量。此外,您的代码中没有任何形式。由于您没有使用JS提交,因此没有任何提交。
请尝试以下代码。
<?php
function product_list() {
?>
<div class="wrap">
<?php
global $wpdb;
$table_name = $wpdb->prefix . "product";
if(isset($_POST['row_id'])){
$id = $_POST['row_id'];
$id = $id[0];
}else{
$id = '';
}
if (isset($_POST['delete'])) {
$wpdb->query($wpdb->prepare("DELETE FROM $table_name WHERE id = %s", $id));
} else {
$rows = $wpdb->get_results("SELECT id,name from $table_name");
}
?>
<form method="post">
<table>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<?php foreach ($rows as $row) { ?>
<tr>
<td><?php echo $row->id; ?></td>
<td><?php echo $row->name; ?></td>
<td><a href="<?php echo admin_url('admin.php?page=product_update&id=' . $row->id); ?>">Cập nhật</a></td>
<td>
<input type="hidden" name="row_id[]" value="<?php echo $row->id; ?>">
<input type='submit' name="delete" value='Delete' class='button' onclick="return confirm('¿ Confirm Delete?')">
</td>
</tr>
<?php } ?>
</table>
</form>
</div>
<?php
}