2014-02-17 96 views
0

當我試圖刪除某個特定記錄時,從數據庫表中獲取數據無論我單擊了最後一條記錄刪除了什麼mi做錯了,這是代碼m使用後提交/單擊刪除按鈕從php頁面刪除總是刪除數據庫行

// DELETE 

if(isset($_POST['del'])) 
{ 
require'conn.php'; 
$delete_id = $_POST['del_id']; 
print_r($_POST); 
die; 

$del_stmt = "DELETE FROM signup WHERE ID =$delete_id"; 
mysqli_query($conn,$del_stmt); 
mysqli_execute($del_stmt); 
$row=mysqli_affected_rows($conn); 
if($row==1) 
{ 
echo "<h1>".' sucess ! record was deleted' ."</h1>"; 
} 
else 
{ 
echo "<h1>".' record was not deleted '."</h1>"; 
} 

mysqli_close($conn); 
} 
include'fetchtable.php'; 

,這是我的表結構和刪除按鈕的代碼

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post"> 

<?php 
echo "<table border='1' cellpadding='2' cellspacing='2'"; 
echo "<tr><td>ID</td><td>First Name</td><td>Last Name</td><td>Gender</td><td>Email</td><td>Password</td><td>Delete</td><td>Edit</td>"; 
while (mysqli_stmt_fetch($stmt)) 
{ 
echo"<tr>"; 
echo "<td>".$id."</td>"; 
echo "<td>". "$fn" ."</td>"; 
echo "<td>". "$ln" ."</td>"; 
echo "<td>". "$gen"."</td>"; 
echo "<td>". "$email"."</td>"; 
echo "<td>". "$pass" ."</td>"; 
echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> '; 
echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> '; 
echo"</tr>"; 
} 
?> 
</form> 
+0

你在哪裏分配一個值的$ id? –

+1

因爲你有一種形式,並在多個提交,所以onsubmit $ _POST ['del_id']將始終是DOM中的最後一個元素.. –

+0

請echo $ id,看看你得到什麼值。 –

回答

0

正如Abhik Chakraborty所說,您需要每行或其他邏輯的表單;

一種解決方案是把<form ...>...</form>內環路:

這是 - 據我所知 - 不正確的,在不符合HTML性病。只有在一些瀏覽器的工作原理,bcause <table><form> Ar混合順序錯誤,我用它只能作爲egsample向您展示問題

<?php 
echo "<table border='1' cellpadding='2' cellspacing='2'"; 
echo "<tr><td>ID</td><td>First Name</td><td>Last Name</td><td>Gender</td><td>Email</td><td>Password</td><td>Delete</td><td>Edit</td>"; 
while (mysqli_stmt_fetch($stmt)) 
{ 
echo "<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">" 
echo"<tr>"; 
echo "<td>".$id."</td>"; 
echo "<td>". "$fn" ."</td>"; 
echo "<td>". "$ln" ."</td>"; 
echo "<td>". "$gen"."</td>"; 
echo "<td>". "$email"."</td>"; 
echo "<td>". "$pass" ."</td>"; 
echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> '; 
echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> '; 
echo"</tr>"; 
echo "</form>" 

我個優選只具有一個隱藏字段的形式UND設置該字段的值與提交按鈕的onClick事件。

只有最後一次行:

... 
echo '<td> <input type="submit" name="del" value="delete" onclick="form.row_id.value='$the id$';"/>' 
echo '<td> <input type="submit" name="edit" value="edit" onclick="form.row_id.value='$the id$';"/>' 
echo"</tr>"; 
} 
?> 
<input ID='row_id' type="hidden" name="del_id" value="no set till now" />' 
</form> 
0

你需要有多個每個動作,所以你需要有代碼

while (mysqli_stmt_fetch($stmt)){ 
    echo '<form action="'.htmlspecialchars($_SERVER["PHP_SELF"]).'" method="post">' ; 
    echo "<tr>"; 
    echo "<td>".$id."</td>"; 
    echo "<td>". "$fn" ."</td>"; 
    echo "<td>". "$ln" ."</td>"; 
    echo "<td>". "$gen"."</td>"; 
    echo "<td>". "$email"."</td>"; 
    echo "<td>". "$pass" ."</td>"; 
    echo '<td> <input type="hidden" name="del_id" value="'.$id.'" />'. '<input type="submit" name="del" value="delete" /> '; 
    echo '<td> <input type="hidden" name="edit_id" value="'.$id.'" />'.' <input type="submit" name="edit" value="edit" /> '; 
    echo "</tr>"; 
    echo "</form>"; 

} 

此外,您的代碼不安全,您需要爲您的POST數據使用mysqli_real_escape_string()。或準備好聲明

+0

@abhicharborty THANX你是救星! googlin它整整一天.. thanx伴侶 –

+0

不客氣! –