Как отсортировать базу MySQL?

zzzzz
На сайте с 12.12.2006
Offline
204
1526

Тема для меня настолько далёкая, что даже не знаю как правильно спросить :confused:.

В общем есть каталог сайтов, но все записи в этом каталоге отображаются по алфавиту, а не, например, по мере добавления, т.е. чтобы последняя запись отображалась в каталоге первой, а не где то на букву Х.

В функционале каталога нет возможности настроить порядок вывода сайтов, поэтому, как я предполагаю, нужно найти какой-нибудь скрипт или программу, с помощью которой я бы смог отсортировать записи в том порядке, в котором мне нужно.

Посоветуйте что-нибудь необразованному ;)

/////
I
На сайте с 29.04.2006
Offline
135
#1

Определенная сортировка заложена уже в самом скрипте, и раз у вас сортировка по алфавиту - то это не просто так...

Нужно править запросы в скрипте...

У вас в конце запросов должно стоять типа:

order by name

name - столбец с названием...

Если вы хотите сортировать по дате добавления, то нужно примерно так:

order by id DESC

Тоесть сортировка по ID в обратном порядке...но тут нужен столбец id с auto_increment, оно в большинстве случаях есть..

zzzzz
На сайте с 12.12.2006
Offline
204
#2

ipconfig, незнаю в правильном ли направлении я иду, но нашёл в индексном файле пару строчек, похожих на то, о чём Вы писали. Насколько я разобрался в условных обозначениях своей базы MySQL, то сейчас у меня стоит вывод сайтов по "flag", что у меня означает типа как платно размещённые, а дальше, если я не ошибаюсь идёт сортировка по "firmname".

Правильно ли я понимаю, что теперь мне надо вместо firmname поставить то что отвечает за дату, у меня в базе это date ???:)

$r = $db->query ( "SELECT * FROM $db_users WHERE ((category LIKE '%:$_GET[cat]#$_GET[subcat]#0:%') or (category LIKE '$_GET[cat]#$_GET[subcat]#0:%') or (category LIKE '%:$_GET[cat]#$_GET[subcat]#0') or (category LIKE '$_GET[cat]#$_GET[subcat]#0')) and firmstate = 'on' $hide_d ORDER BY flag, firmname LIMIT $page1, $def_count_dir" );



$r = $db->query ( "SELECT * FROM $db_users WHERE (category LIKE '$_GET[cat]#$_GET[subcat]#$_GET[subsubcat]%' or category LIKE '%:$_GET[cat]#$_GET[subcat]#$_GET[subsubcat]:%' or category LIKE '%:$_GET[cat]#$_GET[subcat]#$_GET[subsubcat]' or category LIKE '$_GET[cat]#$_GET[subcat]#$_GET[subsubcat]') and firmstate = 'on' $hide_d ORDER BY flag, firmname LIMIT $page1, $def_count_dir" );
I
На сайте с 29.04.2006
Offline
135
#3

В правильном направлении )))

Правда не понятно, какой идиот писал эти запросы... вывод записей через 5 like?=))

zzzzz
На сайте с 12.12.2006
Offline
204
#4

Чего то не получается нифига :(

T
На сайте с 11.08.2005
Offline
181
#5
zzzzz:
Чего то не получается нифига :(

А поле "date" в таблице имеет тип DATE (DATETIME) или VARCHAR? Тоесть дата хранится в базе в виде ГГГГ-ММ-ЧЧ или в другом?

"ORDER BY flag, firmname" в запросе означает, что сортировка сначала будет производится по полю flag и только потом по firmname.

Соответственно Вам нужно этот кусочек изменить на:

"ORDER BY date ASC" - для обычной сортировки

"ORDER BY date DESC" - для сортировки в обратном порядке

zzzzz
На сайте с 12.12.2006
Offline
204
#6
Timen:

"ORDER BY date DESC" - для сортировки в обратном порядке

Заработала зараза!!!

Timen, ipconfig огромное спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий