2012-02-04 68 views
0

謝謝你,這裏是正在發生的事情:如果後提前提交聲明沒有得到過去的每個循環

if(isset($_POST['submit'])) 
{ 
$var = $_GET['var']; 

foreach((array)$_POST['content'] as $area => $contents) 
    { 

     $result = 'UPDATE $table SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";'; 
     mysql_query ($result); 
    } 


$query = 'UPDATE $table SET '. 
      'title = "'.mysql_real_escape_string(stripslashes($_POST["title"])).'", '. 
      'template = "'.mysql_real_escape_string($_POST["templateid"]).'", '. 
      'description = "'.mysql_real_escape_string(stripslashes($_POST["description"])).'", '. 
      'keywords = "'.mysql_real_escape_string(stripslashes($_POST["keywords"])).'" '. 
      ' WHERE var = "'.$_GET['var'].'";'; 

mysql_query ($query);// or die(mysql_error()); 

} 

我不能讓if語句超越每個循環。它不會使用$ query mysql語句更新數據庫。它簡單地更新表格中每個循環內的所有內容,然後存在。我是否需要做一個If while或else?而我試圖查找PHP條件語句,是否有這樣的事情和聲明?如:如果提交後做這個和這個?這基本上是我想要做的,如果提交後,爲每個循環做,並做$查詢。

讓我知道如果你需要更多的信息。

回答

1

那麼,是不是定義爲$_POST['content']?在這種情況下,您可能需要使用print_r($_POST)開始調試,以查看您獲得的所有值。

什麼你可能打算做的是:

foreach ($_POST as $key => $val) 

編輯:
,你應該真的逃脫$_GET['var']以及在循環中的$area!退出所有用戶輸入,總是!

+0

我將添加轉義。 content []是文本區域的名稱。然而,對於每個循環來說,完美運行並更新表格。它永遠不會到第二個查詢 – 2012-02-04 15:52:27

0

表名不會顯示。同時添加一些東西給mysql的錯誤信息來幫助調試:

$result = 'UPDATE '.$table.' SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";'; 
mysql_query ($result) or die(mysql_error()); 
0

嘗試,並添加*的ini_set(「display_errors設置」,1); *添加腳本的開始,以確保錯誤輸出中。 並使用* var_dump(mysql_error()); *顯示第二個查詢的mysql錯誤。

還有一個小建議。 做$區域切換,以保證有效字段傳遞:

switch ($area) { 
    case 'field1': $area='field1'; break; 
    case 'field2': $area='field2'; break; 
    default: echo 'No valid field'; continue; break; 
} 

好運!