【问题标题】:PHP Delete ButtonPHP 删除按钮
【发布时间】:2014-03-26 13:56:10
【问题描述】:

我最近开始自学 PHP,也开始使用 MySQL 和 Apache。我在 MySQL 中制作了一个基本表,并使用一些 PHP 代码,在浏览器中以 HTML 表的形式显示了该表。现在我想在每一行旁边添加一个删除按钮,当点击时,它会删除该行。我对此很陌生,我只是在练习。有人可以帮我吗?这是我到目前为止的代码:


发件人: phpcode on Pastebin

<?php

ini_set('display_errors',1);
error_reporting(E_ALL);

mysql_connect('localhost', 'root', '');

mysql_select_db('testdb');

$result = mysql_query('select * from products');

$numrows = mysql_numrows($result);

//****************************************************************
print "<table border = 3 style = width:400px>";


for($i = 0; $i < $numrows; $i++)
{
$row = mysql_fetch_row($result);

print "<tr>";


foreach($row as $cell)
{

print "<td>";
print $cell;
print "</td>";


}
print "</tr>";


}



print "</table>";


mysql_close();

?>

我也有一个delete.php 页面,但我真的不知道从哪里开始。我找了网上的教程,很多说法不一。

【问题讨论】:

  • 到目前为止发布您的 delete.php 页面的代码。
  • 我最近在stackoverflow上回答了一个问题,答案stackoverflow.com/questions/22241895/…,可能对你有帮助。祝你好运。

标签: php mysql apache button


【解决方案1】:

只需在带有删除文本的循环内添加另一个“”,然后传递它的 id

for($i = 0; $i < $numrows; $i++)
{
$row = mysql_fetch_row($result);

print "<tr>";


foreach($row as $cell)
{

print "<td>";
print $cell;
print "</td>";
print "<td>";
print "DELETE";
print "</td>"; 

}
print "</tr>";


}

【讨论】:

  • 谢谢,但您的建议在每个单元格旁边添加了“删除”。我想在行尾“删除”。并让它真正发挥作用。
【解决方案2】:

让你的表如下所示;

$result = mysql_query('select * from products');

print "<table>";
while ($row = mysql_fetch_assoc($result)) {
    print "<tr><td>" . $row["name"] . "</td><td>" . $row["surname"] . "</td><td><a href="delete.php?id=<?php echo $row['id']; ?>">Delete</a></td></tr>";
}
print "</table>";

在这里,在迭代你的行时,你需要将$row["id"] 放入删除链接 id。

在你的 delete.php

$id = $_GET["id"];

// Delete sql here. Do not forget to validate id here.
header("Location: index.php"); // I assume, table page is this

【讨论】:

  • for 循环的原因是,如果我想添加更多行,它会自动执行。您建议了一种手动方法。这让我感到困惑。在使用 for 循环打印 tr、th 等时,我不知道该怎么做。
  • 只需复制一份行并将其放入循环中。在每个“td”中,只需传递数据库中的值
  • @user3464531 你可以看到我更新的答案。我已经使用了迭代和您的一些代码。您需要根据需要使用该代码
【解决方案3】:

在您的表 products 中,您需要为每个寄存器设置一个具有不同值的字段,将其命名为 id 或任何您想要的名称。

如果您有表格但没有该字段,那么最好的选择是 auto_increment 字段。 添加 auto_increment 字段的代码:

 ALTER TABLE `products` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;

那么 id 对于每个寄存器都是唯一的,你不需要担心它,因为你不需要插入它,它是自动生成的。

 print "<table border = 3 style = width:400px>";


for($i = 0; $i < $numrows; $i++)
{
   $row = mysql_fetch_row($result);
   print "<tr>";

  foreach($row as $cell)
  {
     print "<td>";
     print $cell;
     print "</td>";
  }
  print "<td><a href='delete.php?id=".$row["id"] ."' > delete </a> " ;

  print "</tr>";
}

$row["id"] 是要删除的寄存器的id。

在删除.php中

$id = $_GET["id"];
$delete = " DELETE from yourTable where id = ". $id ;

mysq_query ( $delete ) ; 

PD:使用 mysqli_

【讨论】:

  • 我最理解您的回复。当我单击删除时,我得到 /delete.php?id= 。我应该在哪里给每一行一个特定的ID,即。 1,2,3等
  • 在您的 bd 表中添加新列,每个寄存器都是唯一的,好的选择是将 id 定义为主键 auto_increment
  • 我如何给一行一个 id,所以当我点击删除时,该行会被删除。我对此完全陌生,只是在尝试基础知识。不过感谢您的帮助
  • 寻找答案的编辑。每行的 id 是 bd 中寄存器的 id,您在将寄存器插入表时创建它。
  • 好的,我会试试的。谢谢
猜你喜欢
  • 2012-12-09
  • 2013-06-28
  • 2014-01-30
  • 2017-09-26
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多