【问题标题】:How to make form elements "remember" selection?如何让表单元素“记住”选择?
【发布时间】:2011-04-26 08:33:52
【问题描述】:

我现在正在使用 php 构建一个“更改分类”页面。

我使用 Mysql 作为数据库。

目前我使用PHP来获取所有关于分类的mysql信息,然后我输出如下:

  $table.="
   <select name='year' id='year'>
     <option id='2000' value='2000'>2000</option>
     <option id='2001' value='2001'>2001</option>
     <option id='2002' value='2002'>2002</option>
   </select>";

   echo $table;

我有一个图片上传工具,将页面提交给自己,同时上传图片,并显示在页面底部。问题是,无论何时完成,用户都必须重新填写所有信息,因为它们被“遗忘”了。

我知道 input type="text",您可以在其中简单地执行以下操作:

   <input type="text" name="text" value="<?php echo $_POST['text'];?>">

但是选择呢?收音机?等等?

我应该在这里做什么?

谢谢

【问题讨论】:

    标签: php javascript mysql html database


    【解决方案1】:

    您可以将selected 属性设置为"selected" 以使其成为默认/当前选择:

    <option id="2000" value="2000" selected="selected">2000</option>
    

    php 示例:

    $options = array( '2000' => '2000', '2001' => '2001', '2002' => '2002' );
    $selected = '2001';
    $select = '<select name="year" id="year">';
    
    foreach ( $options as $key => $value )
    {
        $select .= '  <option value="' . $key . ( $key == $selected ? '" selected="selected">' : '">' ) . $value . '</option>';
    }
    
    $select .= '</select>';
    

    【讨论】:

    • 我的脚本如何知道要设置为选中的值?这就是问题...
    • 更新了我的答案以包含一些 php 代码。这也动态构造了选择选项。
    • 别忘了回显$select
    【解决方案2】:
    <option 
      id='2000'
      value='2000'
      <?php if(isset($year) && $year === '2000') echo 'selected="selected"'?>
    >2000</option>
    

    $year 包含来自任何地方的年份。这假设 $year 是一个字符串。如果$year 是整数,则将条件更改为:

      if(isset($year) && $year === 2000)
    

    对于单选按钮和复选框,只需将 selected="selected" 替换为 checked="checked"

    【讨论】:

    • 如果 $year 是整数,则从条件中删除单引号:if(isset($year) &amp;&amp; $year === 2000)
    【解决方案3】:

    对于选择,您需要循环遍历数据并检查该值是否等于所选值(至少这是最容易做到的),这会更加紧张。但是您可以应用与复选框/收音机类似的技术。

    <input type="radio" name="radio1" value="1" <?php echo (!empty($_POST['radio1']))?'checked':''?>> 
    <input type="checkbox" name="chkbox1" value="1" <?php echo (!empty($_POST['chkbox1']))?'checked':''?>>
    

    由于您正在创建表 PHP 端,这里是代码:

      $years = array('2000', '2001', '2002');
    
      $table .= "<select name='year' id='year'>";
      foreach ($years as $year) {
          $table .= "<option id='" . $year . "' value='" . $year . "' " . 
                (($_POST['year'] == $year)?'selected':'') . ">" . $year . "</option>\n";
      }
    
      $table.="</select>";
    

    应该让您走上选择语句的正确轨道。这 ? and : 组成三元运算符,它是一个缩短的 if / else 语句。

    【讨论】:

    • 谢谢,我需要这样的东西。你知道客户端的 SELECT 是否有类似的代码? (就像你放在那里的复选框和收音机的例子)?
    • php 没有客户端。您只需要在正确的位置回显正确的代码。这也是您对输入类型的内联样式所做的事情..
    • 要在客户端执行此操作,您需要使用 Javascript 并告诉 javascript 应该选择什么,因此 javascript 文件需要以某种方式或形式植入变量。
    【解决方案4】:

    您可以有条件地在 PHP 中回显 selected,具体取决于要选择的值。

    【讨论】:

    • 检查其他答案,它们比我的要好;-)
    【解决方案5】:
    <?php
    
    $selected[$_GET['year']] = "selected='selected'";
    
    $table.="
     <select name='year' id='year'>
       <option id='2000' value='2000' " . $selected['2000'] . ">2000</option>
       <option id='2001' value='2001' " . $selected['2001'] . ">2001</option>
       <option id='2002' value='2002' " . $selected['2002'] . ">2002</option>
     </select>";
    
    echo $table;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2016-01-20
      • 2011-07-08
      • 2011-11-04
      • 2023-04-02
      • 2014-09-24
      • 1970-01-01
      • 2011-07-22
      • 2015-01-22
      相关资源
      最近更新 更多