[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод телефонной книге
VeRTak
Всем привет, никак не могу сообразить как реализовать телефонную книгу по алфавиту

К примеру таблица

Андрей
Антон
Денис
Константин

С базы все это дело достаю, а вывести мне это надо так

А - Андрей, Антон
Д - Денис
К - Константин

Т.е буквы, ну и к ним имена
Kusss
$names = ['aнтон', 'Андрей','Анна','cвета','cергей','Маша','Дарья','Марина',];
$namesGroup = [];
foreach ($names AS $name){
$namesGroup[ mb_substr($name, 0, 1) ][] = $name;
}

if (count($namesGroup)){
foreach ($namesGroup AS $word=>$value){
echo '<br><b>'.ucfirst($word).'</b> - '. implode(',', $value);
}
}
И результат
А - aнтон,Андрей,Анна
С - cвета,cергей
М - Маша,Марина
Д - Дарья
sergeiss
Цитата (VeRTak @ 3.10.2017 - 17:44)
С базы все это дело достаю

Можно с базы сразу получить имена так, чтобы все на одну букву были в одной строке и отсортированные.
И у тебя будет всяко не больше 33-х строк wink.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
VeRTak
Kusss

Как все просто laugh.gif Спасибо, но я почему то думал, что все гораздо сложнее smile.gif

Цитата (sergeiss @ 3.10.2017 - 21:42)
Можно с базы сразу получить имена так, чтобы все на одну букву были в одной строке и отсортированные.
И у тебя будет всяко не больше 33-х строк


Можно подробнее? smile.gif
killer8080
VeRTak
например так
SELECT
SUBSTR(`name`, 1, 1) `letter`,
GROUP_CONCAT(DISTINCT `name` ) names
FROM `table_name`
GROUP BY `letter`
ORDER BY `name`
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.