2011-06-22 11 views
2

私がしようとしているのは、それぞれの回答に対してselect文を実行してquestionID = $ iとuserID = $ userIDのデータベース内の回答を選択することです。私は何が欠けているか、私は右で何かを逃していないか分からない?また、両方のフィールドには値がありますが、どちらのフォームフィールドにも入力する必要があるというエラーメッセージが表示されます。私は、あなたがこれでエラーをチェックしている伝えることができるものから、フォーム処理

<?php 
        $i = 1; 
        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
        ?> 
         <dl> 

          <dt style="width: 190px;"><label for="answer[<?php echo $row['id']; ?>]"><?php echo $row['question'] ?></label></dt> 
          <dd><input type="text" name="answer<?php echo $i ?>[<?php echo $row['id']; ?>]" size="54" /></dd> 

         </dl> 
        <?php 
        ++$i; 
        } 
        ?> 

    if (empty($_POST['answer1'][$i]) || trim($_POST['answer1'][$i])=="") {$errors = "yes";} 
if (empty($_POST['answer2'][$i]) || trim($_POST['answer2'][$i])=="") {$errors = "yes";} 

// Error checking, make sure all form fields have input 
if ($errors == "yes") { 

// Not all fields were entered error 
$message = "You must enter values to all of the form fields!"; 

$output = array('errorsExist' => true, 'message' => $message); 

} else { 

$userID = mysqli_real_escape_string($dbc,$_POST['userID']); 
$answer1 = mysqli_real_escape_string($dbc,$_POST['answer1'][$i]); 
$answer2 = mysqli_real_escape_string($dbc,$_POST['answer2'][$i]); 

$query = "SELECT * FROM manager_users_secretAnswers WHERE questionID = '".$questionID."' AND userID = '".$userID."'"; 
$result = mysqli_query($dbc,$query); 
echo $query; 

答えて

0

empty($_POST['answer1'][$i]); 

ここでの問題は、「$ i」は、そのスクリプトでは、内の行数を等しくするということですあなたはwhileループでそれを使っていたので、データベース+1。だからチャンスは常に空になり、あなたはいつもエラーを得るでしょう。その前に

$error = false; 
foreach ($_POST['answer1'] as $answer) { 
    if ($error === true) break; // we already have an error, why continue? 
    if (empty($answer)) $error = true; 
} 

を、そしてもっと重要なのは、フォームの名前があることを表示されます。より多くのは、単に、(これを行うには多くの方法は、もちろん、あります)各フィールドのforeachループを使用することを行うには

紛らわしい名前。あなたはそれが提出されていますとき、フォームの構造を見ることができるようにするためにPOST変数をダンプしたいと思うでしょうデバッグ目的のために

answer1[ROW_ID] 
answer2[ROW_ID] 
answer3[ROW_ID] 
answer4[ROW_ID] 
//etc... 

die(print_r($_POST, true)); 

name=answerNUM[ROW_ID] 

あなたの結果は、このなります

あなたはすべての価値を取り戻し、あなたのコードとそれを比較することができます。その結果を投稿したいのであれば、私は答えを広げることができます。