 |

08.11.2009, 12:45
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
С нами:
10537558
Репутация:
158
|
|
Сортировка глав
Работодатель задал сделать таблицу со статьями, т.е. id,name.
Из этой таблицы выводятся статьи в сортировке по алфавиту следующим запросом:
SELECT id,name FROM articles ORDER BY name ASC
И все было хорошо, таблички добавлялись, крокодильчики рождались.
Но тут работодатель стал добавлять статьи с Главами и просто их именовать мол "Название статьи. Глава 1."
Все было хорошо до занесения главы номер 10, 11.. этк.
т.к. теперь главы выводятся примерно в таком порядке:
Название статьи. Глава 1.
Название статьи. Глава 10.
Название статьи. Глава 11.
..
Название статьи. Глава 2.
Название статьи. Глава 3.
..
Как быть? Статей около сотни и делать отдельное позиционное поле для каждой а потом еще и добавлять его, я даже и не знаю. И при добавлении каждой новой статьи придется еще все эти 100 статей менять это самое поле.
По ID сортировать нет смысла, т.к. между этими главами еще были добавлены промежуточные статьи, совершенно не относящихся к главам.
|
|
|

08.11.2009, 13:24
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
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
|
|
|

08.11.2009, 13:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
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
|
|
|

08.11.2009, 16:30
|
|
Постоянный
Регистрация: 04.04.2008
Сообщений: 527
С нами:
9526747
Репутация:
272
|
|
В PHP не силен. но друг когда-то писал скрипт, столкнулся с аналогичной проблемой, решил ее выводом к примеру от 100 до 1.
Тоесть 100 99 98..1 вроде выводило нормально.
Незнаю, может это и бред, но как помню..
|
|
|

09.11.2009, 01:53
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
С нами:
10537558
Репутация:
158
|
|
Gifts
Я действительно поражен, большое человеческое спасибо вам.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|