Сразу к делу.
Есть табличка с полями. Некоторые из них, это
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
и
`na_kogda` date NOT NULL ,
Есть страничка, которая выводит все данные из таблицы по порядку. Запрос выглядит вот так
$result = mysql_query("SELECT *, DATE_FORMAT(`time`, '%d-%m-%Y %H:%i:%s') as `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') as `formatTime1` FROM zakazy LIMIT $start, $num");
А как сделать так, чтобы записи сортировались приблизительно следующим образом? (не знаю какую функцию подставить вместо "тек_дата")
$result = mysql_query("SELECT *, DATE_FORMAT(`time`, '%d-%m-%Y %H:%i:%s') as `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') as `formatTime1` FROM zakazy WHERE `na_kogda`=>тек_дата ORDER BY `na_kogda`ASC LIMIT $start, $num");
тоесть нужен запрос который выводил бы записи в которых "на когда"=>текущая дата и сортировала их по возрастанию от текущей даты.
Спасибо.
Спустя 2 минуты, 57 секунд (17.01.2012 - 15:18) Renden написал(а):
NOW()?
Спустя 2 минуты, 35 секунд (17.01.2012 - 15:20) asokol написал(а):
Под тек_дата подразумевается данный момент или сегодняшний день?
Спустя 4 минуты, 29 секунд (17.01.2012 - 15:25) UnWind написал(а):
Цитата |
сортировала их по возрастанию от текущей даты. |
Скорее всего по убыванию) Как запись в таблице, может быть выше текущей даты ? (Если сайт не гадалок и оракулов конечно же) :D
Попробуй вот так вот, как я уже и сказал, если сайт не предсказаний, то даты выше сегоднешней, в базе быть не может.
ORDER BY date
Ну если же конечно сайт гадалок, то можно использовать следующий вариант (Как было написано выше)
NOW()
Тебе в помощь. NOW - строковая функция, возвращающая текущую дату и время.
Надеюсь помог.
P.S.:> А вообще, что бы постоянно формат даты не менять - можешь воспользоваться триггерами, либо свой создать, либо в интернете готовых - куча.
Спустя 5 минут, 28 секунд (17.01.2012 - 15:30) WisesT написал(а):
Цитата (asokol @ 17.01.2012 - 12:20) |
Под тек_дата подразумевается данный момент или сегодняшний день? |
сегодняшняя дата. чч-мм-гггг
Спустя 2 минуты, 54 секунды (17.01.2012 - 15:33) WisesT написал(а):
Цитата (UnWind @ 17.01.2012 - 12:25) | ||
Скорее всего по убыванию) Как запись в таблице, может быть выше текущей даты ? (Если сайт не гадалок и оракулов конечно же) :D Попробуй вот так вот, как я уже и сказал, если сайт не предсказаний, то даты выше сегоднешней, в базе быть не может. ORDER BY date Ну если же конечно сайт гадалок, то можно использовать следующий вариант (Как было написано выше) NOW() Тебе в помощь. NOW - строковая функция, возвращающая текущую дату и время. Надеюсь помог. |
чуток запутался в твоем ответе.
Вместо тек_дата - какую функцию поставить?
Сортировку делать ASC или DESC
П.С. да и вообще. Верно ли написан синтаксис запроса?
я в этом деле недавно.
Спустя 3 минуты, 55 секунд (17.01.2012 - 15:37) UnWind написал(а):
WisesT
NOW() - она вернет текущую дату.
Насчет сортировки, я думаю скорее всего просто
Тебе ведь нужно их в порядке возрастания вывести, т.е. например:
NOW() - она вернет текущую дату.
Насчет сортировки, я думаю скорее всего просто
ORDER BY DESC
Тебе ведь нужно их в порядке возрастания вывести, т.е. например:
Цитата |
10) 10.12.2011 9) 9.12.2011 8) 8.12.2011 |
А не наоборот.
Если наоборот, то DESC можешь вообще убрать и оставить только ORDER BY.
В общем запрос должен получится примерно таким:
SELECT * FROM таблица WHERE date ORDER BY NOW() DESC;
Спустя 3 минуты, 44 секунды (17.01.2012 - 15:41) WisesT написал(а):
понял. запомню. спасибо.
а синтаксис (кавычки эти....) верно написано?
а синтаксис (кавычки эти....) верно написано?
Спустя 2 минуты (17.01.2012 - 15:43) asokol написал(а):
$result = mysql_query("SELECT *, FROM_UNIXTIME(`time`, '%d-%m-%Y %H:%i:%s') `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') `formatTime1` FROM `zakazy` WHERE `na_kogda`=>CURDATE() ORDER BY `na_kogda`DESC LIMIT $start, $num;");
Спустя 1 минута, 37 секунд (17.01.2012 - 15:45) UnWind написал(а):
WisesT
Синтаксис в принципе порядке, главное дальше не испортить всё.
Я в предыдущем посте, привел тебе пример (Отредактировал), можешь ориентироваться на него.
Синтаксис в принципе порядке, главное дальше не испортить всё.
Я в предыдущем посте, привел тебе пример (Отредактировал), можешь ориентироваться на него.
Спустя 1 минута, 38 секунд (17.01.2012 - 15:46) UnWind написал(а):
asokol
Ну и зачем нужно было делать сравнение в WHERE ?
Если оно и так будет сортироваться в порядке убывания, а дат как я уже сказал выше нынешней - быть не может
Ну и зачем нужно было делать сравнение в WHERE ?
Если оно и так будет сортироваться в порядке убывания, а дат как я уже сказал выше нынешней - быть не может

Спустя 1 минута, 46 секунд (17.01.2012 - 15:48) WisesT написал(а):
с запросом врод разобрались. Но что-то не выводит данные.
Скину весь код обработчика. С переделаным запросом.
При таком обработчике данные не выводятся. Ошибку не бьет, но пишет
Скину весь код обработчика. С переделаным запросом.
<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Переменная хранит число сообщений выводимых на станице
$num = 20;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM zakazy");
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT *, FROM_UNIXTIME(`time`, '%d-%m-%Y %H:%i:%s') `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') `formatTime1` FROM `zakazy` WHERE `na_kogda`=>CURDATE() ORDER BY `na_kogda`DESC LIMIT $start, $num;");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>
При таком обработчике данные не выводятся. Ошибку не бьет, но пишет
Цитата |
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\192.168.1.21\www\out_1.php on line 28 |
Спустя 1 минута, 53 секунды (17.01.2012 - 15:50) UnWind написал(а):
WisesT
Это ошибка в запросе. Сейчас в общем я поправлю.
Это ошибка в запросе. Сейчас в общем я поправлю.
Спустя 1 минута, 7 секунд (17.01.2012 - 15:51) asokol написал(а):
`na_kogda`=>CURDATE()
`na_kogda`>=CURDATE()
`na_kogda`>=CURDATE()
Спустя 49 секунд (17.01.2012 - 15:52) WisesT написал(а):
Нужно что бы отображалось след образом.
Допустим сегодня 17.01.2012
а "на когда" отображалось что бы так
18.01.2012
18.01.2012
21.01.2012
13.01.2012
а когда станет 19.01
заказы с датой "на когда" < сегодняшней даты - отсекались
Допустим сегодня 17.01.2012
а "на когда" отображалось что бы так
18.01.2012
18.01.2012
21.01.2012
13.01.2012
а когда станет 19.01
заказы с датой "на когда" < сегодняшней даты - отсекались
Спустя 1 минута, 34 секунды (17.01.2012 - 15:53) UnWind написал(а):
WisesT
А ну так и нужно было объяснять)
Мы ж не настрадамусы, что бы знать - что это скрипт заказов)))
А ну так и нужно было объяснять)
Мы ж не настрадамусы, что бы знать - что это скрипт заказов)))
Спустя 46 секунд (17.01.2012 - 15:54) WisesT написал(а):
все. подправил.
Спасибо ребята.
финал выглядит так
СПС
П.С. возможно кто-то знает выход из этой ситуации
Спасибо ребята.
финал выглядит так
$result = mysql_query("SELECT *, FROM_UNIXTIME(`time`, '%d-%m-%Y %H:%i:%s') `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') `formatTime1` FROM `zakazy` WHERE `na_kogda`>=CURDATE() ORDER BY `na_kogda`ASC LIMIT $start, $num;");
СПС
П.С. возможно кто-то знает выход из этой ситуации
Спустя 2 минуты, 46 секунд (17.01.2012 - 15:57) UnWind написал(а):
WisesT
Ну тогда ладно.
Слушай, только переменную там у себя отфильтруй
хотя бы на
Ну тогда ладно.
Слушай, только переменную там у себя отфильтруй
$page = $_GET['page'];
хотя бы на
$page = !empty($_GET['page']) ? $_GET['page'] : NULL;
Спустя 19 секунд (17.01.2012 - 15:57) asokol написал(а):
UnWind, а завтра их тоже не будет? Если они будут удаляться или переноситься, то тогда не надо WHERE.
Чтобы на завтрашний день показывались заказы:
`na_kogda`>=DATE_ADD(CURDATE(), INTERVAL 1 DAY)
Чтобы на завтрашний день показывались заказы:
`na_kogda`>=DATE_ADD(CURDATE(), INTERVAL 1 DAY)
Спустя 2 минуты (17.01.2012 - 15:59) UnWind написал(а):
asokol
Да я сперва не понял, что дата может быть больше сегодняшней) Я же спрашивал в начале, мне никто этого не сказал
Да я сперва не понял, что дата может быть больше сегодняшней) Я же спрашивал в начале, мне никто этого не сказал

Спустя 33 секунды (17.01.2012 - 16:00) WisesT написал(а):
Цитата (UnWind @ 17.01.2012 - 12:57) |
WisesT Ну тогда ладно. Слушай, только переменную там у себя отфильтруй
хотя бы на
|
отказался твой код работать. жалуется на ?
Спустя 1 минута, 1 секунда (17.01.2012 - 16:01) UnWind написал(а):
WisesT
Перепиши его, там опечатки были - я только что исправил. Клавиши блин некоторые западают.
Перепиши его, там опечатки были - я только что исправил. Клавиши блин некоторые западают.
Спустя 1 минута, 45 секунд (17.01.2012 - 16:02) UnWind написал(а):
Кстати, не забываем ставить плюсики, всем кто помогал 
З.Ы.:> Спасибо за плюсик

З.Ы.:> Спасибо за плюсик
