【问题标题】:radio button group separated from others using php while loop dosn't work单选按钮组使用php与其他人分开,而循环不起作用
【发布时间】:2018-01-14 02:51:18
【问题描述】:

我正在使用问题页面,每个用户将向他显示 2 个或更多问题每个问题有 4 个答案和 4 个(单选按钮),每个问题必须与其他问题分开,这基本上意味着单选按钮组必须像这样,我的问题就像下面的图片(我不能全部发布)

我用过这个代码(没用)

$sql2 = "SELECT * FROM questions WHERE subject = 'web lang' LIMIT 5 ";
$result2 = mysqli_query($conn,$sql2);

              echo "<form action='' method='POST'>";

                  while ($row2 = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {

                    echo "<div align='center'>
                    <table>

                      <thead>
                      <tr >
                        <th >Q & A</th>
                        <th>Choose</th>
                      </tr>
                      </thead>
                      <tbody>
                      <tr>
                        <td>".$row2['question']."</td>
                        <td></td>
                      </tr>
                      <tr>
                        <td>".$row2['ans1']."</td>
                        <td><input type='radio' name='chk' value='1' >
                      </tr>
                      <tr>
                        <td>".$row2['ans2']."</td>
                        <td><input type='radio' name='chk' value='2' >
                      </tr>
                      <tr>
                        <td>".$row2['ans3']."</td>
                        <td><input type='radio' name='chk' value='3' >
                      </tr>
                      <tr>
                        <td>".$row2['ans4']."</td>
                        <td><input type='radio' name='chk' value='4' >
                      </tr>
                      </tbody>
                    </table><br> <br>
                    </div>
                    ";

                  }
                  echo "<input type='submit' name='submit'>
                  </form>";
                  if (isset($_POST['submit'])) {

                      $chk = $_POST['chk'];

                      Echo $chk;

                  }

即使我这样回应

print_r(array_values($chk));

如果我每次无法获得名称时使用不同的名称,我在 while 循环中使用此代码,它可以工作,但如何获取其他表的值?

$new = 0;
<input type='radio' name='chk".$new."' value='some value' >
$new++;

【问题讨论】:

  • 您好,我可以帮助您,但无法理解其中的实际问题。
  • 你能把这个查询结果发给SELECT * FROM questions WHERE subject = 'web lang' LIMIT 5
  • 用户必须为每个单独的问题选择 1 个单选按钮,当他点击提交按钮时,它应该给我他选择的所有答案(但它不会这样做)
  • 查询运行良好,我的问题是我如何知道选中的单选按钮的名称(超过 2 组取决于 whlie 循环)
  • 那么你需要把每个单选按钮分开吗?

标签: php mysqli while-loop radio-button


【解决方案1】:

试试这个:

$sql2 = "SELECT * FROM questions WHERE subject = 'web lang' LIMIT 5 ";
$result2 = mysqli_query($conn,$sql2);

              echo "<form action='' method='POST'>";
               $i=0;
                  while ($row2 = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {

                    echo "<div align='center'>
                    <table>

                      <thead>
                      <tr >
                        <th >Q & A</th>
                        <th>Choose</th>
                      </tr>
                      </thead>
                      <tbody>
                      <tr>
                        <td>".$row2['question']."</td>
                        <td></td>
                      </tr>
                      <tr>
                        <td>".$row2['ans1']."</td>
                        <td><input type='radio' name='chk".$i."' value='1' >
                      </tr>
                      <tr>
                        <td>".$row2['ans2']."</td>
                        <td><input type='radio' name='chk".$i."' value='2' >
                      </tr>
                      <tr>
                        <td>".$row2['ans3']."</td>
                        <td><input type='radio' name='chk".$i."' value='3' >
                      </tr>
                      <tr>
                        <td>".$row2['ans4']."</td>
                        <td><input type='radio' name='chk".$i."' value='4' >
                      </tr>
                      </tbody>
                    </table><br> <br>
                    </div>
                    ";
                   $i++;
                  }
                  echo "<input type='submit' name='submit'>
                  </form>";
                  if (isset($_POST['submit'])) {

                      $chk = $_POST['chk'];

                      Echo $chk;

                  }

【讨论】:

  • 在您的发布请求中,您应该会看到已发送的“chk”数量
  • 我之前做过,但它仍然是一个问题,那就是(我怎样才能得到发布的名字?我应该像这样使用`$chk = $_POST['chk'+$i]; ` 和 echo $chk+$i; ??
  • 您应该能够从 $_POST 变量访问它们:foreach ($_POST as $param_name =&gt; $param_val) { echo "Param: $param_name; Value: $param_val&lt;br /&gt;\n"; }
  • 我会试试你的代码,我会告诉你它是否有效,谢谢
【解决方案2】:

假设您有一个与每个问题相关联的 questionID 列,请按以下方式更改您的 while 循环,

// your code
echo "<form action='' method='POST'>";
while ($row2 = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {
    ?>
    <div align='center'>
    <table>
        <thead>
            <tr >
                <th >Q & A</th>
                <th>Choose</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><?php echo $row2['question']; ?></td>
                <td></td>
            </tr>
            <tr>
                <td><?php echo $row2['ans1']; ?></td>
                <td><input type='radio' name='chk[<?php echo $row2['quesrtionID']; ?>]' value='1' >
            </tr>
            <tr>
                <td><?php echo $row2['ans2']; ?></td>
                <td><input type='radio' name='chk[<?php echo $row2['quesrtionID']; ?>]' value='2' >
            </tr>
            <tr>
                <td><?php echo $row2['ans3']; ?></td>
                <td><input type='radio' name='chk[<?php echo $row2['quesrtionID']; ?>]' value='3' >
            </tr>
            <tr>
                <td><?php echo $row2['ans4']; ?></td>
                <td><input type='radio' name='chk[<?php echo $row2['quesrtionID']; ?>]' value='4' >
            </tr>
        </tbody>
    </table>
    <br> <br>
    </div>
    <?php
}
echo "<input type='submit' name='submit'>
</form>";
// your code

稍后当用户选择单选选项并点击提交按钮时,通过以下方式获取问题 ID 和相应的(给定)答案,

if (isset($_POST['submit'])) {
    foreach($_POST['chk'] as $questionID => $answer){
        // $questionID is the question ID and $answer is
        // the corresponding given answer of that quesrtion
    }
}

【讨论】:

  • 哇另一个完美的答案:),谢谢伙计,这正是我所寻求的,但我可以将这些答案插入表格吗?我应该像这样使用$AnsSQL = "INSERT INTO students (id, subject, question, answer) VALUES (null, 'web lang', '$id', '$answer')"; if (mysqli_query($conn, $AnsSQL)) { echo "sent"; }
  • @MrB 是的,你当然可以这样做。但是,您应该将 id 列设为AUTO INCREMENT。这样您就不必在查询中明确提及,只需执行$AnsSQL = "INSERT INTO students (subject, question, answer) VALUES ('web lang', '$id', '$answer')"; if (mysqli_query($conn, $AnsSQL)) { echo "sent"; }
猜你喜欢
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2016-09-27
  • 2013-06-22
  • 2014-04-29
  • 2017-06-06
  • 2018-12-31
相关资源
最近更新 更多