2012-06-27 50 views
0

在我的编辑页面上,如果$ subscribedrips等于Yes或No,我将如何显示正确的单选按钮?以下是我已经和它不工作:在编辑页面显示所选单选按钮

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'; 
    } 

回答

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

关于你的最后一个问题,我们的方法之间的区别很简单,但再一次(ahh!)它的风格选择,都实现了相同的目标,这两种方法都用于“生产”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的方法会带来更丰富多彩的显示效果,从而有助于识别和追踪错误。

有一些细微的差别,当涉及到你的代码是如何拥有,如果你要有条件地打印整个标签进行格式化,但他们不值得谈论 - 最大的,在我看来, ,是语法突出显示。

+0

hmmm..this不检查正确的单选按钮,重要的是,没有为检查时,是应该的。 'printf('是'。“\ n”, ($ subscribedrips =='Yes'?'CHECKED':'') ); printf('否'。“\ n”, ($ subscribedrips =='No'?'CHECKED':'') ); ' – Josh

+0

@Josh,你确定吗?这个对我有用。你可以发布你的所有代码吗? – jedwards

+0

工作!谢谢! – Josh

0

它是否会在值附近丢失“”?

if ($subscribedrips == "Yes") { 
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标签 - 使它更具可读性。

+0

谢谢,这样做和jedwards做的方式有什么区别?我在学! – Josh

+0

主要区别在于,在我的示例中,大多数IDE都将突出显示:HTML和PHP。在jedwards中,示例HTML被困在PHP字符串中,并且没有语法突出显示。 – valentinas

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> 

以上粗线是使单选按钮的值来编辑表单