我必须添加一个form
操作才能转到另一个页面来编辑特定记录,但这样做,它不会允许我删除记录,因为它会让我离开在它进行query
之前。我不确定如何进行这项工作,当我点击"编辑"时,我仍然无法进入新页面。按钮。
<table id="tableid">
<thead>
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Product</th>
<th>Save</th>
<th>Delete</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
$stmt = $dbc->query("SELECT `id`,`first`,`last`,`product` FROM users");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
?>
<form method="POST" action="edit-product">
<tr>
<td><?php echo $row['id'];?>"</td>
<td><?php echo $row['first'];?></td>
<td><?php echo $row['last'];?></td>
<td><?php echo $row['product'];?></td>
<input name="id" type="hidden" value="<?php echo $row['id'];?>" readonly>
<input name="first" type="hidden" value="<?php echo $row['first'];?>">
<input name="last" type="hidden" value="<?php echo $row['last'];?>">
<input name="product" type="hidden" value="<?php echo $row['product'];?>">
<td><input name="save" type="submit" value="Save"></td>
<td><div class="delete-class" name="delete" id="<?php echo $row['id']; ?>">Delete</div></td>
<td><input name="edit" type="submit" value="Edit"></td>
</tr>
</form>
<?php } ?>
</tbody>
</table>
PHP DELETE
query
if(isset($_POST['delete'])) {
$id = $_POST['id'];
$stmt = $dbc->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
}
如何更改标记仍然可以进行编辑(转到带有操作的其他页面)和删除以在此页面上工作?
更新AJAX代码:
$(function() {
$(".delete_class").click(function(){
var del_id = $(this).attr('id');
$.ajax({
type:'POST',
url:'delete-product.php',
data:'delete_id='+del_id,
success:function(data) {
if(data) { // DO SOMETHING
} else { // DO SOMETHING }
}
)); //here
});
});
答案 0 :(得分:1)
这不是很理想,但有一种方法可以做到。您更改HTML标记以创建两个表单,一个用于编辑案例,另一个用于删除。删除案例将请求发送到当前页面,如下所示:
while($row = $stmt->fetch()) {
?>
<tr>
<td><?php echo $row['id'];?></td>
<td><?php echo $row['first'];?></td>
<td><?php echo $row['last'];?></td>
<td><?php echo $row['product'];?></td>
<td>
<form method="post" action="edit-product">
<input name="id" type="hidden" value="<?php echo $row['id'];?>">
<input name="first" type="hidden" value="<?php echo $row['first'];?>">
<input name="last" type="hidden" value="<?php echo $row['last'];?>">
<input name="product" type="hidden" value="<?php echo $row['product'];?>">
<input name="save" type="submit" value="Edit">
</form>
</td>
<td>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="id" type="hidden" value="<?php echo $row['id'];?>">
<input name="delete" type="submit" value="Delete">
</form>
</td>
</tr>
<?php }
?>
</tbody>
</table>
<?php
// the delete code goes here
if(isset($_POST['delete'])) {
$id = $_POST['id'];
$stmt = $dbc->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
}
?>
我省略了保存案例,但它与编辑案例类似。
答案 1 :(得分:0)
您可以只使用链接而不是表单提交按钮,而不是拥有表单。这样,每个链接都可以将您带到执行特定任务的特定页面。通过传递查询字符串变量并使用$ _GET而不是$ _POST,您可以保留产品ID信息。
示例:
<td><a href="save_product.php?id=<?php echo $row['id'];?>">Save</a></td>
<td><a href="delete_product.php?id=<?php echo $row['id'];?>">Delete</a></td>
<td><a href="edit_product.php?id=<?php echo $row['id'];?>">Edit</a></td>
然后,这些单独的页面可以在数据库中执行您的任务。保存和删除都可以使用标题重定向来返回包含产品列表的原始页面。
delete_product.php示例:
// delete product from database
$id = $_GET['id']; // Note that it's a $_GET
$stmt = $dbc->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
// re-direct to original list page
header("Location: product_list.php"); // or whatever you have your list page named.
edit_product.php页面将具有您对特定产品进行更改的典型形式。您需要使用$ _GET ['id']值在数据库中再次查找产品,以便与之匹配。
正如评论中所建议的那样,使用AJAX会使整个过程看起来是无缝的,而不是在页面之间跳转并被重定向。