当值与数据库中的值匹配时,如何显示单选按钮为选中状态

时间:2019-01-22 11:24:29

标签: php loops radio

我有一个列表,人们可以在其中回答问题,每个问题都有三个使用单选按钮的可能答案。

在数据库中插入数据可以正常工作,但是现在我希望能够编辑这些列表,因此我需要显示数据库中已经填充的列表,而不是插入新列表。

正常数据没问题,但是单选按钮有问题。

我的数据库结构如下:

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; ?> oknvt是存储在fout的{​​{1}}列中的值。

对于每个单选按钮,如果答案与值匹配,则需要对其进行检查。我该怎么办?

3 个答案:

答案 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,从而使代码的维护更加容易。