2016-09-14 57 views
0

我有一个DB,在这个DB中有一个叫做question的表,然后是另一个叫做q_options的表。我的代码带来了问题,然后提出了每个问题的选项。选项始终是无线电BTN,我将questionId分配给无线电BTN的名称。在POST上检索名称作为变量

<input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>"> 

那部分权利是我无法得到我的数据库。当我print_r我的POST时,我可以看到已分配号码的字段已发布,但我无法在提交后从$qAnswer = $_POST[$optionsQID];中检索它。

我试过用引号和没有引号,我也尝试添加和标识符的无线电BTN名称与变量,但我仍然没有得到该字段的值。

我也感动了整个

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); 
      } 
     } 

第二while循环中,这将$ 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

@TheCodesee你似乎没有看到'variable name'和'variable content'是两个不同的东西。什么引号? –

+0

变量'$ optionsQID'未在isset($ _ POST ['answerQuestion'])部分中定义,因为您稍后不会声明它。用error_reporting(E_ALL)在文件顶部启用错误报告; ini_set('display_errors',1);' – drew010

+0

我必须补充说,如果我移动整个if(isset($ _ POST [“answerQuestion”])){]在第二个while循环内,它会发布$ qAnswer这里的问题是它会为每个问题创建一个记录,即使这些额外的记录将有价值NULL – Alex

回答

0

这里就是我为了做让这个工作继续下去。至少在我完成概念证明的时候。

我把if (isset($_POST["answerQuestion"])){提到了我的问题中,因为所有的变量都是通过POST定义的,所以这会产生一个问题,即使它们没有被回答,它也会为每个问题创建一个记录由用户。我通过删除那些没有答案值的额外记录来解决这个新问题。这是一个肮脏的解决方案,但现在我只需要很少的时间,直到有人给我一个更好的方式来做到这一点。

0

确保你的服务器是本地(使用XAMPP)或主机在线上运行的脚本。前几天我遇到了一个类似的问题,那就是从我的Ajax请求到我的PHP文件的POST数据,并且经过数小时的搜索后解决了它。我可能是错的,但只是确保你的服务器上运行它(如果你想尝试免费即时主机上可以使用的000webhost)

链接 https://www.000webhost.com/ https://www.apachefriends.org/index.html

+0

我在MAMP上运行,除了这个变量我无法通过所有工作。谢谢 – Alex