Я пытаюсь использовать функцию dateTime для поля даты / времени, которое у меня есть в моей базе данных, чтобы проверить, насколько оно больше или меньше, чем другое.
Проблема, с которой я сталкиваюсь, заключается в том, что если я установлю условие на if ($date >= $end_date)
, тогда я получу только $noEvents
для вывода, даже если есть поля end_date
, которые на самом деле больше, чем $date
( текущая дата / время). Затем то же самое происходит, если я изменяю условие на if ($date <= $end_date)
, за исключением наоборот.
Кажется, что это, если оператор читает только один раз и не просматривает каждую запись.
Вот что находится в моей базе данных. Первые две записи имеют даты больше, чем сегодня. Третья запись имеет день, меньший или предыдущий сегодняшнего дня.
Если условие: if ($date >= $end_date)
Я получаю только $noEvents
.
Если условие: if ($date <= $end_date)
Я получаю все три записи базы данных, хотя запись под названием «Тест» не должна отображаться.
Кто-нибудь знает, почему это не работает правильно?
if ($date <= $end_date) {
$noEvents = 'No events are scheduled yet.';
} else {
events CREATE TABLE `events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`event_name` text NOT NULL,
`display_date` varchar(100) NOT NULL,
`description` text NOT NULL,
`event_img` text NOT NULL,
`end_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
try {
$con = new PDO('mysql:host='.$servername.';dbname=name', $username, $password);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql_events = "
SELECT *
FROM events
ORDER BY end_date ASC
LIMIT 3
";
if ($event_stmt = $con->prepare($sql_events)) {
$event_stmt->execute();
$event_rows = $event_stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($event_rows as $event_row) {
$event_name = $event_row['event_name'];
$display_date = $event_row['display_date'];
$event_description = $event_row['description'];
$end_date = $event_row['end_date'];
$date = new DateTime("now");
if ($date <= $end_date) {
$noEvents = 'No events are scheduled yet.';
} else {
echo '<div class="eventBlock">';
echo '<span class="hGc">'. $display_date .'</span>';
echo '<a href="#" class="hLink">'. $event_name .'</a>';
echo '<p class="dG margBot40">'. $event_description .'</p>';
echo '</div>';
}
}
if (isset($noEvents)) {
echo $noEvents;
}
}
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
Обновление - Нет событий Код
if ($event_stmt = $con->prepare($sql_events)) {
$event_stmt->execute();
$event_rows = $event_stmt->fetchAll(PDO::FETCH_ASSOC);
$noEvents = NULL;
foreach ($event_rows as $event_row) {
$event_name = $event_row['event_name'];
$display_date = $event_row['display_date'];
$event_description = $event_row['description'];
//$end_date = $event_row['end_date'];
$end_date = new DateTime($event_row['end_date']);
$date = new DateTime('now');
//$active_events = count($event_name);
//var_dump($active_events);
//if ($active_events === 0) {
if ($date <= $end_date) {
$noEvents = 'No events are scheduled yet.';
} else {
echo '<div class="eventBlock">';
echo '<span class="hGc">'. $display_date .'</span>';
echo '<a href="#" class="hLink">'. $event_name .'</a>';
echo '<p class="dG margBot40">'. $event_description .'</p>';
echo '</div>';
}
}
if ($noEvents) {
echo $noEvents;
}