在编辑页面中显示选中的单选按钮

时间:2012-06-27 01:29:21

标签: php mysql

在我的编辑页面上,如果$ 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';
  }

4 个答案:

答案 0 :(得分:2)

像这样的东西

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' : ''));

的工作原理。它使用三元运算符根据'CHECKED'的值将$subscribedrips或空字符串插入到输入标记中。

您也可以采用更详细的方式,例如使用开关:

$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标记及其属性。使用我的方法,整个字符串将突出显示相同。 Here is a screenshot显示了记事本++如何突出显示这两种方法。

    正如您所看到的,valentinas的方法会产生更加丰富多彩的显示效果,有助于识别和追踪错误。

如果你想有条件地打印整个标签,你的代码必须如何格式化有一些细微的差别,但它们并不值得讨论 - 在我看来,最大的是语法高亮。

答案 1 :(得分:0)

可能会在值附近缺少“”吗?

if ($subscribedrips == "Yes") {

答案 2 :(得分:0)

也许是这样的:

<?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标签中取出标记 - 使其更具可读性。

答案 3 :(得分:0)

上面提到的所有代码都可以工作,但它们看起来很大或没有线路更多,如果我们使用如上所述可能有很好的方法 我有一个更好,更简单的方法来显示页面中单选按钮的值

添加形式的代码:

<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>

上面的粗体线对于将单选按钮的值带到编辑表单

非常重要