PHP: сравнить дату - PullRequest
       4

PHP: сравнить дату

0 голосов
/ 17 февраля 2011

Я столкнулся со следующей проблемой:

Я бы хотел сравнить сегодняшнюю дату с некоторыми датами в базе данных, затем, если она еще не истекла, покажите что-нибудь ... но если все даты в таблице истекли, покажите что-то вроде: «Лекция не запланирована» в это время вернитесь снова '.

Во-первых, это не проблема, но я не могу показать текст там, где нет будущих дат ...

Вот код,

Таблица: id, dateposted, date_course, title, body

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Я предполагаю, что вы используете MySQL.Несколько небольших изменений в вашем запросе и коде должны сделать эту работу.Вы обязательно должны выполнять такую ​​фильтрацию в запросе, а не в коде.

$sql = "SELECT *
    FROM L
    WHERE date_course < NOW() AND dateposted < NOW()
    ORDER BY L.dateposted DESC;";

$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_assoc($result))
    {
        echo "<a href='courses.php'>" . $row['title']. "</a>";
        echo "</br>";
    }
}
else
{
    echo "No results available";
}
0 голосов
/ 17 февраля 2011

Хотя вы могли бы сделать это гораздо эффективнее, улучшив свой запрос, вот конкретное исправление, которое вы запрашиваете:

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        $out = false;
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                $out = true;
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }
        if (!$out)
          echo 'Nothing found.';
0 голосов
/ 17 февраля 2011

Несколько способов сделать это.Можно было бы сделать сравнение даты частью запроса.Если строки не выбраны, покажите свое специальное сообщение.

В противном случае вы можете установить флаг, например

$has_courses = false;
while ($row = fetch() {
   $has_courses = true;
   ...
}
if (!$has_courses) { echo 'No courses'; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...