ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Сортировка глав
  #1  
Старый 08.11.2009, 12:45
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию Сортировка глав

Работодатель задал сделать таблицу со статьями, т.е. id,name.
Из этой таблицы выводятся статьи в сортировке по алфавиту следующим запросом:
SELECT id,name FROM articles ORDER BY name ASC

И все было хорошо, таблички добавлялись, крокодильчики рождались.
Но тут работодатель стал добавлять статьи с Главами и просто их именовать мол "Название статьи. Глава 1."
Все было хорошо до занесения главы номер 10, 11.. этк.
т.к. теперь главы выводятся примерно в таком порядке:

Название статьи. Глава 1.
Название статьи. Глава 10.
Название статьи. Глава 11.
..
Название статьи. Глава 2.
Название статьи. Глава 3.
..

Как быть? Статей около сотни и делать отдельное позиционное поле для каждой а потом еще и добавлять его, я даже и не знаю. И при добавлении каждой новой статьи придется еще все эти 100 статей менять это самое поле.

По ID сортировать нет смысла, т.к. между этими главами еще были добавлены промежуточные статьи, совершенно не относящихся к главам.
 
Ответить с цитированием

  #2  
Старый 08.11.2009, 13:24
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

PHP код:
<pre>
<?php 
$arr 
= array("Название статьи. Глава 1.",
            
"Название статьи. Глава 10.",
            
"Название статьи. Глава 2.",
            
"Название статьи. Глава 11.",
            
"Название статьи. Глава 3.");
natsort($arr);
print_r ($arr);
?>
</pre>
Функция natsort(), как получить данные в массив думаю объяснять не надо

http://www.php.ru/manual/function.natsort.html
 
Ответить с цитированием

  #3  
Старый 08.11.2009, 13:54
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Solker Попробуйте так:
Код:
SELECT id,name FROM articles ORDER BY substring_index(name, 'Глава ',1),substring_index(name, 'Глава ', -1)+0 ASC
Работать должно всяко быстрее, чем ПХПшный natsort
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #4  
Старый 08.11.2009, 16:30
Andres
Постоянный
Регистрация: 04.04.2008
Сообщений: 527
Провел на форуме:
1494768

Репутация: 272


По умолчанию

В PHP не силен. но друг когда-то писал скрипт, столкнулся с аналогичной проблемой, решил ее выводом к примеру от 100 до 1.
Тоесть 100 99 98..1 вроде выводило нормально.
Незнаю, может это и бред, но как помню..
 
Ответить с цитированием

  #5  
Старый 09.11.2009, 01:53
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию

Gifts
Я действительно поражен, большое человеческое спасибо вам.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка прокси Mescalito Анонимность 5 08.08.2009 06:19
Сортировка акков Вконтакте) Phoenixy Болталка 4 12.06.2009 12:40
Сортировка по маскам nupaT ICQ 3 23.01.2009 22:40
Сортировка базы нужна помощь DHT Болталка 11 21.12.2008 22:19
Сортировка номеров icq nc.STRIEM ICQ 0 10.06.2006 20:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ