【问题标题】:How to preSelect an html dropdown list with php? [duplicate]如何使用 php 预选 html 下拉列表? [复制]
【发布时间】:2011-03-29 14:12:51
【问题描述】:

我正在尝试使用 PHP 选择该选项,但我没有想法!

以下是我到目前为止尝试过的代码:

<select>
<option value="1">Yes</options>
<option value="2">No</options>
<option value="3">Fine</options>
</select>
<input type="text" value="" name="name">
<input type="submit" value="go" name="go">

那么,我该怎么办?

【问题讨论】:

    标签: php select drop-down-menu return option


    【解决方案1】:

    程序员很懒……呃……高效……我会这样做:

    <select><?php
        $the_key = 1; // or whatever you want
        foreach(array(
            1 => 'Yes',
            2 => 'No',
            3 => 'Fine',
        ) as $key => $val){
            ?><option value="<?php echo $key; ?>"<?php
                if($key==$the_key)echo ' selected="selected"';
            ?>><?php echo $val; ?></option><?php
        }
    ?></select>
    <input type="text" value="" name="name">
    <input type="submit" value="go" name="go">
    

    【讨论】:

    • 这是解决具有数十或数百个选项的选择的唯一解决方案。 +1
    • @Wes 它如何解决数百个选项?您需要在 foreach 中输入所有这些......
    • @YunfeiChen 您可以通过循环遍历数据在另一个脚本中构建选项数组,然后在上面的 foreach 中使用该变量。
    • @wes 怎么样更好,您仍然需要在数组中键入所有选项???
    • @wes 仍然需要输入数百个元素……不知道这样更好吗??
    【解决方案2】:
    <select>
    <option value="1" <?php if ($myVar==1) echo 'selected="selected"';?>>Yes</options>
    <option value="2" <?php if ($myVar==2) echo 'selected="selected"';?>>No</options>
    <option value="3" <?php if ($myVar==3) echo 'selected="selected"';?>>Fine</options>
    </select>
    <input type="text" value="" name="name">
    <input type="submit" value="go" name="go">
    

    如果我正确理解您的问题,这是一种非常简单直接的方法。

    【讨论】:

    • 我比你快一秒!:P
    • @Iznogood 我认为你的意思是另一种方式.. 将鼠标悬停在答案的时间戳上是 17:14:48,而在 Bart 的答案上显示的是 17:14:47 :)
    • 好吧@Davinder你晚了5年! :-)
    • 你得到未定义的变量 $myvar 错误.....
    【解决方案3】:

    你可以用这个..

    <select name="select_name">
        <option value="1"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='1')?' selected="selected"':'');?>>Yes</option>
        <option value="2"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='2')?' selected="selected"':'');?>>No</option>
        <option value="3"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='3')?' selected="selected"':'');?>>Fine</option>
    </select>
    

    【讨论】:

      【解决方案4】:

      首先为您的选择命名。然后做:

      <select name="my_select">
      <option value="1" <?= ($_POST['my_select'] == "1")? "selected":"";?>>Yes</options>
      <option value="2" <?= ($_POST['my_select'] == "2")? "selected":"";?>>No</options>
      <option value="3" <?= ($_POST['my_select'] == "3")? "selected":"";?>>Fine</options>
      </select>
      

      它的作用是检查每个选择的内容是否相同,以及找到的回显何时“被选中”。

      【讨论】:

        【解决方案5】:

        我想您正在使用一个数组来创建您的select 表单输入。 在这种情况下,使用数组:

        <?php
            $selected = array( $_REQUEST['yesnofine'] => 'selected="selected"' );
            $fields = array(1 => 'Yes', 2 => 'No', 3 => 'Fine');
         ?>
          <select name=‘yesnofine'>
         <?php foreach ($fields as $k => $v): ?>
          <option value="<?php echo $k;?>" <?php @print($selected[$k]);?>><?php echo $v;?></options>
         <?php endforeach; ?>
         </select>
        

        如果没有,你可以直接展开上面的循环,仍然使用数组。

         <option value="1" <?php @print($selected[$k]);?>>Yes</options>
         <option value="2" <?php @print($selected[$k]);?>>No</options>
         <option value="3" <?php @print($selected[$k]);?>>Fine</options>
        

        我不知道的注意事项:

        • 你是如何命名你的输入的,所以我给它起了个名字。
        • 您在服务器端处理表单输入的方式,我使用了$_REQUEST

        您必须调整代码以符合您正在使用的框架的要求(如果有)。

        此外,在许多框架中,在查看专用脚本时习惯使用the alternative syntax

        【讨论】:

          【解决方案6】:

          我使用内联 if

          ($_POST['category'] == $data['id'] ? 'selected="selected"' : false)
          

          【讨论】:

          • 为了记录,“inline if's”实际上被称为“三元运算符”。
          【解决方案7】:

          我有 2 个 php 文件,我做了这个,它可以工作。 (这是一个例子)第一个代码来自一个文件,第二个代码来自两个文件。

          <form action="two.php" method="post">
          <input type="submit" class="button" value="submit" name="one"/>
          <select name="numbers">
          <option value="1"> 1 </option>
          <option value="2"> 2 </option>
          <option value="3"> 3 </option>
          </select>
          </form>
          
          
          
          if(isset ($_POST['one']))
          {
          
          if($_POST['numbers']=='1')
          {
          $a='1' ;
          }
          else if($_POST['numbers']=='2')
          {
          $a='2' ;
          {
          else if ($_POST['numbers']=='3')
          {
          $a='3' ;
          }
          
          }
          

          【讨论】:

            【解决方案8】:

            此答案与特定接收者无关,但可能对其他人有用。 通过从数据库返回的值“选择”正确的“选项”,我遇到了类似的问题。 我通过添加带有应用显示的附加标签来解决它:无。

            <?php
            $status =  "NOT_ON_LIST";
            
            $text = "<html>
            <head>
            </head>
            <body>
            <select id=\"statuses\">
               <option value=\"status\" selected=\"selected\" style=\"display:none\">$status</option>
               <option value=\"status\">OK</option>
               <option value=\"status\">DOWN</option>
               <option value=\"status\">UNKNOWN</option>
            </select>
            </body>
            </html>";
            
            print $text;
            ?>
            

            【讨论】:

              【解决方案9】:

              这是我想出的解决方案:

              <form name = "form1" id = "form1" action = "#" method = "post">
                <select name = "DropDownList1" id = "DropDownList1">
              <?php
              $arr = array('Yes', 'No', 'Fine' ); // create array so looping is easier
              for( $i = 1; $i <= 3; $i++ ) // loop starts at first value and ends at last value
              {
                $selected = ''; // keep selected at nothing
                if( isset( $_POST['go'] ) ) // check if form was submitted
                {
                  if( $_POST['DropDownList1'] == $i ) // if the value of the dropdownlist is equal to the looped variable
                  {
                    $selected = 'selected = "selected"'; // if is equal, set selected = "selected"
                  }
                }
                // note: if value is not equal, selected stays defaulted to nothing as explained earlier
                echo '<option value = "' . $i . '"' . $selected . '>' . $arr[$i] . '</option>'; // echo the option element to the page using the $selected variable
              }
              ?>
                </select> <!-- finish the form in html -->
                <input type="text" value="" name="name">
                <input type="submit" value="go" name="go">
              </form>
              

              只要值是某种数字顺序(升序或降序)的整数,我的代码就可以工作。它的作用是在 html 中启动下拉列表,并在 php 代码中添加每个选项元素。但是,如果您有随机值,则它将不起作用,即:1、4、2、7、6。每个值必须是唯一的。

              【讨论】:

              • 你不能让它变得更加低效:1.只检查一次$_POST['go'],而不是在循环中的每次迭代2. 您的循环不会处理数组中的更改,至少使用count($arr) 而不是硬编码的数字。 3. PHP 的 foreach() 循环自动处理遍历数组并检索键和值 - 因此您不必拥有自己的增量索引。
              猜你喜欢
              • 2011-08-07
              • 2018-10-14
              • 1970-01-01
              • 2017-06-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多