2016-05-03 3 views
1

誰かが、フォームをチェックするより洗練された方法を提案することができますか?例えば、QA1が2に設定されている場合はQA1Cに値を設定し、QA1Cに値を設定しない場合はエラーを追加するなど、他のタイプのチェックが必要な場合もあります。フォームをチェックするエラーのエレガントな方法をお探しですか?

if (empty($_POST['QA1'])) {$errorMessage .= "<h1>QA1 not specified</h1>";} 
if (empty($_POST['QA2'])) {$errorMessage .= "<h1>QA2 not specified</h1>";} 
if (empty($_POST['QA3'])) {$errorMessage .= "<h1>QA3 not specified</h1>";} 
if (empty($_POST['QB1'])) {$errorMessage .= "<h1>QB1 not specified</h1>";} 
if (empty($_POST['QB2'])) {$errorMessage .= "<h1>QB2 not specified</h1>";} 
if (empty($_POST['QB3'])) {$errorMessage .= "<h1>QB3 not specified</h1>";} 
if (empty($_POST['QB4'])) {$errorMessage .= "<h1>QB4 not specified</h1>";} 
if (empty($_POST['QB5'])) {$errorMessage .= "<h1>QB5 not specified</h1>";} 
if (empty($_POST['QB6'])) {$errorMessage .= "<h1>QB6 not specified</h1>";} 
if (empty($_POST['QB7'])) {$errorMessage .= "<h1>QB7 not specified</h1>";} 
if (empty($_POST['QB8'])) {$errorMessage .= "<h1>QB8 not specified</h1>";} 
if (empty($_POST['QB9'])) {$errorMessage .= "<h1>QB9 not specified</h1>";} 
if (empty($_POST['QC1'])) {$errorMessage .= "<h1>QC1 not specified</h1>";} 
if (empty($_POST['QD1'])) {$errorMessage .= "<h1>QD1 not specified</h1>";} 
if (empty($_POST['QD2'])) {$errorMessage .= "<h1>QD2 not specified</h1>";} 
if (empty($_POST['QD3'])) {$errorMessage .= "<h1>QD3 not specified</h1>";} 
if (empty($_POST['QE1'])) {$errorMessage .= "<h1>QE1 not specified</h1>";} 
if (empty($_POST['QE2'])) {$errorMessage .= "<h1>QE2 not specified</h1>";} 
if (empty($_POST['QF1'])) {$errorMessage .= "<h1>QF1 not specified</h1>";} 
if (empty($_POST['QF2'])) {$errorMessage .= "<h1>QF2 not specified</h1>";} 
if (empty($_POST['QF3'])) {$errorMessage .= "<h1>QF3 not specified</h1>";} 
if (empty($_POST['QF4'])) {$errorMessage .= "<h1>QF4 not specified</h1>";} 
if (empty($_POST['QF5'])) {$errorMessage .= "<h1>QF5 not specified</h1>";} 
if (empty($_POST['QG1'])) {$errorMessage .= "<h1>QG1 not specified</h1>";} 
if (empty($_POST['QG2'])) {$errorMessage .= "<h1>QG2 not specified</h1>";} 
if (empty($_POST['QG3'])) {$errorMessage .= "<h1>QG3 not specified</h1>";} 
if (empty($_POST['QG4'])) {$errorMessage .= "<h1>QG4 not specified</h1>";} 
if (empty($_POST['QH1'])) {$errorMessage .= "<h1>QH1 not specified</h1>";} 
if (empty($_POST['QI1'])) {$errorMessage .= "<h1>QI1 not specified</h1>";} 
if (empty($_POST['QI2'])) {$errorMessage .= "<h1>QI2 not specified</h1>";} 
if (empty($_POST['QJ1'])) {$errorMessage .= "<h1>QJ1 not specified</h1>";} 
if (empty($_POST['QJ2'])) {$errorMessage .= "<h1>QJ2 not specified</h1>";} 
if (empty($_POST['QJ3'])) {$errorMessage .= "<h1>QJ3 not specified</h1>";} 
+0

配列を使用してループします。 [HTMLフォームで配列を作成するにはどうすればいいですか?](http://php.net/manual/en/faq.html.php#faq.html.arrays) –

答えて

1

my_formのようなあなたの入力を名前にしてみてください[QG2]my_form [QA1]、... では、コントローラでmy_formを配列として扱い、エラーを処理するのが非常に簡単になります:

<?php 
    $myforms = $_POST['my_form']; 
    foreach ($myforms as $key => $mf) { 
    if (empty($mf)) {$errorMessage .= "<h1>$key not specified</h1>";} 
    } 
+0

これは動作しますが、別の方法で検証する他のフォーム要素がない場合のみです。 –

+1

他の人がいても、このように扱いたい入力の名前を変更するだけです。他の入力に対しては、my_second_form []というタグを使用することができます! –

+0

応答が遅れますが、これは私が行ったことです、ありがとう –

-1

フォーム検証にはjavascriptを使用することを検討してください。アイブ氏はvalidate.jsを使用して、このような https://rickharrison.github.io/validate.js/

+4

私のjavascriptと私が欲しいものを入力してください。クライアント側とサーバー側の両方で入力を検証することが常にベストプラクティスです。 – Jerodev

+0

クライアント側はクライアントのためのものです。これ以上何もない。 – Derek

+0

はい、私はjavascriptも使用していますが、それほど気が利いているわけではありません。 –

2

何か文句を傾ける:

// Required field names 
    $required = array('QA1', 'QA2', 'QA3', .....); 

    // Loop over field names, make sure each one exists and is not empty 
    $error = false; 
    foreach($required as $field) { 
     if (empty($_POST[$field])) { 
     $error = $field; 
     break; 
     } 
    } 

    if ($error) { 
     echo "All fields are required." . $field; 
    } else { 
     echo "Proceed..."; 
    } 
1

が、これはあなたを助けることができるかもしれませんが、あなたは

をチェックする必要がない場合は、あなたが他のポスト変数を除外する必要がありますがあなたのHTMLフォームで
if(isset($_POST)) { 
    foreach($_POST as $post) { 
     if(empty($post)) { 
      $errorMessage .= "<h1>".$post."not specified</h1>"; 
     } 
    } 

} 
関連する問題