Php 比较值后返回选择控件的选定项
我试图在不使用模板框架的情况下从html中删除尽可能多的代码,我不确定为什么没有返回Php 比较值后返回选择控件的选定项,php,Php,我试图在不使用模板框架的情况下从html中删除尽可能多的代码,我不确定为什么没有返回'selected'来定义选择框选项的'selected'$row\u status填充选项ok,并且$status已分配值 我在这方面做得太差了吗 <select id='status'> <option>Please Select</option> <?php while($row_status = mysqli_fetch_assoc($
'selected'
来定义选择框选项的'selected'
$row\u status
填充选项ok,并且$status
已分配值
我在这方面做得太差了吗
<select id='status'>
<option>Please Select</option>
<?php while($row_status = mysqli_fetch_assoc($results_status)): ?>
<option <?php sel($row_status['list_value'],$status)?> > <?php echo $row_status['list_value'] ?> </option>
<?php endwhile; ?>
</select>
function sel($rs, $status){
if ($rs==$status){
return "selected";
}
}
请选择
功能选择($rs$status){
如果($rs==$status){
返回“已选择”;
}
}
您只返回一个值,不回显它
<?php echo sel(...); ?>
通过使用
sprintf()
并通过其参数传递条件和值,可以简化代码:
while ($row_status = mysqli_fetch_assoc($results_status)) {
echo sprintf('<option%s>%s</option>',
$row_status['list_value'] == $status ? ' selected' : '',
htmlspecialchars($row_status['list_value'], ENT_QUOTES, 'UTF-8')
);
}
while($row\u status=mysqli\u fetch\u assoc($results\u status)){
回显sprintf(“%s”,
$row\U status['list\U value']==$status?'selected':'',
htmlspecialchars($row_status['list_value'],ENT_引号,'UTF-8')
);
}
我还添加了正确的HTML转义。非常好的反馈,谢谢。当试图将html和php代码块分开时,使用sprintf()替代方案是否会弄乱局面?我知道这个主题每个人都有“个人”偏好,如果和什么时候做模板,我决定通过在所有东西周围使用php标记来达到中间点……尽管不可能有其他人会做设计工作……但请记住,我不知道我的设计将是什么!我认为代码清晰应该是指导原则。如果你的设计师需要理解HTML,我会选择一个模板引擎,比如PHPTAL。
while ($row_status = mysqli_fetch_assoc($results_status)) {
echo sprintf('<option%s>%s</option>',
$row_status['list_value'] == $status ? ' selected' : '',
htmlspecialchars($row_status['list_value'], ENT_QUOTES, 'UTF-8')
);
}