从数据库中预填充很多单选按钮组

时间:2019-01-24 14:38:25

标签: php html mysqli

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

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是否填充了数据库中的数据等?

2 个答案:

答案 0 :(得分:0)

示例中恰好有3个要检查的变量($checkedA$checkedB$checkedC)。为了每个问题有3个变量,它们需要一个“支票”集合。如果您有 n 个问题,则您的收藏需要 n 个成员。这些成员中的每个成员都需要3个成员,代表是否检查了答案,每个选项一个。

例如: 如果q1的答案是A,则  $checked['q1'] = ['A'=> "checked",'B'=>"",'C'=>""]

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

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

答案 1 :(得分:0)

使用您提供的代码,可以从数据库中获取数据,然后在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 并将其显示在屏幕上。