我想知道是否可以用表格上的按钮从数据库中删除该特定行。 这是一个示例:
<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);
?>
例如,我在数据库中有2行,并且在HTML表上创建了2条不同的行,我想知道是否有可能使用HTML上每行末尾的按钮从数据库中删除指定的行页面
答案 0 :(得分:0)
执行此操作的方法是使用page.sql
文件添加特定的SQL
代码,该代码将是add
或drop
一个table
。
例如,任何按钮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');
-- --------------------------------------------------------
答案 1 :(得分:0)
有许多可行的方法。我能想到的在代码之上构建的最简单的代码是这样的:
<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删除以从$_POST["rowid"]
获取值-确保正确地对其进行转义以避免SQL注入。
一种更优雅的方法是避免向后端发出AJAX调用,从而避免了重新加载页面和重新呈现HTML的麻烦,但这需要更多的工作。如果这是一个简单的应用程序,并且页面上的行数永远不会超过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();