Détecter le dernier retour de mysql_fetch_array

leuntout -  
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je viens vous demander un coup de pouce pour un petit truc que je n'arrive pas à faire :

Dans mon programme php, je récupère les 3 dernières entrées de ma BDD et je les affiche sur une page avec un While. Jusque là rien de compliqué. Mais mon css est fait de sorte qu'au 3ème bloc, je dois changer la classe pour indiquer que c'est le dernier.

Je souhaite donc en PHP pouvoir identifier quand c'est le 3ème retour (le dernier) pour mettre un IF et changer ma classe CSS... je ne sais pas si c'est clair...

Le code :
$liste = mysql_query("SELECT * FROM contenu ORDER BY id DESC LIMIT 3");
while($affiche = mysql_fetch_array($liste))
{          
if "c'est le dernier retour"
{
  ?>
  <div class="dernier_block">
  <?php
}
else //bloc normal pour les 2 premiers retours
{
?> <div class="block">
<?php
}
?> 
    <h2><?php echo $affiche['titre'] ?></h2>
    <h5>dans <?php echo $affiche['catégorie'] ?></h5>
    <p><?php echo $affiche['description'] ?></p>
    </div>
<?php
}
?>


Merci de votre aide.
A voir également:

3 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Bonjour,

Tu peux enregistrer les données dans une variable que tu écrases à chaque tour, en sortie de boucle, c'est seulement la dernière donnée qui est présente.
0
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   58
 
Salut,

Une solution parmi d'autres serait de récupérer le nombre de lignes renvoyées par ta requête et d'utiliser un index pour savoir si on a atteint ou pas la dernière ligne dans ta boucle :

$liste = mysql_query("SELECT * FROM contenu ORDER BY id DESC LIMIT 3");

$nombreEnregistrements = mysql_num_rows($liste);
$index = 1;

while($affiche = mysql_fetch_array($liste))
{
	if ($index == $nombreEnregistrements) 
	{
		echo "<div class='dernier_block'>";
	}
	else //bloc normal pour les 2 premiers retours
	{
		echo "<div class='block'>";
	}
 
	echo "<h2>" . $affiche['titre'] . "</h2>";
	echo "<h5>dans " . $affiche['catégorie'] . "</h5>";
	echo "<p>" . $affiche['description'] . "</p>";
	echo "</div>";
    
    $index++;
}
0
Mazamazine Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   13
 
Si tu sais déjà que tu auras 3 tours, il te suffit d'ajouter un index (genre $i=1) et de le tester en début de boucle, l'incrémenter ensuite
0
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   58
 
Salut,
J'avais pensé à ça aussi mais je me suis dit qu'il pouvait y avoir moins de 3 enregistrements, du coup c'est sans doute mieux de vérifier le nombre d'enregistrements et de comparer avec une valeur incrémentée :)
0
Mazamazine Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   13 > CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention  
 
Alors oui, dans ce cas même chose mais en comptant avant. Et si $i=$nombre_lignes voila :)
0
Mazamazine Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   13
 
Ah pardon, je n'avais pas vu que tu avais répondu entre les deux. Ce que tu as fait semble parfait ^^
0
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   58
 
:)
0