【问题标题】:List Enum values in dropdown php mysql在下拉列表 php mysql 中列出枚举值
【发布时间】:2010-11-18 03:22:10
【问题描述】:

我有一个 mysql 表,其中包含以下列。

 Id     Name      Sex

并且性别列的类型为枚举('Male','Female','Unspecified')

如何在下拉列表中列出枚举值并选择当前存储的值

【问题讨论】:

  • 在我看来,在大多数情况下,使用 ENUM 是一个概念错误。您始终可以选择创建一个额外的表。这将使这个查询非常容易做到。在这种情况下,性别基本上是一个布尔值(例如,男性为 true,女性为 false,未指定的为 NULL)并且额外的表可能是矫枉过正,但我​​绝对尽量少使用 ENUM(不是说从不)。
  • 您是想直接从数据库结构中列出 ENUM 值,还是只是想弄清楚如何将选定的 ENUM 值存储在记录中?

标签: php mysql enums


【解决方案1】:

检查此链接...它非常棒..该脚本可重复用于任何枚举列:

http://jadendreamer.wordpress.com/2011/03/16/php-tutorial-put-mysql-enum-values-into-drop-down-select-box/

【讨论】:

    【解决方案2】:

    在创建选择(下拉)字段时,它是一个枚举字段这一事实并不重要。枚举字段的行为与文本输入字段相同,它们只是拒绝任何与枚举选项不匹配的数据并更有效地存储数据。因此,与枚举字段的交互与与文本输入字段的交互相同。

    所以你需要一个普通的 html 选择字段:

    <form>
      <select name="gender">
        <option value="Unspecified">Unspecified</option>
        <option value="Male">Male</option>
        <option value="Female">Female</option
      </select>
    </form>
    

    您需要选择您的值:

    <form>
      <select name="gender">
        <option value="Unspecified" <?php if($gender == "Unspecified") { echo "SELECTED"; } ?>>Unspecified</option>
        <option value="Male" <?php if($gender == "Male") { echo "SELECTED"; } ?>>Male</option>
        <option value="Female" <?php if($gender == "Female") { echo "SELECTED"; } ?>>Female</option
      </select>
    </form>
    

    这可以分解成函数:

    function gender_select($default_value='') {
      $select = '<select name="gender">';
      $options = array('Unspecified','Male','Female',);
      foreach($options as $option) {
        $select .= write_option($option, $option, $default_value);
      }
      $select .= '</select>';
      return $select;  
    }
    
    function write_option($value, $display, $default_value='') {
      $option = '<option value="'.$value.'"';
      $option .= ($default_value == $value) ? ' SELECTED' : '';
      $option .= '>'.$display.'</option>';
      return $option;
    }
    

    所以你的最终代码是:

    <form>
    <?php echo $gender_select($gender); ?>
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 2012-05-17
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多