2011-01-25 26 views
-1

嗨,我是构建一个HTML选择元素,像这样:PHP的选择元素重新命名MYSQL列名

$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?

+0

Hellooooo,投票下来为什么? – benhowdle89 2011-01-25 11:57:47

+1

这项任务的目标是什么?如果你想显示**列名,**按原样显示**。如果你想要花哨的标题 - 那么不要把字段名称,但在**模板中写出所有标题** – 2011-01-25 11:58:49

回答

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>'; 
1

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

+0

噢好吧,我需要知道str_replace的目标是什么,或者它是一个普通功能吗? – benhowdle89 2011-01-25 11:47:41

0

您可以定义一个数组,其中columnName为“key”,Name为Display为“value”。然后,此数组的Echo元素而不是显示列名称。