Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: динамический запрос
 
 автор: hdmi   (28.02.2011 в 02:26)   письмо автору
 
 

Eсть две переменные с начальной и конечной датой, как выбрать интервал(от и до)?
Проблема только с выборкой по дате, а так всё работает.


$start_age = "1978-03-11";
$end_age; = "1989-05-08";

$query = "SELECT * FROM `table`";
 
$temp_query = array();

$temp_query = array();
if(!empty($looking )) $temp_query[] = "`looking ` = ".$looking ;
if(!empty($county)) $temp_query[] = "`county` = ".$county;

if(!empty($start_age)) $temp_query[] = "`birthday` >= ".$start_age;            - не захватывает дату
if(!empty($end_age)) $temp_query[] = "`birthday` <= ".$end_age;              - не захватывает дату
if(count($temp_query) > 0) $query .= " WHERE ";
$query .= implode(' AND ', $temp_query);
 
$res = mysql_query($query);

  Ответить  
 
 автор: cheops   (28.02.2011 в 10:38)   письмо автору
 
   для: hdmi   (28.02.2011 в 02:26)
 

Строку с датой нужно заключить в кавычки
if(!empty($start_age)) $temp_query[] = "`birthday` >= '$start_age'";
if(!empty($end_age)) $temp_query[] = "`birthday` <= '$end_age'";

  Ответить  
 
 автор: hdmi   (28.02.2011 в 14:19)   письмо автору
 
   для: cheops   (28.02.2011 в 10:38)
 

Спасибо! Заработало.

У меня назрел такой вопрос.
Может ещё быть одна переменная($looking2):

if ($am == 1 and $looking == 1)
{
    $looking = 1;
    $looking2 = 3;
}
elseif ($am == 2 and $looking == 2)
{
    $looking = 2;
    $looking2 = 3;
}
elseif ($am == 1 and $looking == 2)
{
    $looking = 2;
}
elseif ($am == 2 and $looking == 1)
{
    $looking = 1;
}


Как сделать чтобы выбирало и по $looking("`looking ` = ".$looking ;) и по @looking2("`looking ` = ".$looking2 ;) . $looking2 либо существует либо нет.

if(!empty($looking )) $temp_query[] = "`looking ` = ".$looking;
if(!empty($county)) $temp_query[] = "`county` = ".$county; 

  Ответить  
 
 автор: cheops   (28.02.2011 в 14:59)   письмо автору
 
   для: hdmi   (28.02.2011 в 14:19)
 

Когда $looking2 существует, кому приоретет отдается ($looking2 или $looking)? Вообще какова логика появления второй переменной?

  Ответить  
 
 автор: hdmi   (28.02.2011 в 17:11)   письмо автору
 
   для: cheops   (28.02.2011 в 14:59)
 

done...

  Ответить  
 
 автор: mihdan   (28.02.2011 в 12:01)   письмо автору
 
   для: hdmi   (28.02.2011 в 02:26)
 

Про BETWEEN в MySQL прочитайте.

[поправлено модератором]

  Ответить  
 
 автор: Trianon   (28.02.2011 в 12:10)   письмо автору
 
   для: mihdan   (28.02.2011 в 12:01)
 

это ничего, что операция BETWEEN .. AND здесь слабо применима?

  Ответить  
 
 автор: mihdan   (01.03.2011 в 03:07)   письмо автору
 
   для: Trianon   (28.02.2011 в 12:10)
 

>Eсть две переменные с начальной и конечной датой, как выбрать интервал(от и до)?
Я лишь дал подсказку по конкретному вопросу.

  Ответить  
 
 автор: cheops   (28.02.2011 в 12:31)   письмо автору
 
   для: mihdan   (28.02.2011 в 12:01)
 

Кроме того, одна из дат может отсуствовать, тогда BETWEEN применить не удасться.

  Ответить  
 
 автор: mihdan   (01.03.2011 в 03:09)   письмо автору
 
   для: cheops   (28.02.2011 в 12:31)
 

Как это может не существовать, если они явно в коде определены?

<?php
$start_age 
"1978-03-11"
$end_age; = "1989-05-08"
// ..................................
?>

  Ответить  
 
 автор: cheops   (01.03.2011 в 11:00)   письмо автору
 
   для: mihdan   (01.03.2011 в 03:09)
 

Это может быть приведено для примера, если имеется if-условие для проверки существования переменной, в рабочем коде одной из границ может не существовать. Более того, в случае дат, цен и других интервалов, такие половинчатые условия достаточно часто встречаются.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования