如何从HTML表中删除记录?

时间:2012-09-07 11:09:42

标签: php

到目前为止我有这个代码: 此表单在查询循环期间生成

 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>";

现在,有没有办法在每个结果旁边放一个说“删除”的链接?例如,状态字段旁边? 这是它的样子:enter image description here

为了删除这个,我猜我需要以某种方式发现记录。我需要的是取动物的名字。例如,如何从表中获取值“Sparky”并将其分配给变量?如果我有名字,我将能够进行检查并运行查询,将删除记录。

8 个答案:

答案 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”。

原因:

  • 可以轻松地为删除链接(a href)建立索引和书签。您 不希望每次谷歌掉落或用户都删除宠物 浏览他们的历史。
  • 方法='get'表单也可能导致 要加入书签和/或显示在历史记录中的网址。方法 使用表单将完全没有Javascript。

除此之外,

  • 任何解决方案(包括表单和链接)都可以轻松地“升级”为使用Ajax的解决方案,以获得更好的用户体验,但这始终是额外的,没有核心功能。
  • 如果您愿意,可以将提交按钮设置为看起来像链接。
  • 如果您实施此解决方案,请使用post-redirect-get pattern

也就是说,假设您要从数据库中实际删除记录。如果你只是想改变HTML,那么Javascript解决方案会更有意义。