2010-08-16 85 views
0

具有麻煩,這部分代碼一點點:變量沒有設置與表單提交錯誤的問題

if(!empty($_POST['RemoveRequest']) && isset($_POST['RemoveRequest'])){ $action = $_POST['RemoveRequest']; } 
echo '<form method="post" action="'.$page_name.'"> 
<input type="submit" value="[Remove Request]" name="RemoveRequest" /></form></td>' 
.'</tr></table>'; 

if($action == 'RemoveRequest'){ 

$sql = "DELETE FROM ".TBL_FACTION_REQUESTS." WHERE r_id=$id LIMIT 1"; 
mysql_query($sql); 
header("Location: ".$page_name.""); 

} 

這種形式和服務器代碼引發此錯誤:

Notice: Undefined variable: action in C:\xampp.. on line 97.

然後記錄不會從我的數據庫中刪除。

我真的很困惑我在這裏做錯了嗎?嘗試了一下自己的調試,但還沒有運氣。希望有人能幫助我!

+0

不PHP5具體評價真實,請正確標記。 http://php.net/ChangeLog-5.php http://php.net/isset – TheLQ 2010-08-17 21:33:09

回答

0

error is of level E_NOTICE. Need to add this code before the code:

$action = ""; 
1

看起來你開條件不評估爲真 -

if(!empty($_POST['RemoveRequest']) && isset($_POST['RemoveRequest'])) 

如果這個語句不計算爲true,$action不被設置。你所看到的警告(「未定義變量..」)是指在第一時間在上面的腳本所遇到$action流一直沒有任何值設置

// action hasn't been set by here.. 
if($action == 'RemoveRequest'){ 

如果$action沒有被設置,那麼它顯然不會評估到RemoveRequest,所以你的數據庫查詢代碼塊將永遠不會運行。

調試時,嘗試在代碼的第二行輸出$action$_POST['RemoveRequest']的值。可能是因爲發佈到此腳本的表單沒有按照您預期的方式設置變量。

+0

我回聲:echo $ _POST ['RemoveRequest']; 得到: 注意:未定義索引:RemoveRequest。 我不知道我的問題意味着什麼? – 2010-08-16 21:55:20

+0

在$ _POST上嘗試print_r作爲腳本的第一行 - 聽起來您的發佈數據沒有以您認爲的方式填充(通常是字段名稱中的拼寫錯誤/看起來像字段中的額外括號「value 「上面 - 如果你的print_r,看看什麼實際正在$ _ POST發送應該很清楚 – ConroyP 2010-08-16 21:59:28

+0

的print_r($ _ POST); 給出以下結果: 陣列() 我不知道這意味着什麼依然 – 2010-08-16 22:03:46

0

您是否嘗試過將If命令,像這樣:

if(!(empty($_POST['RemoveRequest'])) && (isset($_POST['RemoveRequest']))){ 
    $action = $_POST['RemoveRequest']; 
} 

這將從不被定義停止您的變量的唯一的事情。此外,您可能要更改value="[Remove Request]",因爲它永遠不會爲if ($action =='RemoveRequest')