Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Выборка данных из mysql и сортировка на php (http://forum.oszone.net/showthread.php?t=122590)

dima1981 11-11-2008 13:32 949446

Выборка данных из mysql и сортировка на php
 
Например при размещении объяаления о товаре, автор указывает время до которого это объявление действительно, у меня это так две формы первая марка, вторая страна производитель и к ним есть три формы первая день, вторая месяц и третья год

выборка осуществляется по марке и по стране производителю

и вот хорошо бы потом когда данные полученны сортировать их по дате до которого действительно объявление т.е. например чтобы список начинался с тех объяалений, у которых время подходит вот, вот за ним идут те у которых побольше времени в запасе, скажите пожалуйста как это осуществить?
Заранее спасибо.

Coutty 11-11-2008 14:10 949490

Допустим, таблица my_table такая:
[ id | mark | proizv | data ]

Пишем "SELECT * FROM `my_table` WHERE `mark`='Gnusmas' ORDER BY `data` ASC";
Выбираем все строки из таблицы my_table, где марка - Гнусмас и упорядочиваем по дате средствами СУБД. Вместо ASC можно написать DESC, тогда в обратном порядке будет упорядочиваться.

dima1981 11-11-2008 14:20 949502

по дате это понятно, только есть дата которая возникает от timestamp и есть дата которую заносят в таблицу из полей день, месяц, год сортировку надо по этим полям например переменные $d $m $g и потом при получении данных из базы сделать так чтобы они не по дате размещения сортировались, но по переменным $d $m $g и первыми выводились данные у которых $d $m $g самые меньшие значения, за ними те у которых они побольше чем у первых но меньше чем у третьих, за ними третьи у которых значение больше чем у вторых но меньше чем у четвертых и т.д.

Coutty 11-11-2008 14:30 949514

Какая разница по какому полю сортировать?
Можно и так:
"SELECT * FROM `my_table` WHERE `mark`='Gnusmas' ORDER BY `g` ASC, `m` ASC, `d` ASC";
Сначала идёт сортировка по годам, если годы совпадают, то по месяцам. Если и месяцы совпадают, то по дням. По идее, здесь будет примерно такая последовательность:
[год | месяц | день ]
2008 | 08 | 02
2008 | 08 | 14
2008 | 09 | 05
2008 | 09 | 13
2008 | 12 | 30
2009 | 01 | 05
и т.д.

dima1981 11-11-2008 15:06 949555

Спасибо


Время: 11:27.

Время: 11:27.
© OSzone.net 2001-