2014-01-20 2 views
1

SO Я написал код для получения списка предстоящих событий в течение следующих 7 дней, и он отлично работает и дает мне список предстоящих событий. Но проблема заключается в том, что он также дает запись событий прошлых дней. Вот мой код:Проблема В выборе для предстоящих событий

$today = strtotime("Now"); 
echo date('Y-m-d :H:i:s',$today)."<br>"; 
$leadDate = strtotime("+7 day", $today); 
echo date('Y-m-d :H:i:s',$leadDate)."<br>"; 
$rs = mysql_query("SELECT * FROM names WHERE due_date BETWEEN CURDATE() AND '$leadDate'") or die(mysql_error()); 
echo "<b>Dues for upcoming 7 days</b><br>"; 
while($row=mysql_fetch_assoc($rs)) 
{ 
    echo $row['name']." => ".$row['normal_date']."<br>"; 
} 

У меня есть таблица:

id| name | due_date | normal_date 
|1|name1|1390245240|Mon, 20 Jan 2014 19:14:00 GMT 
|2|name2|1390331640|Tue, 21 Jan 2014 19:14:00 GMT 
|4|name3|1390418040|Wed, 22 Jan 2014 19:14:00 GMT 
|5|name4|1390590840|Fri, 24 Jan 2014 19:14:00 GMT 
|6|name5|1390850040|Mon, 27 Jan 2014 19:14:00 GMT 
|7|name6|1390936440|Tue, 28 Jan 2014 19:14:00 GMT 
|8|name7|1396034040|Fri, 28 Mar 2014 19:14:00 GMT 
|9|name8|1398708840|Mon, 28 Apr 2014 18:14:00 GMT 
|10|name9|1390158840|Sunday, 19 Jan, 2014 
|11|name10|1390072440|Saturday, 18 Jan, 2014 
|12|name11|1390176000|20 Jan, 2015 

сегодня сервера дата 19 января 2014, но это также дает мне список: 18 Янв 2014, но я ищу следующий 7 дней record.and мой текущий сценарий дает мне следующий из положить:

2014-01-19 :20:44:30 
2014-01-26 :20:44:30 
Dues for upcoming 7 days 
name1 => Mon, 20 Jan 2014 19:14:00 GMT 
name2 => Tue, 21 Jan 2014 19:14:00 GMT 
name3 => Wed, 22 Jan 2014 19:14:00 GMT 
name4 => Fri, 24 Jan 2014 19:14:00 GMT 
name9 => Sunday, 19 Jan, 2014 
name10 => Saturday, 18 Jan, 2014 
name11 => 20 Jan, 2015 

Так почему же 18 января 2014 & 20 января 2014 идет в записи, где я нахожусь wrong.Please Помощь. Спасибо заранее.

ответ

0

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

$rs = mysql_query("SELECT * FROM names WHERE due_date BETWEEN '$today' AND '$leadDate'") or die(mysql_error()); 

Вместо функции CURDATE использовать $today.

+0

Спасибо за ответ. Разбитый ... он решил мою 1 проблему предыдущего дня, придя к результату, но вы можете видеть, что на моем месте поставлена ​​дата следующего года (20 января 2015 года). –

+0

@ user1168942 это из-за вашего unixtimestap не правильно, есть '1390176000', который не равен этой дате, снова проверьте отметку времени. Временной меткой для него является '1390229100'. Если это поможет вам пометить его как принятое. –

+0

Да, я так думаю. Я получаю этот 'UNIXTIMESTAMP' от' $ str = "15 января, 2015 г."; echo $ h = strtotime ($ str); die; 'this code.is этот неправильный метод? –

Смежные вопросы