【问题标题】:drodown list php下拉列表 php
【发布时间】:2013-02-27 11:19:41
【问题描述】:

我在 php 中有一个个人资料页面,供用户设置他的个人资料。个人资料页面提示用户设置性别。这是代码:

<form action='database.php' method=post>
<select name="myvalue">
  <option value=" ">--select--</option>
  <option value="male">male</option>
  <option value="female">female</option>
</select>
<input type=submit>
</form>

用户选择性别后,以下代码获取选择

$myvalue=$_POST['myvalue'];

然后通过使用函数将值存储在数据库中。

下次用户访问他的个人资料页面时,我希望下拉列表显示之前选择的值。例如,假设用户第一次创建他的个人资料时选择性别“男性”。如果他再次访问个人资料页面,下拉列表必须自动作为选定值,值“男性”。

【问题讨论】:

    标签: php html-select


    【解决方案1】:

    试试这个:

    <?php 
       $gender = /// fetch value from database
    ?>
    <form action='database.php' method=post>
    <select name="myvalue">
      <option value=" ">--select--</option>
      <option value="male" <?php if($gender == "male"){?> selected="selected" <?php }?>>male</option>
      <option value="female" <?php if($gender == "female"){?> selected="selected" <?php }?>>female</option>
    </select>
    <input type=submit>
    </form>
    

    【讨论】:

      【解决方案2】:

      要将选项字段设置为默认选择,您可以使用selected 关键字

      <select name="myvalue">
        <option value=" ">--select--</option>
        <option value="male" selected>male</option>
        <option value="female">female</option>
      </select>
      

      如果你使用 xml 文档类型你必须使用

      <select name="myvalue">
        <option value=" ">--select--</option>
        <option value="male" selected="selected">male</option>
        <option value="female">female</option>
      </select>
      

      您可以为该用户从 cookie 或数据库中加载值,然后执行检查以将“选定”值回显到该选项字段中

      【讨论】:

        【解决方案3】:

        只需再次检查值并在 html 中显示 selected="selected"

        <?php
        $value = $_POST['myvalue'];
        ?>
        <form action='database.php' method=post>
        <select name="myvalue">
          <option value=" " <?php echo $value==' ' ? 'selected="selected"' : ''; ?> >--select--</option>
          <option value="male" <?php echo $value=='male' ? 'selected="selected"' : ''; ?> >male</option>
          <option value="female" <?php echo $value=='female' ? 'selected="selected"' : ''; ?> >female</option>
        </select>
        <input type=submit>
        </form>
        

        【讨论】:

          【解决方案4】:

          类似这样的:

          <form action='database.php' method=post>
          <select name="myvalue">
            <option value=" ">--select--</option>
            <option value="male" <?php echo $gender=="male"?"selected":""; ?>>male</option>
            <option value="female"  <?php echo $gender=="female"?"selected":""; ?>>female</option>
          </select>
          <input type=submit>
          </form>
          

          但更好的是使用一个像样的模板系统。

          【讨论】:

            【解决方案5】:

            将选中的属性添加到选项

            <select name="myvalue">
            <option value=" ">--select--</option>
            <?php
            $selected = 'selected="selected" ';
            foreach(array('male', 'female') as $v){
             echo '<option '.(($v==$dbgender)? $selected : '').'value="'.$v.'">'.$v.'</option>';
            }
            ?>
            </select>
            

            $dbgender 是为该用户存储的值。

            【讨论】:

            • 我使用选定的值 =“男性”。它将选定的性别存储到数据库中,但是当我再次进入个人资料页面时,下拉列表已选择值“--select--”而不是“男性”。
            【解决方案6】:

            像这样进行验证。

            $val = value_from db;
            if($val == "male") {
                 echo '<option value="male" selected="selected">male</option>';
            } elseif($val == "female") {
                 echo '<option value="female" selected="selected">female</option>';
            }
            

            【讨论】:

              猜你喜欢
              • 2013-02-15
              • 2014-12-06
              • 2012-12-17
              • 2015-03-14
              • 2023-04-10
              • 2014-09-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多