0

フォームが送信された後に「すべてのフィールドが必要です」という通知を表示する前に非表示にする方法を考えていました。これが私のコードです:

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

ただし、これを使用すると、ページが初めて読み込まれたときでも (入力を送信せずに)、「すべてのフィールドに入力してください」と表示されます。どうすればいいですか?さらに、ネストされた「if」でさえ機能しません。これらの文字列は引き続き送信できます:(

4

1 に答える 1

0

ユーザー要求が POST か GET かを確認します。

$_POST が設定されているかどうかを確認するだけで、最も簡単に実現できます。

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

をチェックすることで同じことを達成できると確信しています$_SERVER['REQUEST_METHOD'] == 'POST'。少しきれいになるかもしれません。

于 2012-12-02T19:55:31.807 に答える