我目前正在处理的下面的 php 脚本存在一些问题。我想要做的是列出按日期排序的 5 个事件。在我的数据库中,我有一个包含事件的表。每个事件都有一个日期 (DATETIME)、一个 ID 和一个名称。php 需要做的是检查包含事件的表并过滤已经通过的事件。如果事件已经过去,则不会显示。如果它仍然必须发生,它会显示出来。
现在的问题是,在 do while 循环中,脚本运行后似乎没有进入下一行。例如:如果数据库表中有 10 个事件,它会在测试时显示 10 倍于表第一行的事件。
我需要知道我做错了什么,或者是否有办法在每次循环运行后使行增加。
<?php
$test_query_kalender = "SELECT * FROM kalender ORDER BY datum ASC";
$test_result_kalender = mysql_query($test_query_kalender);
$rij_kalender = mysql_fetch_assoc($test_result_kalender);
$vandaag_unix = time();
$datum_unix = strtotime($rij_kalender['datum']);
$i = 0; //this variable is used to insure that only 5 items are being shown on the page
do{
if($datum_unix >= $vandaag_unix) //checks if the date of the event has already passed
{
//if the date has not passed, the event will be shown
echo "<p>" . date("d-m-Y", $datum_unix) . " " . $rij_kalender['naam'] . "</p>";
$i++;
}
else
{ //if it has already passed then it should put nothing, but for testing I put a line in it
echo "<p>" . $rij_kalender['naam'] . "</p>";
}
} while(($i <= 4) && ($rij_kalender = mysql_fetch_assoc($test_result_kalender)));
echo "<p>While loop finished</p>"; //just some checking
?>