html—如何使用php删除表中的特定行

yhxst69z  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(344)

我想知道是否可以使用表上的按钮从数据库中删除指定的行。举个例子:

<thead>
   <tr>
      <th>Identity</th>
      <th>Name</th>
      <th>Stuff</th>
      <th>Action(Delete)</th>
   </tr>
</thead>
<tbody>
   <?php
      $con=mysqli_connect("","","","");
      // Check connection
      if (mysqli_connect_errno())
      {
      echo "Error " . mysqli_connect_error();
      } 

      $result = mysqli_query($con,"SELECT * FROM sm_admins");

      while($row = mysqli_fetch_array($result))
      {
      echo "<tr>";
      echo "<td>" . $row['identity'] . "</td>";
      echo "<td>" . $row['name'] . "</td>";
                                          switch ($row['level']) {
                                              case "hello" : echo "<td>Nice Try</td>";
                                                  break;
                                              case "bye" : echo "<td>Row in a row</td>";
                                                  break;
                                              case "Cake" : echo "<td>Lemon</td>";
                                                  break;
                                              case "ao" : echo "<td>Key</td>";
                                                  break;
                                              case "as" : echo "<td>Charger</td>";
                                                  break;

                                          echo "<td> <button class='btn btn-red btn-icon-only' onclick='deleterow(" . $row['identity'] . ")> <i class='fa fa-times'></i> </button></td>";
                                        }
      echo "</tr>";
      }
      echo "</table>";

      mysqli_close($con);
      ?>

例如,我在一个数据库中有两行,这在html表中创建了两个不同的行,我想知道是否可以使用html页面上每行末尾的按钮从数据库中删除一个指定行

brvekthn

brvekthn1#

方法是使用 page.sql 要添加特定 SQL 代码,也就是 add 或者 droptable .
例如,任何按钮 onclick 然后可以重定向到下面的页面,然后立即重定向回主页。然后你可以为每一行设置一个特殊的页面和一个单独的页面 SQL 用于删除行的页面。祝你好运! name_of_whatever.sql ```
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: database_name


--
-- Table structure for table table_name

CREATE TABLE IF NOT EXISTS table_name (
id int(11) NOT NULL AUTO_INCREMENT,
word varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table table_name

INSERT INTO table_name (id, word,) VALUES
(1, 'hello');


5n0oy7gb

5n0oy7gb2#

有许多可行的方法。我能想到的在代码之上构建的最简单的方法如下:

<script>
function deleterow(rowid)
{
  var f = document.forms['theform'];
  f.rowid.value = rowid;
  f.submit();
}
</script>
<form name="theform" method="post">
<input type="hidden" name="rowid"/>
<input type="hidden" name="action" value="deleterow"/>
</form>

然后在php后端代码中检查 $_POST["action"] 对于“deleterow”,执行sql delete,从中获取值 $_POST["rowid"] -确保正确地转义它以避免sql注入。
避免重新加载页面和重新呈现html的更优雅的方法是向后端发出ajax调用,但这需要更多的工作。如果这是一个简单的应用程序,页面上的行数永远不会超过100行,而用户数永远不会超过几个,那么这可能会比它的价值更麻烦。
确保您了解php如何与html/javascript交互。php在服务器上执行。在客户端上呈现html并执行javascript。编写php时要做的是将html/javascript发送到客户机来呈现/执行。然后,当您的客户机提交表单时,将在服务器上执行php来处理提交。服务器上的php与数据库通信。因此,在php代码中,应该有以下内容:

function handle_action()
{
  $action = isset($_POST["action"]) ? $_POST["action"] : "";
  switch ($_POST["action"])
  {
    case "deleterow":
      handle_delete();
      load_data();
      break;
    default:
      load_data();
  }
}

function handle_delete()
{
  $rowid = isset($_POST["rowid"]) ? $_POST["rowid"] : "";
  if (!$rowid) return;
  mysqli_query("delete from sms_admins where identity = '".
mysqli_escape_string($rowid)."'");
}

function load_data()
{
  // put everything in your example here except for mysqli_connect
}

$con=mysqli_connect("","","","");
 // Check connection
if (mysqli_connect_errno())
{
    echo "Error " . mysqli_connect_error();
}

handle_action();

相关问题