到目前为止我有这个代码: 此表单在查询循环期间生成
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['age'] . "</td>";
echo "<td>" . $row['breed'] . "</td>";
if($row['neuteredOspayed']=="1"){
echo "<td>" . "neutered" . "</td>";
}else
echo "<td>" . "spayed". "</td>";
echo "<td>" . $row['priceFee'] . "</td>";
if($row['housebroken']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
if($row['goodwithdogs']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
if($row['goodwithcats']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "</tr>";
}
echo "</table>";
现在,有没有办法在每个结果旁边放一个说“删除”的链接?例如,状态字段旁边? 这是它的样子:
为了删除这个,我猜我需要以某种方式发现记录。我需要的是取动物的名字。例如,如何从表中获取值“Sparky”并将其分配给变量?如果我有名字,我将能够进行检查并运行查询,将删除记录。
答案 0 :(得分:2)
您必须使用Javascript和AJAX。
基本上,你需要在一个单元格中放一个按钮,每行一个,当它被点击时,通过AJAX将要删除的记录的id传递回PHP脚本,然后从数据库中删除记录。它还应该在单击时隐藏行。
我建议使用jQuery的.ajax(),因为原始的XHR充其量是痛苦的。
只有PHP才能做到这一点,因为HTTP是无状态的。加载网页后,HTML和PHP部分就完成并修复。您必须使用Javascript来发出连续请求。
或者,正如bcmcfc指出的那样,您也可以只使用一个指向脚本的超链接来删除数据库中的记录。
答案 1 :(得分:2)
你的while循环中需要这样的东西:
echo '<td><a href="path/to/delete.php?name='.$row['name'].'">Delete</a></td>';
使用表的主键会比名称更好 - 这是db中唯一的名称吗?假设有一个PK,它被称为id
:
echo '<td><a href="path/to/delete.php?id='.$row['id'].'">Delete</a></td>';
答案 2 :(得分:2)
Php只是用于生成页面,一旦生成了该表,就无法对其进行修改。 但是,您可以创建一个新的get请求,指定一个带有要删除的行名称的参数,但您必须更改服务器php代码以考虑此参数。
根据我的说法,最好的是使用javascript:你为每一行分配一个td id然后你写一个简单的函数来删除那一行。
答案 3 :(得分:1)
您必须提交表单并执行此操作....
<input type="submit" name="submit" value="Delete" />
提交后,表单将重定向到某个页面。在该页面中,您获得了所有发布的值。您可以使用记录ID删除记录,否则使用适当记录的名称。
$query = "DELETE FROM table_name WHERE name='$_POST['name']'";
(or)
$query = "DELETE FROM table_name WHERE id='$_POST['id']'";
执行此操作后,您必须将URL重定向到该页面。
(or)
<a href="delete.php?id='.$row['id'].'">Delete</a>
在这个文件中你必须这样写......
$id = $_REQUEST['id'];
$query = "DELETE FROM table_name WHERE id='$id'";
答案 4 :(得分:1)
//Add this form before the end of the while loop
<form action="#" method="post">
<input type="hidden" name="name" value="<?php echo $row['name']?>">
<input type="submit" name="delete" value="delete">
</form>
//Add this at the end of the coding
<?php
if(isset($_POST['delete']))
{
//database connection
$sql="DELETE FROM `table_name` WHERE `name`='{$_POST['name']}'";
$queryEXE=mysql_query($sql);
}
?>
答案 5 :(得分:0)
您为每个<tr>
添加了“elemID”属性,并为每一行添加了一个新类(例如,elem + the id
):
<tr elemId="12" class="elem12">...</tr>
然后,对于Delete链接,使用AJAX调用从数据库中删除行的页面,将elemID作为参数传递给此函数:
function deleteRow(thisElemID) {
$.ajax({
url: yourURL,
data: {'elemID', thisElemID },
success: function() {
$('.elem'+thisElemID).remove();
}
});
}
更多关于$ .ajax here。
答案 6 :(得分:0)
在表格中创建另一个单元格并调用该按钮的ajax onclick。在你的ajax调用中删除特定的行
答案 7 :(得分:0)
每行使用“删除”表单。
最好的方法是为每一行添加一个带有提交按钮的表单。每个表单都有一个隐藏字段,其中包含要删除的记录的ID(或名称,如果必须)。将表单的方法设置为“post”。
原因:
除此之外,
也就是说,假设您要从数据库中实际删除记录。如果你只是想改变HTML,那么Javascript解决方案会更有意义。