【问题标题】:Rename MYSQL column names for php select element为 php select 元素重命名 MYSQL 列名
【发布时间】:2011-01-25 11:40:05
【问题描述】:

您好,我正在构建一个 html 选择元素,如下所示:

$result = mysql_query("SHOW COLUMNS FROM table") or die(mysql_error());
    echo '<select name="column" class="column">';
    while ($row = mysql_fetch_array($result))
    {
        if($row[0] == 'id' || $row[0] == 'tstamp' || $row[0] == 'boiler2oil')
              continue;
        echo "<option value='".$row[0]."'>".ucwords($row[0])."</option>";
    }
    echo '</select>';

我为表格中的列命名的方式相当难看,带有下划线等...如何重命名它们以便我可以更改选择元素显示(值可以保持不变)更改为一些东西更具可读性和视觉效果。这可能吗?会是某种 preg_match/preg_replace 吗?

【问题讨论】:

  • 这个任务的目标是什么?如果您想显示列名,按原样显示。如果你想要花哨的标题 - 那就不要取字段名,而是在 模板 中写下所有标题

标签: php mysql html select preg-replace


【解决方案1】:

取决于您要将它们重命名为什么。你想做一些简单的事情,比如删除下划线吗?有什么规则可以用来清理它们吗?

如果没有,为什么不添加一个散列,其中包含从表中的名称映射到您要为下拉列表打印的名称的条目?

# map from column name to display name
$labels = array(
    'col1' => 'Column 1',
    ...
);

$result = mysql_query("SHOW COLUMNS FROM table") or die(mysql_error());
echo '<select name="column" class="column">';
while ($row = mysql_fetch_array($result))
{
    if($row[0] == 'id' || $row[0] == 'tstamp' || $row[0] == 'boiler2oil')
          continue;

    # use a more friendly name if one has been defined above in $labels
    if(array_key_exists($row[0], $labels))
          $label = $labels[$row[0]];
    else
          $label = $row[0];

    echo "<option value='".$row[0]."'>".$label."</option>";
}
echo '</select>';

【讨论】:

  • 另请注意,您确实应该使用htmlentities,例如echo "&lt;option value='".htmlentities($row[0])."'&gt;".htmlentities($label)."&lt;/option&gt;";
  • 我认为两者都可以,不是吗?
【解决方案2】:

可能单独使用str_replace 就可以完成,对于这种简单的事情,它比preg_replace 更有效。

【讨论】:

【解决方案3】:

您可以定义一个数组,它将 columnName 作为“key”,将 Name to Display 作为“value”。然后回显这个数组的元素而不是显示列名。

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2021-03-14
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多