1

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

4 回答 4

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

您还可以以更详细的方式进行操作,例如使用 switch:

$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标签及其属性。使用我的方法,整个字符串将被突出显示。 这是一个屏幕截图,显示了 notepad++ 如何突出显示这两种方法。

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

如果您想有条件地打印整个标签,那么在如何格式化您的代码时会有一些细微的差异,但它们并不值得讨论——在我看来,最大的差异是语法突出显示。

于 2012-06-27T01:42:18.053 回答
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>

以上粗体线对于将单选按钮的值带到编辑表单中很重要

于 2013-02-16T05:49:21.957 回答
0

它会在值附近缺少“”吗?

if ($subscribedrips == "Yes") {
于 2012-06-27T01:42:45.567 回答
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 标记中提取标记 - 使其更具可读性。

于 2012-06-27T01:59:21.900 回答