按字母顺序排序PHP,MySql但在每组之前列出字母

时间:2011-05-30 23:49:43

标签: php

说我有一张桌子:

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

我知道如何在网址中执行#links。它只是div Id。我知道如何从MySql中获取。我不确定的那部分是在那封以该字母开头的名字组之前回复的。

我正在考虑获取将其保存在变量中的名字的第一个字母。

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

不确定这个想法是否是一个有效的想法。这会是这样做的吗?

3 个答案:

答案 0 :(得分:1)

未经测试的代码但是这样的代码应该有效:

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

echo $name;

答案 1 :(得分:0)

您可以按名字选择包含订单的记录。

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

$lastletter = "A";

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

echo $firstname;

答案 2 :(得分:0)

这看起来是一个非常好的解决方案,除了ID之外不能有空格,所以你想要改变

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

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