2010-07-25 127 views
0

如何通过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,它将它提交给自己。

+0

你有多行还是只有一行? – Starx 2010-07-25 17:05:08

回答

5

无需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 
    } 
} 
+0

正是我想要的。没有查询字符串和没有JavaScript :) – TCM 2010-07-25 17:31:04

+0

+1我喜欢这个。 – quantumSoup 2010-07-25 17:31:38

+0

+1尽管喂他:) – 2010-07-25 17:35:19

1

用这个来提交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>"; 
?> 
+0

好的,但是如何在'$ _GET'或'$ _POST'中使用?当我按删除ID将如何可用? – TCM 2010-07-25 16:59:12

+0

-1假设多行,'id =“id”'是一个坏主意。 – 2010-07-25 17:00:30

+1

@Nitesh'$ _GET ['id']'或'$ _POST ['id']'取决于方法 – quantumSoup 2010-07-25 17:01:22

0

从表:

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数组键的名称。

+0

对不起,但它不工作。当我'var_dump($ _ POST)'我总是得到'数组(2){[“id”] =>字符串(1)“3”[“btnDel”] =>字符串(6)“删除”}'无论按下哪个按钮我都可以点击。你能帮我吗? – TCM 2010-07-25 17:12:32

+0

你为什么包括@ Ryan对你的答案? – Starx 2010-07-25 17:51:04

+0

@Starx这是一个巧合。我想通过编辑窗口打开。 (我只有3个小时的睡眠时间,其中一个原因是我的回答是轻微的代码,以及为什么我错过了不必要的比较,以及使用一种形式的原始问题。) – 2010-07-25 17:55:15

0

你也可以在action="index.php"发送的网址给你移动它下面while(($row = mysql_fetch_array($query)) != NULL) {这样

echo "<form action='index.php?var=" . $row['id'] . "'>"; 

然后你会得到使用$_GET['var']

变量如果ID需要保持隐藏(在页面和链接中)隐藏的输入元素和提交表单使用method="post"像以前所建议的将是更好的方式去。

+0

案例是在这里有多行,一个特定的ID不会很有用我认为 – Starx 2010-07-25 17:13:48

+0

GET请求不应该有副作用。他们应该简单地返回由URI标识的一些资源的表示。 (gah,typos) – 2010-07-25 17:15:21

+0

@Starx,这就是为什么我建议将表单本身移到while中,这将为返回的每一行创建一个表单(在action URL中使用它的唯一ID)。尽管如此,上面的方法是一种更好的方法来完成我试图解决的问题。 @George Marian,不知道你的意思,你有一个硬编码变量到URL的问题吗? – Ryan 2010-07-25 17:28:17

2

这是我会怎么做:

变化

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

+1

但是,我们不应该依赖JavaScript被启用。特别是,如果有方法可以不使用JavaScript。 – 2010-07-25 17:19:46

+0

此外,这个问题只被标记为PHP和MySQL,我不认为OP期待JavaScript解决方案,但是当他接受它时,我想他是这么做的。有趣虽然..... – Starx 2010-07-25 17:24:23

+0

我接受,因为我试图乔治玛丽安的解决方案,但它没有奏效。这看起来很有希望,事实上它确实有效。 – TCM 2010-07-25 17:26:27