упорядочить по алфавиту PHP, MySQL, но перечислить букву перед каждой группой

#php

#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 в URL. Это просто идентификатор div. Я знаю, как захватить из MySQL. Часть, в которой я не уверен, повторяет букву перед группой имен, которые начинаются с этой буквы.

Я думал получить первую букву имени и сохранить ее в переменной.

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

Не уверен, что эта идея была бы эффективной идеей. Будет ли это правильным решением для этого?

Комментарии:

1. Ваш вопрос касается исключительно уровня представления — PHP в данном случае. Для ясности, если буквы нет в списке результатов, вы не хотите ее показывать (т. Е.: отсутствующий C — K)?

2. Да. Если буквы нет, не показывайте. Я думал о том, чтобы также добавлять каждую новую букву в массив для генерации букв быстрого перехода.

Ответ №1:

Непроверенный код, но что-то вроде этого должно сработать:

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

echo $name;
  

Ответ №2:

Вы можете выбрать записи с порядком по имени.

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

$lastletter = "A";

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

echo $firstname;
  

Ответ №3:

Это выглядит как довольно хорошее решение, за исключением того, что в идентификаторах не должно быть пробелов, поэтому вы хотите изменить

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

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