2011-05-30 40 views
2

說我有一個表:爲了按照字母PHP,MySQL,但各組前列出信

First  | Last 
------------------- 
Bob   Dylan 
Ashley  Scott 
Lol Cats 
black cake 

它會命令他們,但做

A: 
    Ashley Scott 
B: 
    Bob Dylan 
    Black Cake 
L: 
    lol cats 

我知道如何通過ABC列出來自MySql。但是我想讓它把這封信放在每組名字前面。所以我可以做一個很好看的界面,並在頁面的頂部有A B C D字母在頂部去了聯繫人#letterL

我知道如何做一個url中的#links。它只是div ID。我知道如何從MySql中獲取。我不確定的部分是在以該字母開頭的那組名稱之前回應這封信。

我在想把名字的第一個字母保存在一個變量中。

if ($lastletter == $currentleter) { 
    echo name 
} else { 
    $lastletter = $currentleter; 
    echo '<div id="Letter ' . $currentleter . '" class="letterheader">' . $currentleter . '</div>'; 
} 

不知道這個想法是否是一個有效的想法。這是否會馬上做到這一點?

+0

你的問題僅僅是表示層 - PHP在這種情況下。要清楚的是,如果信件不在結果列表中,你不想顯示它(即:缺少的C - K)? – 2011-05-30 23:59:44

+0

是的。如果這封信不是,請不要出示。我正在考慮將每個新的字母添加到數組中以生成快速跳轉字母。 – Keverw 2011-05-31 00:14:05

回答

1

未經測試的代碼,但像這樣的東西應該工作:

$currentleter = substr($name , 0 , 1); 
if ($lastletter != $currentleter){ 
    echo '<div id="Letter' . $currentleter . '" class="letterheader">' . $currentleter . '</div>'; 
    $lastletter = $currentleter; 
} 

echo $name; 
0

您可以按名字排序選擇記錄。

$sql = "select * from tblname order by firstname"; 

$lastletter = "A"; 

echo $lastLetter; 
if ($lastLetter != substr($firstname, 0,1)) 
echo $lastLetter; 

echo $firstname; 
0

這個貌似除了標識一個不錯的解決方案一定不能有空格的,所以你想改變

<div id="Letter ' . $currentleter . '" class="letterheader">

<div id="Letter_' . $currentleter . '" class="letterheader">

相關問題