我有一个表单供用户更新他们希望提供服务的区域(最多4个)。该表单允许用户更新数据库中的服务区域。使用strpbrk()
我可以在页面加载时成功检查其当前区域,但如果表单验证失败,则会重新检查原始复选框。表格包含132个区域。
查询返回:$row['location'] = "cityone.city two."
形式:
<input type="checkbox" value="Accomack" name="T_ordernum[Accomack]" <?php if(isset($_POST['T_ordernum']) && is_array($_POST['T_ordernum']) && in_array('Accomack', $_POST['T_ordernum'])) echo 'checked="checked"'; ?> />
<label>Accomack</label><br/>
//repeated for all 132 areas
我已经在其他表单上完成了这个...用户可以查看和更新他们的信息,如果验证失败,则会回显他们的编辑,但不是来自数组。有没有人有任何建议?
答案 0 :(得分:0)
有点长,但我明白了。我将查询结果放入包含explode()
的数组中,并使用in_array()
检查数组中的区域:
$z = explode('.',$row['territories']);
if (in_array("Accomack",$z)){$z1 = "checked";}
if (in_array("Albemarle",$z)){$z2 = "checked";}
if (in_array("Alexandria",$z)){$z3 = "checked";}
// continue for remaining areas
我将PHP
从表单输入移动到POST
验证:
if(isset($_POST['T_ordernum']) && is_array($_POST['T_ordernum']) && in_array('Accomack', $_POST['T_ordernum'])){$z1 = "checked";}else{$z1 = '';}$_POST['T_ordernum'])){$z1 = "checked";}else{$z1 = '';}
if(isset($_POST['T_ordernum']) && is_array($_POST['T_ordernum']) && in_array('Albemarle', $_POST['T_ordernum'])){$z2 = "checked";}else{$z2 = '';}
if(isset($_POST['T_ordernum']) && is_array($_POST['T_ordernum']) && in_array('Alexandria', $_POST['T_ordernum'])){$z3 = "checked";}else{$z3 = '';}
//continue for remaining areas
并在适当时回显“检查”或“输入”:
<input type="checkbox" value="Accomack" class="other" name="T_ordernum[Accomack]" <?php echo $z1;?> />
<label class="left">Accomack</label><br/>
<input type="checkbox" value="Albemarle" class="other" name="T_ordernum[Albemarle]" <?php echo $z2;?> />
<label class="left">Albemarle</label><br/>
<input type="checkbox" value="Alexandria" class="other" name="T_ordernum[Alexandria]" <?php echo $z3;?> />
<label class="left">Alexandria</label><br/>
//continue for remaining areas
:d