【问题标题】:Pre-populate a lot of radio button group from database从数据库中预填充大量单选按钮组
【发布时间】:2019-01-24 14:38:24
【问题描述】:

我正在做一个项目。我想从数据库中预填充数据。

HTML

<div class="question">
  <input type="radio" name="q1" value="A" <?php echo $checkedA ?>>
  <input type="radio" name="q1" value="B" <?php echo $checkedB ?>>
  <input type="radio" name="q1" value="C" <?php echo $checkedC ?>>
</div>
<div class="question">
  <input type="radio" name="q2" value="A" <?php echo $checkedA ?>>
  <input type="radio" name="q2" value="B" <?php echo $checkedB ?>>
  <input type="radio" name="q2" value="C" <?php echo $checkedC ?>>
</div>
<div class="question">
  <input type="radio" name="q3" value="A" <?php echo $checkedA ?>>
  <input type="radio" name="q3" value="B" <?php echo $checkedB ?>>
  <input type="radio" name="q3" value="C" <?php echo $checkedC ?>>
</div>
<!-- etc till let's say 30 question -->

PHP

$query="SELECT * FROM `quiz` WHERE email='$email'";
$result=mysqli_query($link,$query);
$data=mysqli_fetch_assoc($result);
for($i=1; $i<=30; $i++){
  switch($data[${"answer".$i}]{
   case "A" : $checkedA="checked"; break;
   case "B" : $checkedB="checked"; break;
   case "C" : $checkedC="checked"; break;
  }
}

那么,如何检查$data['answer1']对应的q1是否填充了数据库等数据?

【问题讨论】:

  • 你可以看看我的回答!如果还有什么,就在这里回复,我会尽力解答

标签: php html mysqli


【解决方案1】:

使用您提供的代码,可以从数据库中获取数据,然后在您的 html 中显示结果,而不是让事情变得过于复杂。要预填充您的单选按钮,您需要具备以下条件:

PHP

$query="SELECT * FROM `quiz` WHERE email='$email'";
$result=mysqli_query($link,$query);
$data=mysqli_fetch_assoc($result);

HTML

<div class="question">
  <input type="radio" name="q1" value="A" <?php echo ($data['q1'] == 'A')? 'checked' : '';  ?>>
  <input type="radio" name="q1" value="B" <?php echo ($data['q1'] == 'B')? 'checked' : '';  ?>>>
  <input type="radio" name="q1" value="C" <?php echo ($data['q1'] == 'C')? 'checked' : '';  ?>>
</div>
<div class="question">
  <input type="radio" name="q2" value="A" <?php echo ($data['q2'] == 'A')? 'checked' : '';  ?>>
  <input type="radio" name="q2" value="B" <?php echo ($data['q2'] == 'B')? 'checked' : '';  ?>>
  <input type="radio" name="q2" value="C" <?php echo ($data['q2'] == 'C')? 'checked' : '';  ?>>
</div>
<div class="question">
  <input type="radio" name="q3" value="A" <?php echo ($data['q3'] == 'A')? 'checked' : '';  ?>>
  <input type="radio" name="q3" value="B" <?php echo ($data['q3'] == 'B')? 'checked' : '';  ?>>
  <input type="radio" name="q3" value="C" <?php echo ($data['q3'] == 'C')? 'checked' : '';  ?>>
</div>

使用那段代码,它会根据来自数据库的值设置 checked 并将其显示在屏幕上。

【讨论】:

    【解决方案2】:

    示例恰好有 3 个变量用于检查($checkedA$checkedB$checkedC)。为了每个问题有3个变量,它需要一个集合的“检查”。如果您有 n 个问题,您的收藏需要 n 个成员。并且每个成员都需要 3 个成员来代表答案是否被检查,每个选项一个。

    例如: 如果 q1 的答案是 A,那么 $checked['q1'] = ['A'=&gt; "checked",'B'=&gt;"",'C'=&gt;""].

    在 php 中,如上所述为每个问题初始化一个 $checked 成员。然后更改switch 以更新对应的成员。 [之所以用这种方式初始化是因为 1)所有东西都需要在 html 中有一个值 2)checked 是一个布尔属性]

    html 将分别回显 $checked[q#]['A'] $checked[q#]['B']$checked[q#]['C']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2012-05-26
      • 1970-01-01
      • 2012-05-12
      • 2019-10-28
      • 2011-12-29
      • 1970-01-01
      • 2011-11-24
      相关资源
      最近更新 更多