2012-12-02 12 views
0

我想知道如何在提交表單之後顯示'所有字段必需'通知但之前隱藏它。這裏是我的代碼:使用PHP顯示「所有字段必填」錯誤(並且默認隱藏它)

if (isset($_POST['region'], $_POST['description'], $_POST['remarks']) && !empty ($_POST['region']) && !empty($_POST['description']) && !empty($_POST['remarks'])) 
{ 
    $region = mysql_escape_string($_POST['region']); 
    $description = mysql_escape_string($_POST['description']); 
    $remarks = mysql_escape_string($_POST['remarks']); 

    if (strlen($region>50)) { 
     $error .= "Only 50 characters are allowed in the region field."; 
    } 

    else { 
      if (strlen($description>500)) { 
       $error .= "Only 500 characters are allowed in the region field."; 
      } 

      else { 
       mysql_query("INSERT INTO register (region, description, remarks) VALUES(
         '$region', 
         '$description', 
         '$remarks') ") or die('Not saved. ' . mysql_error()); 
      } 

    } 
} 

else { 
    $error.= "Please fill all the fields."; 
} 
echo $error; 
?> 

//form starts here 

然而,採用這種顯示「請填寫所有字段」即使在頁面加載的第一次(不提交輸入)。我如何去做這件事?另外,即使嵌套的'如果'不工作。這些字符串仍然可以提交:(

+0

注意:你應該使用'mysqli_ *'而不是'mysql_ *',因爲mysql函數很快就會被棄用。 – bear

+0

真的很奇怪,我的意思是你應該只用'我sset($ _ POST ['BLAH'])'來控制,但你的寫作也是真實的。你可以請檢查什麼的'$ _ POST值[ '言論']','$ _ POST [ '說明']'和'$ _ POST [ '區域']'的'else'聲明。也許它們到達服務器的零點,並且'!empty'執行到False。這是關於'空'的;) – mtndesign

回答

0

檢查,如果用戶請求是POST或GET。

這將是最容易通過簡單的檢查,如果$ _POST被設置來實現的。

/* ... */ 
else if (isset($_POST)) { 
      $error.= "Please fill all the fields."; 
     } 

我很確定你可以通過檢查$_SERVER['REQUEST_METHOD'] == 'POST'來達到同樣的效果,可能會稍微清理一些。