PDA

Просмотр полной версии : Как вывести список авторов по алфивиту


Froggy
29.09.2001, 23:03
ГУРУ! Надобна от Вас помощь. Есть список авторов статей в БД-мускулов, как вывести этот список по алфавиту, т.е. "А" - ...авторы, "Б" - ...авторы, и т.д. короче типа как оглавления делаются. Т.е. как Я понимаю нужно специфически цикл сбацать, но мозгов не хватает. Буду признателен за помощь. С Уважением Андрей. Пишите на почту: froggy@tsrv.ru или jaba@kmivc.kubannet.ru.

DeepDiver
30.09.2001, 11:00
Проблем нет, елси у тебя мускул русифицированный. Тогда просто в запросе добавляешь " select ... from ... where ... order by name;"
Но, к сожалению не все коту масленица. В таком случае приходится сортировать самому.
Для этого заливаешь всю выборку из таблицы в ассоциативный массив и сортируешь уже массив, а потом выводишь, как тебе надо.
Пример:

// Для начала считываем всю выборку в двумерный массив
$r = mysql_query("select name1,name2 from authors;");
$a = array();
while (list($name1,$name2)=mysql_fetch_row($r)){
$a[] = array($name1,$name2);
};


//Поскольку сортировка производится не совсем обычная,
//приходится писать еще и функцию сравнения двух элементов
funciton sort_func($a,$b){
// Каждый элемент - сам по себе массив из двух элементов
// Для полной алфавитной сортировки надобно соединить
// имя с фамилией
return strcmp($a[0].$a[1], $b[0].$b[1]);
};


//Затем сортируем с использованием нашей функции
usort($a, sort_func);


После все этих манипуляций массив $a будет отсортирован в алфавитном порядке. Ну а как вывести его по буквам - надеюсь додумаешься ;)
Надо либо просто запоминать первую букву выводимой фамилии, и по мере вывода следить, когда она изменится

Froggy
30.09.2001, 22:43
Мускул у Меня не русский и поэтому не сортирует. Спасибо за помощь поковыряюсь с твоей подсказкой :D

Froggy
02.10.2001, 23:34
Да кстати. Руссификация MySQL заключается в том чтобы научить его распознавать русские символы при работе с базами по запросам. А делается это, как Я выяснил, просто. Надо только выставить Charsets по умолчанию не latin1, кот. устанавливается при интсталляции, а cp1251(именно cp1251 а не win1251). :D

Geoserg
03.10.2001, 11:29
---------------------------------------------------------------------------------
Да кстати. Руссификация MySQL заключается в том чтобы научить его распознавать русские символы при работе с базами по запросам. А делается это, как Я выяснил, просто. Надо только выставить Charsets по умолчанию не latin1, кот. устанавливается при интсталляции, а cp1251(именно cp1251 а не win1251).
---------------------------------------------------------------------------------

Ага, а если хостинг западный? ;) Насколько я помню, CP можно указывать прямо в запросе. Но если есть возможность, то конечно проще поставить cp1251 по умолчанию.