RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 341
от 15.05.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 293, Экспертов: 43
В номере:Вопросов: 1, Ответов: 4


Вопрос № 42618: Здравствуйте, уважаемые программисты. Требуется ваша помощь. У меня к вам пара вопросов. Задача такая. Дана таблица из одного столбца. Она содержит список фамилий. Из заголовка таблицы нужно сделать ссылку, при щелчке на которой фамилии...

Вопрос № 42.618
Здравствуйте, уважаемые программисты. Требуется ваша помощь.
У меня к вам пара вопросов. Задача такая.
Дана таблица из одного столбца. Она содержит список фамилий.
Из заголовка таблицы нужно сделать ссылку, при щелчке на которой фамилии упорядочивались бы по алфавиту (как в Excel-e).
А вот, собственно, и вопросы:
1)Можно ли это сделать, не используя базу данных?
2)Если можно, то каким образом (желательно на PHP 4)?
Буду очень признателен, если вы поможете мне разобраться.
Возможно, мой вопрос ламерский. Не судите, пожайлуста, строго, потому что программированием я занялся недавно.
Заранее спасибо
Отправлен: 10.05.2006, 14:58
Вопрос задал: Cool_guy (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Straight
Здравствуйте, Cool_guy!
Если список небольшой, то нет проблем. Хранить список можно в массиве:
$names = array('Иванов','Петров','Сидоров');
Сортировать массив можно функцией sort.
Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 10.05.2006, 15:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое за ответ. Правда хотелось бы чуть-чуть поподробнее (о функции sort)

Отвечает: Cybernetic_Creature
Здравствуйте, Cool_guy!
есть такая функция
SORT
http://php.net/manual/ru/function.sort.php
она сортирует лист (массив спсиок по возрастанию)

См. также arsort(), asort(), ksort(), natsort(), natcasesort(), rsort(), usort(), array_multisort() и uksort().

зайдите на офф сайт РНР
и прочтите документцаю по функциям сортировки

Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 10.05.2006, 15:38
Оценка за ответ: 5
Комментарий оценки:
Спасибо. А можно ли отсортировать этой функцией такой большой список (600 записей?)

Отвечает: AllCash
Здравствуйте, Cool_guy!
1) можно, используя для хранения списка фамилий файл.
Но, ИМХО, юзая базу будет гораздо легче не только выводить список, но и обновлять его.
2) Организовать вывод из базы данных, сортируя данные по нужному столбцу, в большинстве случаев работает как надо, в противном случае для таблицы в БД нужно установить кодировку в ту в которой хранятся значения, скорее всего cp1251, например послав запрос в БД: "ALTER TABLE `имя_таблицы` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci"
+ см приложение.

Приложение:

Ответ отправил: AllCash (статус: 1-ый класс)
Ответ отправлен: 10.05.2006, 16:21

Отвечает: Константин
Здравствуйте, Cool_guy!
Легко.
Список берем (из БД или файла) и загоняем в массив.
Дальше сортировка
Если массив получается обыкновенный - то просто sort(или rsort для обратного порядка), если составной типа array(array(1,2,3), array(4,5,6), array(7,8,9)), то используем usort, для которой надо написать функцию сравнения элементов массива, которая возвращает >1, если первый должен быть перед вторым, и меньше 1, если второй должен быть перед первым.

Насчет ссылки, смотри приложение.

Это основа, не предназначенная для использования в чистом виде. Надо проверить, установлена ли переменная $_GET['sort'], загрузить из файл и т.д.
Смысл в том, что ты ссылаешься на тот же файл, но с другим параметром.

И еще, насчет
$var = (condition ? data1 : data2);
$var будет равно data1, если condition истинно и data2? если ложно.
Здесь это применяется для того чтобы если отсортировано по убыванию, повторное нажатие сортировало по возрастанию

Приложение:

---------
Лучше сделать и жалеть, чем жалеть о том что не сделал

Ответ отправил: Константин (статус: 4-ый класс)
Ответ отправлен: 10.05.2006, 16:50


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное