繁体   English   中英

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

[英]order by alphabet PHP, MySql but list the letter before each group

假设我有一张桌子:

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

它会订购它们,但做

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

我知道如何从 MySql 按 abc 列出。 但我想让它把字母放在每组名字之前。 所以我可以制作一个漂亮的界面,在页面顶部有 AB C D 字母在顶部是contacts#letterL

我知道如何在 url 中执行 #links。 它只是 div Id。 我知道如何从 MySql 中获取。 我不确定的部分是在以该字母开头的名称组之前呼应该字母。

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

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

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

未经测试的代码,但这样的东西应该可以工作:

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

echo $name;

您可以 select 按名字排序的记录。

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

$lastletter = "A";

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

echo $firstname;

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM