2012-07-18 61 views
0

我目前正面臨着一個奇怪的問題,我沒有從我的調試頁面收到任何錯誤。我的表格由多行組成,只有表格的第一行無法刪除。刪除已填充表中的行

樣品形式:

$DB = new PDO('sqlite:database/Sample.db'); 
$result = $DB->query("select * from staff");   
foreach ($result as $row) 
{ 
    $StaffNo= $row['StaffNo']; 
    $Name= $row['Name']; 
    $TelNo= $row ['TelNo']; 

echo "<tr>"; 
//Go to remove.php to remove 
echo "<form action=\"Remove.php\" method=\"post\">"; 
echo "<input type=\"hidden\" name=\"StaffNo\" value=\"$StaffNo\">"; 
echo "<input type=\"submit\" onclick=\"return confirm('Yes/No')\"/>"; 
echo "</form>"; 
echo "</td>"; 
echo '<td data-column-name="Name" char="data">'.$Name.'</td>'; 
echo '<td data-column-name="TelNo" char="data">'.$TelNo.'</td>'; 
</tr> 
} 

Remove.php:

$StaffNo= $_POST["StaffNo"]; 
$DB = new PDO('sqlite:database/Sample.db'); 

$DB->query("DELETE FROM Staff WHERE StaffNo=".$StaffNo); 

@header("location:view.php"); 

從上面我的代碼,我可以刪除除了第一行我的全部樣本的記錄。它不會被刪除...請告訴我是否在某處做錯了...

+0

也許你只是沒有發送'StaffNo'。嘗試輸出每個'StaffNo'發送到Remove.php – Tomer 2012-07-18 10:07:29

+0

我試過了。它可以刪除除第一行以外的所有行。 – JLearner 2012-07-18 10:13:52

+0

由於複製粘貼錯誤,或者在您的真實代碼中是否存在錯誤放置的'}'(現在,'$ staffNo'正在被每次循環迭代覆蓋)和''附近丟失'echo'語句以及?該錯誤可能在您省略的部分。 – RikkusRukkus 2012-07-18 10:18:06

回答

1

我試過你的代碼,除了破錶代碼,一切似乎都很好。確保你的桌子是正確的(<table><tr><td>Content</td></tr></table>)。在你的問題中,你錯過了第一個文件第9行的開頭<td>,以及缺少<table>標籤。某些瀏覽器不能很好地處理破損的表格,這可能會弄亂您的表格。

如果$StaffNo是一個空字符串,那麼您的查詢也會中斷,所以仔細檢查一下。

您還可以嘗試刪除header()電話並使用$DB->errorInfo()打印出錯誤。

+0

沒有任何錯誤給出$ DB-> errorInfo()雖然... – JLearner 2012-07-18 11:57:40

+0

你是對的。我失蹤​​搞砸了。 – JLearner 2012-07-18 12:32:23

0

要注入您的變量我隱藏的字段,您應該輸入 「。$ StaffNo」。 而不是 「$ StaffNo」。 可能它不會刪除表格的第一行,因爲它是唯一一個定義了StaffNo的表格。

+0

他使用雙引號,所以變量將被解釋。如果他使用單引號,他確實需要類似'value ='''。$ StaffNo。'「'。使用雙引號,'value = \「$ StaffNo \」'就足夠了。 – RikkusRukkus 2012-07-18 11:30:45