抱歉,我应该更好地解释一下。我试着让它变得简单。这个表单的作用是提出一个人的详细信息,然后用户可以使用勾选框选择该人是否可以拥有某些东西(如休息时间)。因此,当加载表单时,已经为某些事项勾选了勾选框...如果这是有道理的。如果一个人已经有权休息休息。然后我在表单上加载他们的详细信息。应该已经勾选了休息时间框。
学生ID用于表单以显示在表单上选择的人员。状态也与请求相对应。它正在等待批准,批准或拒绝。
$selected_arrangement_query = "
SELECT tbl_arrangement_id, arrangement, ta.status
FROM tbl_arrangement AS ta
WHERE
tbl_student_id = $selected
我会保持这个问题的简短。发生的事情是我有一个带有勾选框的表格。用户单击文本框后,它会将数据发布到数据库,然后在选择该选项时在表单上显示。但是文本框中的勾号消失了。我想这样做,以便一旦提交数据,滴答将保留在那里。大约有40个盒子,所以我希望编码对于所有不同的排列都很长,但是如果有人可以帮助我开始,我可以进一步复制它。
这是它的开始。前几个隐藏的值就是为了得到同一个用户所以它。
<table>
<form name='counter' id='counter' method="get" >
<tr><th colspan="8">Counter arrangements</th></tr>
<input type="hidden" name="selected" value="<?php echo $selected; ?>" />
<input type="hidden" name="edited" value="1" />
<input type="hidden" name="evidenceCount" value="<?php echo $selected_evidence_Total; ?>" />
<input type="hidden" name="arrangementCount" value="<?php echo $selected_arrangement_Total; ?>" />
<td valign="top" >
<input type="checkbox" Name='arrangements[]' value='Rest Breaks' OnChange='this.form.submit();'>Rest Breaks</option>
</td>
<td valign="top" >
<input type="checkbox" Name='arrangements[]' value='Small Classroom Environment' OnChange='this.form.submit();'>Small Classroom Environment</option>
</td>
<td valign="top" >
<input type="checkbox" Name='arrangements[]' value='Coloured Overlay' OnChange='this.form.submit();'>Coloured Overlay</option>
</td>
更新
以下是已批准拒绝等的下拉框的代码。
<?php
//declare counter
$rowcount = 0;
while ($row = $selected_arrangement_result->fetch_assoc()) {
printf("<tr>");
printf("<td><input type='hidden' name='arrangementRowID%s' value='%s' />",$rowcount,$row['tbl_arrangement_id']);
printf("%s</td>",$row['arrangement']);
if($row['status']=='Awaiting Approval'){
?>
<td class="right">
<select name='astatus<?php echo $rowcount; ?>' onchange='submitForm()'>
<option value='Awaiting Approval' selected="selected">Awaiting Approval</option>
<option value='Approved'>Approved</option>
<option value='Rejected'>Rejected</option>
<option value='Rejected-No Evidence'>Rejected-No Evidence</option>
<option value='Approved on Appeal'>Approved on Appeal</option>
<option value='Approved Alternative' >Approved Alternative</option>
</select>
</td>
<?php
}elseif($row['status']=='Approved'){
?>
<td class="right">
<select name='astatus<?php echo $rowcount; ?>' onchange='submitForm()'>
<option value='Awaiting Approval'>Awaiting Approval</option>
<option value='Approved' selected="selected">Approved</option>
<option value='Rejected'>Rejected</option>
<option value='Rejected-No Evidence'>Rejected-No Evidence</option>
<option value='Approved on Appeal'>Approved on Appeal</option>
<option value='Approved Alternative' >Approved Alternative</option>
</select>
</td>
经过更多研究后,我发现了更多代码。我已修改它以满足我的需求,这样的工作会是什么? 我知道一旦完成,我将需要包括所有复选框。我还需要一个if语句,但我想先让第一个工作。
$arrangement = mysql_query("SELECT tbl_arrangement_id, arrangement FROM tbl_arrangement WHERE Id=$selected");
$row = mysql_fetch_row($arrangement);
$selected = explode(',', $row[$arrangement]);
$j=0;
for($i=0; $i<count($arrangement); $i++){
if($j<count($selected) && $selected[$j] == $arrangements[$i]){
echo $arrangements[$i]." <input type='checkbox' name='arrangements[]' value='". $arrangement[$i] ."' checked> ";
$j++;
}
else echo $arrangements[$i]." <input type='checkbox' name='arrangements[]' value='". $arrangement[$i] ."'> ";
}
答案 0 :(得分:0)
在浏览数据库查询结果时,您可以将复选框中使用的信息保存在关联数组中,并将复选框的值作为键。
<强>更新强>
如果我理解你的解释,你可以在这里实现:
<?php
//declare counter
$arrangements = [];
$rowcount = 0;
while ($row = $selected_arrangement_result->fetch_assoc()) {
$arr = str_replace(' ', '', $row["arrangement"]); // Removes spaces
$arrangements[$arr]] = true;
printf("<tr>");
printf("<td><input type='hidden' name='arrangementRowID%s' value='%s' />",$rowcount,$row['tbl_arrangement_id']);
printf("%s</td>",$row['arrangement']);
// ...
然后在复选框中,如果在关联数组中找到了框值,则可以echo
selected="selected"
:
<input type="checkbox" Name='arrangements[]' value='RestBreaks' <?php echo isset($arrangements["RestBreaks"]) ? 'checked="checked"' : ""; ?> OnChange='this.form.submit();'>Rest Breaks</input>
关联数组中的空格可能无法正常工作,因此在上面的示例中删除了input
值中的空格。