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

Поиск:

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


CIO
****


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

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



Дароф...
выбираю из этитов даты в формате ГГГГ-ММ-ДД

Код

$sql = "SELECT Orders.NUM_ORDER, NAME_Insurance.NAME_Insurance, Insurance_Object.Insurance_Summ, Insurance_Object.Tarif, ProgrammCodes.Name_Programm, Orders.DATE_ORDER 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 >= " . $_POST['date_start'] . " and " . $_POST['date_end'] . "<=Orders.DATE_ORDER);";
$Connect = @mysql_connect(HOST, USER, PASS)
    or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database
$Db = @mysql_select_db(DB, $Connect)
    or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());
//execute query
$result = @mysql_query($sql, $Connect)
но все это дело выдает мне все даты... даже те что не попадают в промежуток...
как вылечить это?

сенкс
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MoLeX
Дата 8.6.2009, 11:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



WHERE (Orders.DATE_ORDER >= " . $_POST['date_start'] . " and " . $_POST['date_end'] . "<=Orders.DATE_ORDER);

на

WHERE (Orders.DATE_ORDER >= " . $_POST['date_start'] . " and Orders.DATE_ORDER <= " . $_POST['date_end'] . " );


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Shark
Дата 8.6.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



и собаки @ поубирай.. они не нужны


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 8.6.2009, 13:59 (ссылка) |  (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Rodman, действительно 
Цитата(Shark @  8.6.2009,  13:46 Найти цитируемый пост)
@ поубирай


во время разработки используй
Код

<?php
error_reporting(E_ALL); // или error_reporting(E_ALL & ~E_NOTICE); 
?>


а в боевом режиме
Код

<?php
error_reporting(0);
?>




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
skyboy
Дата 8.6.2009, 15:12 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(MoLeX @  8.6.2009,  12:59 Найти цитируемый пост)
а в боевом режиме

Цитата(MoLeX @  8.6.2009,  12:59 Найти цитируемый пост)
error_reporting(0);

в корне неверно.
так ты не узнаешь об ошибках, если они не будут вести к визуально очевидным сбоям.
а если будут вести, ты не узнаешь, в чем причина.
"в боевом режиме" должно быть то же самое значение error_reporting, но в конфигурации PHP должно стоять display_errors = 0 и log_errors = 1.
в таком случае, возможный зловред не получает никакой компрометирующей безопасность информации, а разработчик, при доступе к логам, имеет информацию для отладки и обнаружения неполадок.
PM MAIL   Вверх
Rodman
Дата 8.6.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Цитата(MoLeX @  8.6.2009,  11:09 Найти цитируемый пост)
WHERE (Orders.DATE_ORDER >= " . $_POST['date_start'] . " and " . $_POST['date_end'] . "<=Orders.DATE_ORDER);наWHERE (Orders.DATE_ORDER >= " . $_POST['date_start'] . " and Orders.DATE_ORDER <= " . $_POST['date_end'] . " );

сделал так и собак убрал...
тер в результат вааще ниче не попадает...

мож формат не тот?
и че незя через between сделать?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 8.6.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



вот явно задал
Код

//$sql= "SELECT Orders.NUM_ORDER, Orders.FIO_ORDER, Orders.PHONE_user, Insurance_Object.Insurance_Summ, Orders.DATE_FINISH  FROM Orders INNER JOIN Insurance_Object ON Orders.ID_ORDER = Insurance_Object.ID_ORDER WHERE (Orders.DATE_ORDER >= '" . $_POST['date_start'] . "' and Orders.DATE_ORDER <= '" . $_POST['date_end'] . "'); ";    
$sql= "SELECT Orders.NUM_ORDER, Orders.FIO_ORDER, Orders.PHONE_user, Insurance_Object.Insurance_Summ, Orders.DATE_FINISH  FROM Orders INNER JOIN Insurance_Object ON Orders.ID_ORDER = Insurance_Object.ID_ORDER WHERE (Orders.DATE_ORDER >= '2008-05-05' and Orders.DATE_ORDER <= '2010-06-05'); ";    
т.е. первая строка как надо (мож я Ваш совет как то не так сделал?)
вторая - явно задал даты, даже ординарные кавычки пихнул... работает... а так как надо - не хочет

как обойти?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Shark
Дата 8.6.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



что показывают:
var_dump($_POST['date_start'] ) и var_dump($_POST['date_end'])


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
bazzjr
Дата 8.6.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Rodman слухай а не проще ли тебе перевести все даты в UNIX_TIMESTAMP?

Раз ты сравниваешь даты, то это вполне приемлемо...

Лично я делал так, и все робит на ура.
PM MAIL ICQ   Вверх
Rodman
Дата 8.6.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



bazzjr, РНР для меня ново...
так что поясни плиз
PM MAIL WWW Skype GTalk YIM MSN   Вверх
bazzjr
Дата 8.6.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


CIO
****


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

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



Код

$sql = "SELECT Orders.NUM_ORDER, NAME_Insurance.NAME_Insurance, Insurance_Object.Insurance_Summ,  Insurance_Object.Tarif, ProgrammCodes.Name_Programm, Orders.DATE_ORDER 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' );";
$Connect = @mysql_connect(HOST, USER, PASS)
    or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database
$Db = @mysql_select_db(DB, $Connect)
    or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());
//execute query
$result = @mysql_query($sql, $Connect)

результат мне выдает 
---------------------------------------------------------------------------
11-44/67/3.1.11.1    Автомобиль    111    123    Программа 1    2009-04-14
11-44/30156/НС/1.1.1    Вертолет    231    144    Программа 2    2009-04-05
11-44/17547/НС/1.1.1    Велосипед    555    455    Программа 2    2009-07-01
11-44/17549/НС/1.1.1    Квартира    233    134    Программа 2    2009-06-11
11-44/17549/НС/1.1.1    Вертолет    421    234    Программа 2    2009-06-11
---------------------------------------------------------------------------

т.е. даты 2009-03-09 там нету (БД в атаче). в чем моджет быть причина?

Это сообщение отредактировал(а) Rodman - 9.6.2009, 09:22

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  111.jpg 119,42 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
bazzjr
Дата 9.6.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Очень вероятно что ты неправильно работаешь с DATE_ORDER, почитай на эту тему.

Лично я использую более простой способ(может и сложный)

1. Мы создаем переменную пхп в которой мы указываем нужные нам дату.
2. При запросе в БД конвертировать все в UNIX_TIMESTAMP и сравнивать.

пример:

$date = date('Y-m-d'); 
$date = strtotime($date_now); //переводим дату-время в UNIX формат для сравнения в БД 

запрос в БД:

***WHERE UNIX_TIMESTAMP(твоя дата) > '".$date."' AND...***   и все в таком духе


Работает без збоев и проблем, сам использую.


Это сообщение отредактировал(а) bazzjr - 9.6.2009, 10:18
PM MAIL ICQ   Вверх
Rodman
Дата 9.6.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



надо попробовать...

данные в БД вбивал в рукопашную... ниче не конвертил
PM MAIL WWW Skype GTalk YIM MSN   Вверх
bazzjr
Дата 9.6.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ничего конвертить не надо, данные в БД в их обычном виде.

Единственное что следует учесть:

Есть разница между date('Y-m-d H:i:s') и date('Y-m-d')

Т.е. эти даты должны быть одинаковы и в базе и в пхп
т.е. в базе есть 11-02-2009 тогда нужно date('d-m-Y'), если в базе 11-02-2009 21:01:09  то и пхп должен быть date('d-m-Y H:i:s')
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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