【问题标题】:PHP and Radio ButtonsPHP 和单选按钮
【发布时间】:2016-07-11 08:07:53
【问题描述】:

有没有更好或更短的方法来做到这一点?我正在尝试根据从数据库字段中检索到的数据检查单选按钮??

<?php

          $ck2 = $objResult["MOV"];

          if ($ck2 == "Y") {

          echo "<input id='x1' type='radio' name='movie' value='Y' checked='checked'><label for=''x1'>Yes</label>";
          echo "</div>";
          echo "<div>";
          echo "<input id='x2' type='radio' name='movie' value='N'><label for=''x2'>No</label>";

          } elseif ($ck2 == "N") {

          echo "<input id='x1' type='radio' name='movie' value='Y'><label for=''x1'>Yes</label>";
          echo "</div>";
          echo "<div>";
          echo "<input id='x2' type='radio' name='movie' value='N' checked='checked'><label for=''x2'>No</label>";

          } else {

          echo "<input id='x1' type='radio' name='movie' value='Y'><label for=''x1'>Yes</label>";
          echo "</div>";
          echo "<div>";
          echo "<input id='x2' type='radio' name='movie' value='N'><label for=''x2'>No</label>";

          }

          ?>

【问题讨论】:

    标签: php sql database if-statement conditional


    【解决方案1】:

    是的。

    <?php
    
        echo '<input id="x1" type="radio" name="movie" value="Y"' . ($ck2 == 'Y' ? ' checked="checked"' : '') . '><label for="x1">Yes</label>';
        echo '<input id="x2" type="radio" name="movie" value="N"' . ($ck2 == 'N' ? ' checked="checked"' : '') . '><label for="x2">No</label>';
    

    如果$objResult["MOV"] 为空,因为它不在结果集中,则将显示单选按钮而不选中。相反,如果您希望其中一个为空时被选中,您可以执行以下操作:

    <?php
        $ck2 = !empty($objResult["MOV"]) ? $objResult["MOV"] : 'N';
    

    然后,如果“否”复选框为空,则会选中该复选框。

    总之,它看起来像这样:

    <?php
    
        $ck2 = !empty($objResult["MOV"]) ? $objResult["MOV"] : 'N';
    
        echo '<input id="x1" type="radio" name="movie" value="Y"' . ($ck2 == 'Y' ? ' checked="checked"' : '') . '><label for="x1">Yes</label>';
        echo '<input id="x2" type="radio" name="movie" value="N"' . ($ck2 == 'N' ? ' checked="checked"' : '') . '><label for="x2">No</label>';
    

    显示单选按钮的功能也可以工作(正如另一个人建议的那样)。为您的视图使用模板引擎可以取代这种需求,因此学习ternary operator (PHP Doc) 也将对此有所帮助。

    【讨论】:

    • 是的。如果该字段为空,则将显示单选按钮,但没有一个被选中。请参阅我的编辑以了解另一种处理方式。
    【解决方案2】:

    最好使用函数生成输入:

    <?php
    function radio_input($checked, $id)
    {
        $checked_str = $checked ? " checked='checked' " : "" ;
        $label_str = $checked ? "Yes" : "No";
        $value_str = $checked ? "Y" : "N";
        return "<input id='$id' type='radio' name='movie' $checked_str value='$value_str'><label for='$id'>$label_str</label>";
    }
    
    $ck2 = $objResult["MOV"];
    
    echo radio_input($ck2 == "Y","x1");
    echo "</div>";
    echo "<div>";
    echo radio_input($ck2 == "Y","x2");
    ?>
    

    【讨论】:

      【解决方案3】:

      同样的事情,有点不同的方法,也更快:

      <?php
      $ck2 = $objResult["MOV"];
      $ycheck= "";
      $ncheck= "";
      switch($ck2)
      {
          case("Y"):
          {
              $ycheck= " checked='checked'";
              break;
          }
          case("N"):
          {
              $ncheck= " checked='checked'";
              break;
          }
          default:
          {
              break;
          }
      }
      ?>
      <input id='x1' type='radio' name='movie' value='Y'<?php echo $ycheck; ?>><label for=''x1'>Yes</label></div><div><input id='x2' type='radio' name='movie' value='N'<?php echo $ncheck; ?>><label for=''x2'>No</label>
      

      【讨论】:

        【解决方案4】:
             <?php
        
                  $ck2 = $objResult["MOV"];
                  $isYes = ($ck2["MOV"] == "Y");
                  $isNo = ($ck2["MOV"] == "N");
        
              ?>
        
              <input id="x1" type="radio" name="movie" value="Y" <? php if($isYes) echo "checked='checked'"; ?>><label for=''x1'>Yes</label>
              </div>
              <div>
              <input id="x2" type="radio" name="movie" value="N"<? php if($isNo) echo "checked='checked'"; ?>><label for=''x2'>No</label>
        

        【讨论】:

          【解决方案5】:
          <?php
          
          $ck2 = $objResult["MOV"];
          
          echo "<input id='x1' type='radio' name='movie' value='Y'". ($ck2 == "Y" ? " checked='checked'" : "") ."><label for=''x1'>Yes</label>";
          echo "</div>";
          echo "<div>";
          echo "<input id='x2' type='radio' name='movie' value='N'". ($ck2 == "N" ? " checked='checked'" : "") ."><label for=''x2'>No</label>";
          
          ?>
          

          详情:https://davidwalsh.name/php-ternary-examples

          【讨论】:

            【解决方案6】:
             $ck2 = $objResult["MOV"];
             $checked_y = ($ck2 == "Y") ? "checked=\"checked\"" : "";
             $checked_n = ($ck2 == "N") ? "checked=\"checked\"" : "";
            
             echo "<input id='x1' type='radio' name='movie' value='Y' {$checked_y} /><label for=''x1'>Yes</label>";
             echo "</div>";
             echo "<div>";
             echo "<input id='x2' type='radio' name='movie' value='N' {$checked_n} /><label for=''x2'>No</label>";
            

            【讨论】:

              猜你喜欢
              • 2017-04-04
              • 2012-01-07
              • 2023-04-06
              • 1970-01-01
              • 2012-04-05
              • 2013-03-28
              • 2013-06-22
              • 2015-03-11
              • 2013-10-07
              相关资源
              最近更新 更多