2011-01-07 141 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」都是正確的姓氏)

我會在數據庫上運行一次轉換,然後離開表示層單獨。