POST

2016-09-14 9 views
0

に変数として名を取得し、私はDBを持って、このDBに私はテーブルと呼ばれる質問があり、その後、別のテーブルと呼ばq_options。私のコードでは、各質問の質問とオプションが表示されます。オプションは常にラジオのBTNです。ラジオのBTNの名前にquestionIdを割り当てます。POST

私のDBには届かない部分があります。私はprint_r私のPOST私は割り当てられた番号のフィールドが表示されていることがわかりますが投稿後に$qAnswer = $_POST[$optionsQID];から取得できません。

私は引用符で試してみましたし、引用符なしで、私はまた、変数と一緒にラジオBTN名に追加すると識別子を試みたが、私はまだそのフィールドの値を得ることはありません。

私はまた、ループの間に、第2の内側全体

if (isset($_POST["answerQuestion"])){ 
      $question = $_POST["questionID"]; 
      $qAnswer = $_POST[$optionsQID];  

      $sql = "INSERT INTO answers (id, q_id, answer) 
      VALUES (NULL, '$question', '$qAnswer')"; 

      echo "Thanks for your input"; 

      if(!mysqli_query($link, $sql)) { 
       echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
      } 
     } 

を移動し、これは$ qAnswerの正しい値を送信しますが、その後も質問のそれぞれのレコードを作成します。

これは私のコード

<?php 
    if (isset($_POST["answerQuestion"])){ 
     $question = $_POST["questionID"]; 
     $qAnswer = $_POST[$optionsQID];  

     $sql = "INSERT INTO answers (id, q_id, answer) 
     VALUES (NULL, '$question', '$qAnswer')"; 

     echo "Thanks for your input"; 

     if(!mysqli_query($link, $sql)) { 
      echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
     } 
    } 
    ?> 
    <?php $questionsResult = $link->query("SELECT * FROM questions"); 
    while($row = mysqli_fetch_array($questionsResult)){ 
     $questionID = $row['id']; 
     $question = $row['question']; 

     ?> 
     <div style = "margin: 20px 10%; padding: 50px 10%; width: 60%; border: 1px solid #444444;"> 
      <form role="form" action = "" method="post" id="answerForm" name = "answerForm"> 
       <h3><?php echo $question; ?></h3> 
       <input type = "hidden" name = "questionID" value = "<?php echo $questionID; ?>"> 
       <?php 

       $optionsResult = $link->query("SELECT * FROM q_options WHERE q_id = $questionID"); 
       while($optionsRow = mysqli_fetch_array($optionsResult)){ 
        $optionsID = $optionsRow['id']; 
        $optionsQID = $optionsRow['q_id']; 
        $option = $optionsRow['options']; 
        ?> 
        <div style = "padding: 5px 0;"> 
         <input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>"> <?php echo $option; ?> 
        </div> 
        <?php 
       } 
       ?> 
       <button type="submit" name = "answerQuestion">Send Answer</button> 
      </form> 
     </div> 
     <?php 
    } 

    ?> 
+1

。引用符のポイントは何ですか? –

+0

変数 '$ optionsQID'がISSET内で定義されていません($ _ POST [「answerQuestion」])あなたは後でゴマそれを宣言していないため、セクション。 'error_reporting(E_ALL);でファイルの先頭にエラー報告を有効にします。 ini_set( 'はdisplay_errors' が、1); ' – drew010

+0

I追加しなければならないこと私が移動した場合、全体IF(ISSET($ _ POST [ "answerQuestion"])){]が$ qAnswerの値をポストするループ間に、第2内部ここでの問題は、それがこれらの余分なレコードがNULL値を持つことになりますにもかかわらず、それぞれの質問 – Alex

答えて

0

可能性がここに順番に私がやったことですこれを働かせて移動してください。少なくとも、私は概念の証明を終えている間。

すべての変数はPOSTで渡された値を取得するので、私の質問にはループ内のif (isset($_POST["answerQuestion"])){が移動しました。これは、応答されなくてもすべての質問のレコードを作成するという問題を引き起こしますユーザーによって。私はこの新しい問題を、回答値なしで余分なレコードを削除することで解決します。それは汚れた解決策ですが、誰かが私にそれを行うためのより良い方法を与えるまで、私は今それと一緒に行く少しの時間がかかります。あなたは `変数NAME`と`変数content`は、2つの異なるものであることを見ていないように見える@TheCodesee

0

では、ローカル(XAMPPを使用して)、またはホストのオンライン上のいずれかのサーバー上でスクリプトを実行していることを確認しています。数日前に私のPHPファイルへの私のAjaxリクエストからのPOSTデータと同様の問題があり、数時間のグーグルでそれを解決しました。私が間違っていることが、あなたがサーバー上で実行されていることを確認してください(あなたが無料のライブホスト上で試してみたい場合は、000webhost使用することができます)

リンク https://www.000webhost.com/ https://www.apachefriends.org/index.html

+0

私はMAMP上で実行していると、すべてが私は渡すことはできませんこの1つの変数を除き、作品のレコードを作成しますです。ありがとう – Alex