我有一个列表,人们可以在其中回答问题,每个问题都有三个使用单选按钮的可能答案。
在数据库中插入数据可以正常工作,但是现在我希望能够编辑这些列表,因此我需要显示数据库中已经填充的列表,而不是插入新列表。
正常数据没问题,但是单选按钮有问题。
我的数据库结构如下:
int
这是我当前显示单选按钮的方式(显示类别/问题,但未选中单选按钮):
wpi_info
-id
-other non important fields for this question
wpi_categories
- id
- title
- info_id (same as id of wpi_info)
wpi_questions
-id
-title
-answer
-cid (same as id of wpi_categories)
值<?PHP
$een = 1;
$twee = 2;
$drie = 3;
$getcats = 'SELECT * FROM wpi_categories WHERE info_id = "'.$conn->real_escape_string($getinfo['id']).'" ORDER BY id';
$getcatscon = $conn->query($getcats);
while($getcats = $getcatscon->fetch_assoc()){
if(!empty($getcats['title'])){
$werkplekinspectie .= '
<label class="categorytitle">'.$getcats['title'].'</label>
<div class="row">';
$getquestions = 'SELECT * from wpi_questions WHERE cid = "'.$getcats['id'].'"';
$getquestionscon = $conn->query($getquestions);
while($getquestions = $getquestionscon->fetch_assoc()){
$werkplekinspectie .= '
<div class="col-md-8">
<p class="questionclass">'.$getquestions['title'].'</p>
</div>
<div class="col-md-4">
<div class="container text-right">
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$een.'" value="ok" required>
<label class="radiotoggle" for="radio-'.$een.'"><span class="radio">Ok</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$twee.'" value="fout">
<label class="radiotoggle" for="radio-'.$twee.'"><span class="radio">Fout</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$drie.'" value="nvt">
<label class="radiotoggle" for="radio-'.$drie.'"><span class="radio">N.v.t</span></label>
</div>
</div>';
$een+=3;
$twee+=3;
$drie+=3;
}
$werkplekinspectie .= '
</div>';
}
}
echo $werkplekinspectie;
?>
,ok
,nvt
是存储在fout
的{{1}}列中的值。
对于每个单选按钮,如果答案与值匹配,则需要对其进行检查。我该怎么办?
答案 0 :(得分:0)
您可以在jquery中执行此操作,方法是检查数据库中的值并将其保留为
$('#id').prop('checked', true);
答案 1 :(得分:0)
此处输入代码以以下代码段为例。我将男性设置为默认值,可以在性别变量中添加女性
<?php $gender ='male';?>
<input type="radio" name="gender" value="male" <?php echo isset($gender) && !empty($gender) && $gender == 'male' ? 'checked' :'' ; ?> > Male<br>
<input type="radio" name="gender" value="female" <?php echo isset($gender) && !empty($gender) && $gender == 'female' ? 'checked' :'' ; ?> > Female<br>
答案 2 :(得分:0)
您只需检查答案是否匹配并输出checked
属性:
'...
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$een.'" value="ok" required ' . ($getquestions['answer'] == 'ok' ?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$een.'"><span class="radio">Ok</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$twee.'" value="fout" ' . ($getquestions['answer'] == 'fout'?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$twee.'"><span class="radio">Fout</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$drie.'" value="nvt" ' . ($getquestions['answer'] == 'nvt'?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$drie.'"><span class="radio">N.v.t</span></label>
...'
但是整个代码块很难阅读,并且随着时间的推移肯定会产生错误。
人们普遍认为,将数据访问逻辑与html混合是一个可怕的主意,但是如果您坚持维护一个庞大的旧版应用程序,则完全重构可能不可行
在这种情况下,您至少可以通过使用phps模板语法而不是庞大的字符串连接,将数据访问放在顶部,并在其下方生成html,从而使代码的维护更加容易。