[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка по дате,и вывод
Andruhaphp
Значит у меня в базе хранится инфа,я её извлекаю оттуда и сортирую по дате,но дата у меня хранится в строковом типе и поэтому сортирует по первому числу например если 13.04 и 17.04 сортирует красиво а если с разными месяцами например 13.04,17.04,15.05,то сортирует данные так что ставит за 15.05 между 13 и 17.Как быть?
вот код:

$zap=mysql_query("SELECT * FROM `t_messages` WHERE `poluchatel`='$login' ORDER BY `date` DESC",$db);
while ($ros = mysql_fetch_assoc($zap) )
{
$c1=$ros['id'];
if ($ros['readm']==1)
{
echo "- <a href='readmsg.php?id={$c1}' class=topsell4>".$ros['subject']."</a> -<b class=size1> ".$ros['date']."</b><a href='drop_mail.php?id={$c1}' class=topsell>  |  Удалить</a>"."</br>";
}
else if ($ros['readm']==0)
{
echo "- <a href='readmsg.php?id={$c1}' class=readsell4>".$ros['subject']."</a> -<b class=size1> ".$ros['date']."</b><a href='drop_mail.php?id={$c1}' class=topsell>  |  Удалить</a>"."</br>";
}
}


Пробывал дату отедльно извлекать,и делать strtotime,вносить в массив и сортировать в массиве,но эт только для даты,как присобачить,что бы в зависимости от даты сортировало красиво,сначала учитывало месяц а потом день



Спустя 11 часов, 15 минут, 37 секунд (19.05.2011 - 08:41) linker написал(а):
Менять формат dd.mm на mm.dd. Я правда не совсем понял, у тебя действительно дата только число и месяц?

Спустя 8 часов, 27 минут, 43 секунды (19.05.2011 - 17:09) Andruhaphp написал(а):
нет ещё время,не могу желание клиента,что бы именно так записано было

Спустя 15 часов, 44 минуты, 45 секунд (20.05.2011 - 08:54) linker написал(а):
Andruhaphp
А что, клиенту есть какое-то дело до того, каким образом в базе даты хранятся? Или он гуру программист и разбирается в этих вопросах?

Имхо, в базе ты можешь хранить даты как положено, но отдавать их на страницу можно в любом формате. Вобщем, поле с датой переводишь в тип DATETIME. Запрос, примерный:
SELECT DATE_FORMAT(`my_date`, '%d.%m %H:%i') AS `my_date` FROM `my_table` ORDER BY `my_date` DESC
(перевести в нужный формат, можно и средствами PHP). Сделаешь и всё у тебя будет афигенно сортироваться.

Спустя 1 час, 6 минут, 44 секунды (20.05.2011 - 10:01) Zerstoren написал(а):
перед выводом даты ты можешь сделать
list($day,$mounth,$year) = explode('-',$date);

и уже делай с ними что пожелаешь, а если он начнет наезжать что в БД как-то не так. То скажи ему что либо сортировка и дата в БД хранится так или никаких сортировок.

Учитесь ставить клиентов перед фактом их глупости.
Я порой говорю что так ничего работать не будет по конкретной причине.

А вообще клиенту должно быть по барабану на архитектуру и реализацию сайта.
Начнет наезжать про БД, скажи что не мешайте делать мне мою работу правильно.

Спустя 3 минуты, 43 секунды (20.05.2011 - 10:04) ИНСИ написал(а):
Andruhaphp можно немного по другому сделать. Сортируй по ID. Как пример:

SELECT * FROM `table` ORDER BY `id` DESC

Спустя 9 минут, 15 секунд (20.05.2011 - 10:14) linker написал(а):
velbox
Если ему надо по дате, то причём здесь id. Есть тыща и одна ситуация, когда дата не имеет такого же направленного движения как и автоинкрементный id.

Спустя 11 минут, 13 секунд (20.05.2011 - 10:25) ИНСИ написал(а):
linker я согласен с тобой, но в данном случае по запросу можно понять, что автору надо вытащить сообщения по дате:

Цитата
$zap=mysql_query("SELECT * FROM `t_messages` WHERE `poluchatel`='$login' ORDER BY `date` DESC",$db);


Спустя 1 час, 55 минут, 36 секунд (20.05.2011 - 12:20) linker написал(а):
velbox
С выборкой проблемы у человека нет, есть проблема в неправильном хранении дат в базе данных. Сделает как я сказал и будет ему счастье.

Спустя 52 минуты, 32 секунды (20.05.2011 - 13:13) ИНСИ написал(а):
Цитата
С выборкой проблемы у человека нет

Либо я неправильно что-то понял, либо ты smile.gif По словам:
Цитата
например 13.04,17.04,15.05,то сортирует данные так что ставит за 15.05 между 13 и 17.Как быть?

Я понял, что у человека выборка дат идет неверно.

Спустя 1 час, 12 минут, 58 секунд (20.05.2011 - 14:26) linker написал(а):
Не выборка, а сортировка
... ORDER BY `date` DESC
а не сортирует, потому что даты хранит неправильно. Отсортируй в уме значения 13.04, 17.04, 15.05, у меня в уме как и у мускула, тоже получается
17.04
15.05
13.04

Спустя 2 дня, 8 часов, 1 минута, 56 секунд (22.05.2011 - 22:28) Andruhaphp написал(а):
ого,сколько сообщений,как сделал,поставил формат DATETIME в базе и вношу в правильном формате,потом извлекаю когда из базы делаю

$dater= $row['date'];
$daters = explode(" ", $dater);
$datersd =explode("-",$daters[0]);
$daterst =explode(":",$daters[1]);
echo "<td width=130><font class=size1>".$datersd[2].".".$datersd[1].".".$datersd[0]."-".$daterst[0].":".$daterst[1]."</font></td>";

Спустя 1 минута, 25 секунд (22.05.2011 - 22:29) Andruhaphp написал(а):
Всем спасибо,тема закрыта!

Спустя 10 часов, 25 минут, 28 секунд (23.05.2011 - 08:55) linker написал(а):
Так проще
echo "<td width=130><font class=size1>" . date('d.m.Y H:i', strtotime($row['date'])) . "</font></td>";

Спустя 1 день, 13 часов, 5 минут, 46 секунд (24.05.2011 - 22:00) Andruhaphp написал(а):
спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.