do-while循环中行不会增加

| 我目前正在使用的以下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) . \"&nbsp;&nbsp;\" . $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

?>
    
已邀请:
您的代码只加载一次日期,然后每次都将其与今天进行比较。移动
$datum_unix = strtotime($rij_kalender[\'datum\']);
在日期检查之前进入循环。     
尝试这个:
<?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

while($rij_kalender = mysql_fetch_assoc($test_result_kalender))
{
  $datum_unix = strtotime($rij_kalender[\'datum\']);
  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) . \"&nbsp;&nbsp;\" . $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>\";
  }

  if ($i == 5) break;
}

echo \"<p>While loop finished</p>\"; //just some checking

?>
    

要回复问题请先登录注册