2011-01-07 86 views
0

我已经将名称全部小写存储到MySQL数据库,但我的用户希望在网站上看到他们作为第一个字母大写。然而,我试图找出一种方式,不管是服务器端(PHP)还是客户端(jQuery),都可以在不更改数据库中的任何内容的情况下执行此操作。这可能吗?首字母大写从MySQL与PHP/jQuery拉的每个单词的首字母

CODE:

$result = mysql_query("SELECT user from `users` order by user asc") or die(mysql_error()); 
      echo '<select name="user" class="user">'; 
      while ($row = mysql_fetch_array($result)) { 
       echo "<option value='".$row['user']."'>".$row['user']."</option>"; 
      } 
      echo '</select>'; 
+3

“我将所有小写字母都存储到mysql数据库中”。你为什么这样做?像“罗纳德麦克唐纳”这样的名字永远不会被正确地重新格式化。作为一个建议,通常是一个好主意,按照提供的方式存储信息(在转义之后等),然后在输出中处理它。 – 2011-01-07 13:37:02

回答

7

还有

ucwords($row['user']); 

如果你想利用所有的话。

5

PHP有ucfirst功能。

echo "<option value='".$row['user']."'>".ucfirst($row['user'])."</option>"; 

仅通过改变option里面的价值,而不是value属性,则可以确保相同的值将被发送回服务器。请注意,您也可以使用strtolower来确保字符串全部小写。

+0

这是一个很棒的主意,这是我之后 – benhowdle89 2011-01-07 13:37:01

1

在PHP中,您可以使用函数UCfirst(str);为了达成这个。

你也可以在你的SQL查询中做到这一点 - 但不知道这是做这件事的最好方法。

SELECT CONCAT(UPPER(SUBSTRING(firstName, 1, 1)), 
LOWER(SUBSTRING(firstName FROM 2))) AS properFirstName 
1

或者你也可以通过CSS像这样做:

div.caps { text-transform: capitalize; } 

结果是:

这是一些文本。

6

您还可以使用CSS做到这一点:

#example { 
    text-transform: capitalize; 
} 
0

像这样

$result = mysql_query("SELECT user from `users` order by user asc") or die(mysql_error()); 
echo '<select name="user" class="user">'; 
while ($row = mysql_fetch_array($result)) { 
    $user = explode(" ", $row['user']); 
    echo "<option value='".$row['user']."'>".ucfirst($user[0]).' '.ucfirst($user[1])."</option>"; 
} 
echo '</select>'; 
1

你可以与MySQL做得一样好:

SELECT CONCAT(UPPER(SUBSTR(user, 1, 1)), SUBSTR(user, 2)) FROM `users` ORDER BY user ASC 
0

注意之间的映射大小写字母在每个国家都不一样;最显着的例子是土耳其,其中我是土耳其,此外,名称往往会有更复杂的大写规则(例如“MacDonald”,“deVries”,“von Hohenzollern”都是正确的姓氏)

我会在数据库上运行一次转换,然后离开表示层单独。

相关问题