Question

J'ai quelques problèmes avec le script php ci-dessous sur lequel je travaille actuellement.Ce que j'essaie de faire, c'est de dresser une liste de 5 événements classés par date. Dans ma base de données, j'ai une table avec des événements.Chaque événement a une date (DATETIME), un identifiant et un nom.Ce que le php doit faire est de vérifier la table avec les événements et de filtrer ceux qui sont déjà passés.Si un événement est déjà passé, il n'est pas affiché.Si cela doit encore se produire, cela s'affiche.

Maintenant, le problème est que dans la boucle do while, le script ne semble pas aller à la ligne suivante quand il a été exécuté. Par exemple: si la table de base de données contient 10 événements, elle affichera 10 fois l'événement qui se trouve sur la première ligne de la table lors du test.

J'ai besoin de savoir ce que je fais mal ou s'il existe un moyen d'augmenter la ligne après chaque exécution de la boucle.

<?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

?>
Était-ce utile?

La solution

Votre code charge la date une fois, puis la compare à celle d'aujourd'hui à chaque fois.Déplacer

$datum_unix = strtotime($rij_kalender['datum']);

dans la boucle, avant le contrôle de la date.

Autres conseils

Essayez ceci:

<?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

?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top