从哪里通过id删除记录?
如何通过id删除此代码中的记录?从哪里通过id删除记录?
<form action="index.php">
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('user');
$query = mysql_query("Select * from tbluser");
echo "<center>";
echo '<table style="border:solid 2px black;">';
while(($row = mysql_fetch_array($query)) != NULL) {
echo '<tr>';
echo '<td>' . $row['UserName'] . '</td>';
echo '<td>' . $row['Password'] . '</td>';
echo '<td>' . $row['EmailAddress'] . '</td>';
echo '<td>' . $row['Address'] . '</td>';
echo '<td>' . $row['Address'] . '</td>';
echo '<td><input type = "Submit" value = "Delete" name = "btnDel" /></td>';
echo '</tr>';
}
echo '</table>';
echo "</center>";
?>
</form>
上面的代码在index.php
,它将它提交给自己。
无需JavaScript的,独立的GET网址等,只是普通的老HTML &原帖:刚刚ID添加到该按钮的名称:
<input type="submit" value="Delete" name="btnDel[<?php echo $id;?>]">
而在接收代码:
if(isset($_POST['btnDel']) && is_array($_POST['btnDel'])){
foreach($_POST['btnDel'] as $id_to_delete => $useless_value){
//delete item with $id_to_delete
}
}
正是我想要的。没有查询字符串和没有JavaScript :) – TCM 2010-07-25 17:31:04
+1我喜欢这个。 – quantumSoup 2010-07-25 17:31:38
+1尽管喂他:) – 2010-07-25 17:35:19
用这个来提交id作为表单的一部分。
<input type="hidden" id="id" name="id" value="<? echo $row['id']; ?>" />
,或者你可以在URL发送值做同样的事情
一个例子:
<a href="index.php?action=delete&id=<? echo $row['id']; ?>">Delete</a>
一个完整的工作示例
<?
mysql_connect('localhost', 'root', '');
mysql_select_db('user');
switch($_GET['action']) {
case "delete":
$query = "DELETE FROM tbluser WHERE id='".$_GET['id']."'"
$result = mysql_query($query);
break;
//well other actions
}
$query = mysql_query("Select * from tbluser");
echo "<center>";
echo '<table style="border:solid 2px black;">';
while(($row = mysql_fetch_array($query)) != NULL) {
echo '<tr>';
echo '<td>' . $row['UserName'] . '</td>';
echo '<td>' . $row['Password'] . '</td>';
echo '<td>' . $row['EmailAddress'] . '</td>';
echo '<td>' . $row['Address'] . '</td>';
echo '<td>' . $row['Address'] . '</td>';
echo '<td><a href="thispage.php?action=delete&id='.$row['id'].'">Delete</a></td>';
echo '</tr>';
}
echo '</table>';
echo "</center>";
?>
好的,但是如何在'$ _GET'或'$ _POST'中使用?当我按删除ID将如何可用? – TCM 2010-07-25 16:59:12
-1假设多行,'id =“id”'是一个坏主意。 – 2010-07-25 17:00:30
@Nitesh'$ _GET ['id']'或'$ _POST ['id']'取决于方法 – quantumSoup 2010-07-25 17:01:22
从表:
echo '<input type="hidden" name="user_id" value="'.$row['id'].'" />';
echo '<td><input type = "Submit" value = "Delete" name = "btnDel" /></td>';
这将作为名为user_id
的参数发送到服务器。理想情况下,您应该在表单中使用POST方法。
这里假定用户名是在表中命名为id
。
顺便说一下,!= NULL
是不必要的。
这足以写:
while($row = mysql_fetch_array($query)) {
NULL的计算结果为FALSE在布尔上下文。
更新:
正如评论到另一个答复中提到,有一个与你的方法的问题。对于多行,您将无法区分用户ID。
一个解决方案将使用多种形式。
另一种选择是使提交按钮的名称包含id。然后,您将解析出$ _POST数组键的名称。
对不起,但它不工作。当我'var_dump($ _ POST)'我总是得到'数组(2){[“id”] =>字符串(1)“3”[“btnDel”] =>字符串(6)“删除”}'无论按下哪个按钮我都可以点击。你能帮我吗? – TCM 2010-07-25 17:12:32
你为什么包括@ Ryan对你的答案? – Starx 2010-07-25 17:51:04
@Starx这是一个巧合。我想通过编辑窗口打开。 (我只有3个小时的睡眠时间,其中一个原因是我的回答是轻微的代码,以及为什么我错过了不必要的比较,以及使用一种形式的原始问题。) – 2010-07-25 17:55:15
你也可以在action="index.php"
发送的网址给你移动它下面while(($row = mysql_fetch_array($query)) != NULL) {
这样
echo "<form action='index.php?var=" . $row['id'] . "'>";
然后你会得到使用$_GET['var']
变量如果ID需要保持隐藏(在页面和链接中)隐藏的输入元素和提交表单使用method="post"
像以前所建议的将是更好的方式去。
案例是在这里有多行,一个特定的ID不会很有用我认为 – Starx 2010-07-25 17:13:48
GET请求不应该有副作用。他们应该简单地返回由URI标识的一些资源的表示。 (gah,typos) – 2010-07-25 17:15:21
@Starx,这就是为什么我建议将表单本身移到while中,这将为返回的每一行创建一个表单(在action URL中使用它的唯一ID)。尽管如此,上面的方法是一种更好的方法来完成我试图解决的问题。 @George Marian,不知道你的意思,你有一个硬编码变量到URL的问题吗? – Ryan 2010-07-25 17:28:17
这是我会怎么做:
变化
echo '<td><input type = "Submit" value = "Delete" name = "btnDel" /></td>';
要
echo '<td><input type = "button" value = "Delete" onclick = "btnDel(' . $row['id'] . ')" /></td>';
以下字段添加到窗体(当然while循环外):
<input type="hidden" name="id" id="userid" />
Define下面的JavaScript函数:
function btnDel(id) {
if (confirm("Really delete id=" + id + "?")) {
document.getElementById('userid').value = id;
document.forms[0].submit();
}
}
然后你可以检索使用$_GET['id']
或$_POST['id']
取决于你的窗体的方法,它的价值。
编辑:这里有一个working demo,并its source
你有多行还是只有一行? – Starx 2010-07-25 17:05:08