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

Форум MySQL

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

 

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

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

тема: Сформировать правильный запрос к БД
 
 автор: Softic   (28.01.2010 в 19:48)   письмо автору
 
 

есть таблица в БД след вида:

------------------------------------------------------------------------------------
|   id   |  marka  |   descr   |    all_descr    |     Date    |    Time      |
------------------------------------------------------------------------------------    


Мне нужен запрос, с помощью которого можно было бы вытащить из БД события из поля descr, отфильтрованные по полю marka по Date, и по Time, то есть чтобы выводились только те события, которые еще не прошли. составил след. запрос, но не пойму как его изменить чтобы он выдавал мне еще и отфильтрованные по полю marka данные, помогите дельным советом.


<?php
$curdate
=date("Y-m-d");
$curtime=date("H:i");
$dt_elements explode('-',$curdate);
$tm_elements explode(':',$curtime);
$timestamp mktime($tm_elements[0]-4,$tm_elements[1],0,$dt_elements[1],$dt_elements[2],$dt_elements[0]);
$curtime=strftime('%H:%M:%S',$timestamp);
$curdate=strftime('%Y-%m-%d',$timestamp);

$auto_marks 'bmw';  // тут хранится заранее известная марка, по которой и нужна фильтрация. 

$query "SELECT * FROM auto WHERE Date Like('%$curdate%') AND Time > '$curtime' Limit 11";
?>


и сразу такой вопрос, что если мне затем нужно будет вывести след. конструкцию из этой же таблицы. К примеру нужно отобразить поле descr - all_descr и чтобы все это также было отфильтровано по марке хранящейся в переменной $auto_marks = 'bmw';

  Ответить  
 
 автор: Trianon   (28.01.2010 в 20:22)   письмо автору
 
   для: Softic   (28.01.2010 в 19:48)
 

уберите поля Date и Time в одно поле. Это одна сущность.
Про операцию Like - забудьте. Есть операция =

и вот эти все пляски -
$curdate=date("Y-m-d");
$curtime=date("H:i");
$dt_elements = explode('-',$curdate);
$tm_elements = explode(':',$curtime);
$timestamp = mktime($tm_elements[0]-4,$tm_elements[1],0,$dt_elements[1],$dt_elements[2],$dt_elements[0]);
$curtime=strftime('%H:%M:%S',$timestamp);
$curdate=strftime('%Y-%m-%d',$timestamp);

в чем их смысл?
Почему не написать WHERE date_time >= NOW() - INTERVAL 4 HOUR AND marka = 'bmw' ?

  Ответить  
 
 автор: Softic   (29.01.2010 в 01:52)   письмо автору
 
   для: Trianon   (28.01.2010 в 20:22)
 

Trianon дело в том что мне нужно чтобы в базе значения времени и даты были разделены, всмысле в разных столбцах.
А если я добавляю к своему выше указанному запросу условие фильтрации по марке, то ничего невыводится, и ошибки тоже нет.

<?php 
"SELECT * FROM auto WHERE Date Like('%$curdate%') AND Time > '$curtime' AND marka= 'BMW' Limit 11";
?>

  Ответить  
 
 автор: Trianon   (29.01.2010 в 02:42)   письмо автору
 
   для: Softic   (29.01.2010 в 01:52)
 

> дело в том что мне нужно чтобы в базе значения времени и даты были разделены, всмысле в разных столбцах.

И Вы можете привести аргумент в пользу того, что Вам это нужно?
Я подобный придумывал минут пять.

>А если я добавляю к своему выше указанному запросу условие фильтрации по марке, то ничего невыводится, и ошибки тоже нет.
>
>
>"SELECT * FROM auto WHERE Date Like('%$curdate%') AND Time > '$curtime' AND marka= 'BMW' Limit 11";
>?>

Вы не убрали LIKE.
Смысла дальше продолжать разговор нет.

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

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