在我的编辑页面上,如果 $subscribedrips 等于是或否,我将如何显示正确的单选按钮?这是我所拥有的,它不起作用:
if ($row['subscribedrips'] == Yes) {
echo
'<input type="radio" name="subscribedrips" value="Yes" CHECKED /> Yes
<input type="radio" name="subscribedrips" value="No" /> No';
}
elseif ($row['subscribedrips'] == No) {
echo
'<input type="radio" name="subscribedrips" value="Yes" /> Yes
<input type="radio" name="subscribedrips" value="No" CHECKED/> No';
}
elseif (empty($row['subscribedrips'])) {
echo
'<input type="radio" name="subscribedrips" value="Yes" CHECKED/> Yes
<input type="radio" name="subscribedrips" value="No" /> No';
}
像这样的东西
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."'n",
($subscribedrips == 'Yes' ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."'n",
($subscribedrips == 'No' ? 'CHECKED' : ''));
工程。 它使用三元运算符根据 $subscribedrips
的值将'CHECKED'
或空字符串插入输入标记。
你也可以用更详细的方式做,例如使用开关:
$sel_y = '';
$sel_n = '';
switch($subscribedrips)
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."'n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."'n", $sel_n);
真的是个人喜好。
更新的代码段 1
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."'n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'Yes') ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."'n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'No') ? 'CHECKED' : ''));
更新的代码段 2
$sel_y = '';
$sel_n = '';
if(array_key_exists('subscribedrips', $row))
{
switch($row['subscribedrips'])
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."'n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."'n", $sel_n);
关于你的最后一个问题,我们方法之间的区别非常简单,但再一次(啊!)这是一种风格选择,两者都实现了相同的目标,两种方法都用于"生产"PHP代码。
我的示例在 PHP 中构建整个输入标签并打印出来。 Valentinas的方法从PHP字符串中提取静态文本,并将其直接放入HTML中。
例如,以下行将全部产生相同的输出:
<?php printf("<strong>%s</strong>", $some_string); ?>
<?php echo "<strong>$some_string</strong>"; ?>
<?php echo "<strong>".$some_string."</strong>"; ?>
<strong><?php echo $some_string; ?></strong>
我怀疑这两种方法之间是否有任何显着的性能差异,但我会强调一个外观差异。
语法突出显示 - 如果您使用具有语法突出显示功能的编辑器,Valentinas的方法将允许语法突出显示器适当地突出显示
input
标签及其属性。 使用我的方法,整个字符串将突出显示相同。 下面是一个屏幕截图,显示了记事本++如何突出显示这两种方法。如您所见,Valentinas的方法导致显示更加丰富多彩,这可以帮助识别和跟踪错误。
有条件地打印整个标签,那么关于如何格式化代码时,有一些微妙的差异,但它们并不值得谈论 - 在我看来,最大的是语法突出显示。
值附近是否缺少"?
if ($subscribedrips == "Yes") {
也许是这样的:
<?php $subscribedrips = $row['subscribedrips']; ?>
<input type="radio" name="subscribedrips" value="Yes" <?php echo ($subscribedrips == 'Yes') ? "checked" : "" ; ?>/> Yes
<input type="radio" name="subscribedrips" value="No" <?php echo ($subscribedrips == 'No') ? "checked" : "" ; ?>/> No
我喜欢从 PHP 标签中删除标记 - 使其更具可读性。
介绍的所有代码都可以工作,但它们看起来很大或没有.of line更多,如果我们像上面这样使用,可能会有很好的方法我有一种更好更简单的方法来显示页面中单选按钮的值
添加形式的代码:
<td>Gender</td>
<td><input type="radio" name="emp_gender" id="emp_gender" value="M" />Male
<input type="radio" name="emp_gender" id="emp_gender" value="F" />Female</td>
现在,如果要编辑性别字段,则必须将先前选择的值带到
为此,我的代码是
<td>Gender</td>
<td><input type="radio" name="emp_gender" id="emp_gender" value="M" <?php echo ($emp_gender == 'M')? "CHECKED" : " " ?> />Male
<input type="radio" name="emp_gender" id="emp_gender" value="F" <?php echo ($emp_gender == 'F')? "CHECKED" : " " ?> />Female</td>
上面的粗体行对于将单选按钮的值引入编辑窗体非常重要