Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос на даты 
V
    Опции темы
ksnk
Дата 9.6.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Rodman, А результат запроса "show create table Orders ;" посмотреть нельзя? 
Тип поля там случайно не строковый?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Rodman
Дата 9.6.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



ksnk
Код

CREATE TABLE `Orders` (
 `ID_ORDER` int(11) NOT NULL auto_increment,
 `NUM_ORDER` varchar(255) NOT NULL,
 `FIO_ORDER` varchar(255) NOT NULL,
 `DATE_ORDER` date NOT NULL,
 `DATE_FINISH` date NOT NULL,
 `PHONE_user` varchar(100) NOT NULL,
 `ID_Programm` int(11) NOT NULL,
 `ID_Bank` int(11) NOT NULL,
 PRIMARY KEY  (`ID_ORDER`)
) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=cp1251

Цитата(bazzjr @  9.6.2009,  10:12 Найти цитируемый пост)
***WHERE UNIX_TIMESTAMP(твоя дата) > '".$date."' AND...***   и все в таком духе

шо то вааще нифига не берет... мона как то обе стороны к одному формату привести?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 9.6.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



опробовал еще так
Код

$sql .= "WHERE (DATE_FORMAT(Orders.DATE_ORDER, '%Y-%m-%d') >= '" . $_POST['date_start'] 
. "' and DATE_FORMAT(Orders.DATE_ORDER, '%Y-%m-%d') <= '" . $_POST['date_end'] . "');";    
ноль по фазе..
шо ему еще надо? может кодировка не та в БД?

Добавлено @ 21:37
может мне можно как то сделать данные в БД в формате - ДД.ММ.ГГГГ?!

Это сообщение отредактировал(а) Rodman - 9.6.2009, 21:37
PM MAIL WWW Skype GTalk YIM MSN   Вверх
ksnk
Дата 9.6.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



В базе все в порядке. Даты должны быть в понятном базе формате через '/'. Данные в базе уже в нормальном формате, никак их преобразовывать не надо.

А может причина в запросе и данных?
Код

SELECT ... FROM ProgrammCodes INNER JOIN (Orders INNER JOIN
  (NAME_Insurance INNER JOIN Insurance_Object ON NAME_Insurance.ID_Insurance = Insurance_Object.ID_NAME) 
ON Orders.ID_ORDER = Insurance_Object.ID_ORDER) ON ProgrammCodes.ID_Programm = Orders.ID_Programm   
WHERE (Orders.DATE_ORDER >= '2009-01-05' and Orders.DATE_ORDER <= '2009-08-05' );


Я, обычно, в таких случаях выкидываю лишние join'ы и смотрю что выводится... Отладка, называется...

Для начала - что выдаст запрос
Код

select * from Orders WHERE (Orders.DATE_ORDER >= '01/05/2009' and Orders.DATE_ORDER <= '08/05/2009' );

?

Это сообщение отредактировал(а) ksnk - 9.6.2009, 21:55


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Rodman
Дата 9.6.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



ksnk, почему слыши? у меня же тире как разделитель

и Orders.DATE_ORDER >= '01/05/2009', кто из них месяц - 05 или 01???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
bazzjr
Дата 9.6.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

Репутация: 4
Всего: 6



Rodman  незнаю что ты подразумаваешь под шо то вааще нифига не берет...


У меня все работае, в любых направлениях, формах и плоскостях...

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

`date` datetime NOT NULL default '0000-00-00 00:00:00'

на такой вид даты нужна переменная вида:

$date_ = date('Y-m-d H:i:s'); 
$date_ = strtotime($date_);  // переводим дату-время в UNIX формат 

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

SELECT * WHERE UNIX_TIMESTAMP(date) > '".$date_." AND 

сделай сначала простой запрос, с выбором одной даты, и потом усложняй его, вплоть до выбора всех нано секунд в кварковом поле нийтронного измерения изофогеда.
PM MAIL ICQ   Вверх
Rodman
Дата 9.6.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



хотя смотрю, что ему побоку со слешом
Код

select * from Orders WHERE (Orders.DATE_ORDER >= '01/01/2009' and Orders.DATE_ORDER <= '12/12/2009' )
ниче не выдает

Добавлено @ 22:17
Цитата(bazzjr @  9.6.2009,  22:06 Найти цитируемый пост)
$date_ = date('Y-m-d H:i:s'); 
$date_ = strtotime($date_);  // переводим дату-время в UNIX формат 
в моем случае надо наверно так?
на форме я ввожу 2009-05-05 и надо так?
Код

$date_ = $_POST['date_start'] . " 00:00:00";
$date_ = strtotime($date_);

$sql = "SELECT Orders.NUM_ORDER as Íîìåð, Orders.FIO_ORDER as Ôàìèëèÿ, ";
$sql .= "Insurance_Object.Tarif*Insurance_Object.Insurance_Summ AS Îïëàòà, ";
$sql .= "Orders.DATE_ORDER as Çàêëþ÷åíèå FROM Orders INNER JOIN Insurance_Object ON Orders.ID_ORDER = Insurance_Object.ID_ORDER ";
$sql .= "WHERE (UNIX_TIMESTAMP(Orders.DATE_ORDER) >= '" . $date_  . "' and UNIX_TIMESTAMP(Orders.DATE_ORDER) <= '" . $date2_ . "');";


Добавлено @ 22:20
блин.. выдает
Код

<br />            
<b>Strict Standards</b>:  strtotime() [<a href='function.strtotime'>function.strtotime</a>]: It is not safe to rely on the system's timezone 
settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of 
those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 
'MSD/4.0/DST' instead in <b>/home/profsty/public_html/users/universal/universal/order/PHPara.php</b> on line <b>8</b><br />            
<br />            
<b>Strict Standards</b>:  strtotime() [<a href='function.strtotime'>function.strtotime</a>]: It is not safe to rely on the system's timezone 
settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of 
those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 
'MSD/4.0/DST' instead in <b>/home/profsty/public_html/users/universal/universal/order/PHPara.php</b> on line <b>10</b><br />            


Это сообщение отредактировал(а) Rodman - 9.6.2009, 22:22
PM MAIL WWW Skype GTalk YIM MSN   Вверх
DimaSiK
Дата 10.6.2009, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



ты что, так и не решил проблемму? Неужели трудно сделать var_dump() уже SQL со всеми параметрами и попробывать его выполнить без PHP, с помощью какой-нибудь програмулины, например, EngineSite Mysql Client. Если и в программе будет пустой результат, то у тебя все верно работает, проблема в корректности данных. Если запрос вернет ошибку, то ты можешь посмотреть что за ошибка и попробывть привести запрос к рабочему виду, а потом перенести его в скрипт.

Я делал календарь, который только и использует всяческие вычисления и сравнения дат. Все прекрасно работало. Ошибка где-то в передаче параметра и формировании SQL.

Это сообщение отредактировал(а) DimaSiK - 10.6.2009, 02:44


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
Rodman
Дата 10.6.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



трабла была в том, что в таблицы перенеслись не все данные..
и INNER не мог найти соответствия...

спасибо за инфу.. узнал много нового
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1121 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.