Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Алфавитный указатель
Форумы портала PHP.SU » » Работа с СУБД » Алфавитный указатель

Страниц (1): [1]
 

1. LoRD OF The RinG - 27 Мая, 2011 - 14:23:53 - перейти к сообщению
Вообщем хочу сделать для списка юзеров алфавитный указатель (типо A, B, C, D, E, F, G...), но не хочется перечислять в нем весь алфавит, а хотелось бы указать только буквы, на которые есть зарегистрированые пользователи, но вот никак не могу разобраться с этим, может кто сталкивался с этим и поможет помоч

на примере попробую пояснить более подробно, вот у нас есть юзеры - Юзер и пользователь, в алфавитном указатели должны быть только буквы Ю и П
2. Мелкий - 27 Мая, 2011 - 14:31:27 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT substr(`username`,1,1) FROM `table` GROUP BY 1
3. LoRD OF The RinG - 27 Мая, 2011 - 14:55:44 - перейти к сообщению
спасибоУлыбка а как насчет нагрузки? если записей много? стоит ли кешировать результат?
4. maragon - 27 Мая, 2011 - 17:54:21 - перейти к сообщению
[quote=Мелкий][/quote]
а можно поподробнее описать sql запрос?
очень таки интересно, пока с таким не сталкивался. Хм
5. Мелкий - 27 Мая, 2011 - 18:19:48 - перейти к сообщению
LoRD OF The RinG пишет:
а как насчет нагрузки? если записей много? стоит ли кешировать результат?

Лучше измерьте результат на реальных данных, я затрудняюсь сказать.

maragon пишет:
а можно поподробнее описать sql запрос?
очень таки интересно, пока с таким не сталкивался.

substr - SQL функция для извлечения подстроки http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]#function_substr
GROUP BY 1 - группировка по первому полю запроса.
6. Arvaal - 26 Ноября, 2015 - 13:11:14 - перейти к сообщению
Здравствуйте знатоки!

Никак не получается сделать алфавитный указатель для списка городов доставки СДЭК

Вот таким кодом:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-type: text/html; charset=utf-8');
  3. $xml = simplexml_load_file('http://gw.edostavka.ru:11443/pvzlist.php?cityid=');
  4. echo ('<div style="display: table;">');    
  5.     for ($i = 0; $i < count($xml->Pvz); $i++) {
  6.         echo ('<div style="display: table-cell;list-style: none;padding: 0px">');
  7.         $j = $i + ceil(count($xml->Pvz) / 3);
  8.         for (; $i < $j; $i++) {
  9.             if (isset($xml->Pvz[$i])) {
  10.                 echo ('<div style="border: 1px solid gray;padding: 8px;margin: 5px;width: 235px;">');
  11.                 echo ('<span style="font-weight: bold;font-size: 16px;">' . $xml->Pvz[$i]['City'] . '</span>');
  12.                 echo ('<br/>');
  13.                 echo ('<span>Расположен: ' . $xml->Pvz[$i]['Name'] . '</span>');
  14.                 echo ('<br/>');
  15.                 echo ('<span>Адрес: ' . $xml->Pvz[$i]['Address'] . '</span>');
  16.                 echo ('<br/>');
  17.                 echo ('<span>Телефон: ' . $xml->Pvz[$i]['Phone'] . '</span>');
  18.                 echo ('<br/>');
  19.                 echo ('<span>Время работы: ' . $xml->Pvz[$i]['WorkTime'] . '</span>');
  20.                 echo ('<br/>');
  21.                 echo ('</div>');
  22.             }
  23.         }
  24.         echo ('</div>');
  25.     }
  26. echo ('</div>');
  27. ?>


Я получаю через их апи список ПВЗ, но не могу их упорядочит таким образом:
А
Абокан, Армавир, Апшеронск, ........

Б
Барнаул, Берлин, Б....

В
Волгоград, Воронеж, В.....

Помогите пожалуйста реализовать такое.
7. Viper - 26 Ноября, 2015 - 22:38:03 - перейти к сообщению
Arvaal
1. Берете русский алфавит.
2. Сравниваете по первой букве.
3. Добавляете в массив.
4. Профит...

Массив у вас вида
PHP:
скопировать код в буфер обмена
  1.         'а' => array(
  2.                 'Абокан', 'Армавир', 'Апшеронск', ...
  3.         ),
  4.         ...
  5. );

Первые буквы приводите в один регистр для сравнения. Далее обычный select с optgroup создаете в цикле.

 

Powered by ExBB FM 1.0 RC1