2011-07-11 27 views
0

私は、フィールドが必須であることを知らせるために、完了していなければユーザーにエラーを返すいくつかの必須フィールドを持つ簡単なフォームを作成しました。 複数のフィールドがチェックされているので、複数のエラーメッセージを出力できます。phpフォーム - エラーチェックと出力

これらのエラーがフォームの一番下に表示される瞬間に表示されるフォームの領域を定義する方法を知りたいのですが、ページをスクロールしない限り表示されません。

エラーの表示場所を定義できますか。 EDIT過去に

Old code was here 

人々は、私は時間に1つずつエラーをチェックするためにループを作る示唆しているが、私は、PHPでこれを行うにはどのようにわからない初心者午前:ここ

は、エラーコードをチェックしています。

$errors = ''; 
    if(empty($_POST['studentName'])) 
    { 
    $errors .= "You did not enter the student name<br/>"; 
    } 

//Code to check that the Tutor Name field is completed 
    if(empty($_POST['tutorName'])) 
    { 
    $errors .="You did not select a tutor<br/>"; 
    } 

//Code to check that the Procedure field is completed 
    if(empty($_POST['procedure'])) 
    { 
    $errors .="You did not enter a procedure<br/>"; 
    } 
//Code to check that the Grade field is completed 
    if(empty($_POST['grade'])) 
    { 
    $errors .="You did not enter a grade<br/>"; 
    } 
//Code to check that the Student Reflection field is completed 
    if(empty($_POST['studentReflection'])) 
    { 
    $errors .="You did not enter a reflection<br/>"; 
    } 
//Code to check if the tick box is checked that the tutor comment is entered 
    if(!strlen($_POST['tutorComments']) && isset($_POST['alert'])) 
    { 
    $errors .="You must enter a reasan why you ticked the alert box"; 
    } 

//Code to check the password field is completed and correct 
    if (empty($_POST['password'])) 
    { 
    $errors .="You did not enter you password"; 
    } 

    if (!empty($_POST['password'])) 
    { 

//========================================== 
// ESCAPE DANGEROUS SQL CHARACTERS 
//========================================== 
function quote_smart($value, $handle) { 

    if (get_magic_quotes_gpc()) { 
     $value = stripslashes($value); 
    } 

    if (!is_numeric($value)) { 
     $value = "'" . mysql_real_escape_string($value, $handle) . "'"; 
    } 
    return $value; 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 

    $masterpass = $_POST['password']; 
    $masterpass = htmlspecialchars($masterpass); 

    //========================================== 
    // CONNECT TO THE LOCAL DATABASE 
    //========================================== 
    $user_name = "username"; 
    $pass_word = "password"; 
    $database = "name of database"; 
    $server = "server"; 

    $db_handle = mysql_connect($server, $user_name, $pass_word); 
    $db_found = mysql_select_db($database, $db_handle); 

    if ($db_found) { 

     $masterpass = quote_smart($masterpass, $db_handle); 

     $SQL = "SELECT * FROM masterpass WHERE password = $masterpass"; 
     $result = mysql_query($SQL); 
     $num_rows = mysql_num_rows($result); 

    //==================================================== 
    // CHECK TO SEE IF THE $result VARIABLE IS TRUE 
    //==================================================== 

     if ($result) { 
      if ($num_rows > 0) { 
       echo ""; 
      } 
      else { 
       $errors .= "Password was not recognised"; 
       exit(); 
      } 
     } 
     mysql_close($db_handle); 

    } 
} 
if(!empty($errors)) 
{ 
    echo '<div class="errors">' . $errors . '</div>'; 
    exit(); 
    } 

} 
+0

など、それらのログを、他の関数へのパラメータとして周りのエラー配列を渡すことができます。エラーチェックを行うPHPのセクションを与えるだけでは、この質問に答えるために必要なすべての情報が提供されるわけではありません。 – James

+0

適切なインデントを使用すると、コードの開発とデバッグが容易になります。 –

+0

私はフロントエンドエラーチェックのためのjavascriptの何らかの形式をユーザに直接使用することをお勧めします。これはちょうどPHPを使用すると非常に乱雑になることができます。 –

答えて

0

あなたのエラーをエコーすることは、それらを下に追加することです。以前の答えが示唆したように、文字列に割り当てることと、定義されたdivに印刷すること(それが空でない場合)は、どのようにプロがそれを行うのですか?

エラーを配列として定義することもできます。また、エラー処理をより細かく制御することもできます。

$errors = array(); 
if(empty($_POST['studentName'])) 
    $errors[] = "You did not enter the student name"; 

if(empty($_POST['tutorName'])) 
    $errors[] = "You did not select a tutor name."; 

//etc... 

//At the top of your page. 
if (sizeof($errors)>0) { 
    echo "<div class='errordiv'>"; 
    echo "<ul>"; 
    foreach ($errors as $err) { 
     echo "<li>".$err."</li>"; //or whatever format you want! 
    } 
    echo "</ul></div>"; 
} 

また、このフォームの全体のHTMLとPHPを提供してくれるし、私は助けることができるしてください

+1

エラーチェックブロックの最後に以下を追加しました: 'if(!_ POST ['password'])){' "パスワードが満たされているかどうかのエラーチェック"問題。残りのコードはそのブロック内で実行されています。それらを削除します。また、エラーdivを出力した直後にexit()を実行すると、そこで実行が停止します。あなたはまだあなたのフォームを表示したい、私は推測している! – soylentplaid

2

あなたは

$errors = ''; 

if(empty($_POST['studentName'])) 
{ 
    $errors .= "You did not enter the student name<br />"; 
} 

if(empty($_POST['tutorName'])) 
{ 
    $errors .= "You did not select a tutor name.<br />"; 
} 

// etc. 

ような何かをして、あなたの<form>上記の可能性があり、それがより目立つますのでCSSで.errorsスタイリング

if (!empty($errors)) 
{ 
    echo '<div class="errors">' . $errors . '</div>'; 
} 

を持っています。 $errorsがアプリケーションロジック内で空白になっている場合は、データベースへの通常の追加/更新を行い、成功ページにリダイレクトすることができます。

+0

提案に感謝します。私はそれを試みましたが、パスワードを確認するための別のフィールドがあることを追加するのを忘れました。私はこれを更新しましたが、エラーチェックはユーザーがパスワードを入力した場合にのみ発生し、この空白のままにしておくとチェックせずにデータベースにデータを送信します。上記のコードを更新して私の現在のものを表示します – Mattrsa

+0

投稿後、つまりif($ _SERVER ['REQUEST_METHOD'] == 'POST'){'(@ soylentplaidコメント)。 – stealthyninja

+1

ありがとうございます。私はこれらの投稿の助けを借りて問題を解決しました – Mattrsa