2013-07-15 3 views
0

У меня есть код, чтобы искать дату между началом до с датыSearching Дата От DateTime таблицы

Моего поле базы данных, как это:

============ ===================================

ID | Userid | Получено

=========================================================================================================================================================== =

1 | abc | 2013-07-10 14:07:40

2 | abc | 2013-07-15 16:27:04

3 | rty | 2013-07-10 16:27:04

4 | rty | 2013-07-16 16:07:04

5 | abc | 2013-07-25 11:07:04

Примеры База данных:

Моя функция поиска, как это

$query = "SELECT * FROM visitdate WHERE id <> ''"; 

if(isset($dateFrom) && $dateFrom !=""){ 
$sql_dateFrom= $sql_dateFrom." AND receivedDate='".$dateFrom."'";} 

if(isset($dateTo) && $dateTo !=""){ 
    $sql_dateTo= $sql_dateTo." BETWEEN receivedDate='".$dateTo."'";} 

    $query = $query.$sql_dateFrom.$sql_dateTo; 

    while($row = mysql_fetch_array($result)){ 

    echo $row['Userid']; 
    } 

Тогда это мои образцы HTML форма:

<form name="form" type="post"> 
<input type="text" name="dateFrom"> 
<input type="text" name="dateTo"> 
<input type="submit" value="Searh"> 
</form> 

ПРОБЛЕМА: Как отобразить целые данные из этой базы пользователей в выбранную дату. Благодаря

+0

* Sidenote: * прекратить использование устаревшего 'mysql_ *' функции. вместо этого используйте MySQLi или PDO. – Raptor

+0

Попробуйте использовать 'SQL INNER JOINS', а также использовать' mysql_fetch_assoc' вместо 'mysql_fetch_array', если вы хотите перенести позже MySQLi и PDO. – Lekhnath

+0

Вы хотите показать данные с одной даты на другую .. ?? – Pankaj

ответ

0

Попробуйте построить этот запрос

"SELECT * FROM visitdata WHERE id <> '' AND receivedDate >= '" . $dateFrom . "' AND receivedDate <= '" . . "' 
+0

Привет, спасибо за запрос. Я уже пробовал это раньше. Он показывает только дату выбора и не показывает значение «Между датой» и «дата» для данных. –

0

попробовать преобразования пользовательского ввода времени штемпеля 1 и сравнить с помощью MySQL что-то вроде этого

SELECT FROM_UNIXTIME(receivedDate,"%Y-%m-%d") FROM mytable

+0

Хорошо. Я пытаюсь ... Спасибо Друзья –

0

Попробуйте создать свой запрос таким образом, , используя функцию даты mysql, вы поместите поля даты и времени в поля даты.

<?php 
$query = "SELECT * FROM visitdate WHERE id <> ''"; 

if(isset($dateFrom) && $dateFrom !=""){ 
    $sql_dateFrom= $sql_dateFrom." AND date(receivedDate)>='".date("Y-m-d", strtotime($dateFrom))."'"; 
} 

if(isset($dateTo) && $dateTo !=""){ 
    $sql_dateTo= $sql_dateTo." AND date(receivedDate)<='".date("Y-m-d", strtotime($dateTo))."'"; 
} 


$query = $query.$sql_dateFrom.$sql_dateTo; 

while($row = mysql_fetch_array($result)){ 
    echo $row['Userid']; 
} 

Это позволит в течение четырех возможных случаев

  1. Пользователь Определяет дату начала и окончания, получите записи между включительно
  2. пользователь указывает дату начала только получите записи для этой даты и позже
  3. Пользователь Указывает только дату окончания, получит записи за эту дату и до
  4. Пользователь ничего не указывает. Все записи возвращаются.

Если какой-либо из этих случаев не работает для вас, тогда просто проверяйте эти случаи и отображайте ошибки для пользователя перед созданием и запуском запроса.

+0

Хорошо .. Спасибо Дорогие друзья –

0

Добавить статическую 00:00:00 в начальную переменную и 23:59:59 в конечную переменную.

$sql_dateFrom= $sql_dateFrom." AND receivedDate='".$dateFrom." 00:00:00'";} 

if(isset($dateTo) && $dateTo !=""){ 
    $sql_dateTo= $sql_dateTo." BETWEEN receivedDate='".$dateTo." 23:59:59'";} 
0

Попробуйте это:

$query = "SELECT * FROM visitdate WHERE id <> ''"; 
if (!empty($dateFrom)) { 
    $query .= " AND receivedDate >= '$dateFrom'"; 
} 
if (!empty($dateTo)) { 
    $query .= " AND receivedDate <= '$dateTo'"; 
} 

$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    echo $row['Userid']; 
}