2010-07-25 119 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