Problème affichage premier enregistrement d'une table

Petit nouveau ! | 3 Messages

12 mars 2011, 15:54

Bonjour à tous,

Je rencontre une problème pour faire afficher le premier enregistrement d'une table.
Il s'agit précisément de récupérer et faire afficher dans une page PHP, par ordre alphabétique, la liste de licenciés renseignés dans une table SQL (nommée "effectif"). L'ensemble des enregistrements s'affiche correctement, hormis le premier dont le numéro de ligne (id) dans la table n'est pas récupéré, laissant ainsi une ligne vide dans la page.

Voici le bout de code source de la page affichée :

Code : Tout sélectionner

<li> <p><a href="/pages/licencie.php?id_licencie="> </a></p> </li> <li> <p><a href="/pages/licencie.php?id_licencie=188">DURAND Pierre</a></p> </li> <li> <p><a href="/pages/licencie.php?id_licencie=5">DUPONT Marc</a></p> </li>
Et le code PHP source :
<ul>
				<?php do { ?>
        				<li>
						<p><a href="/pages/licencie.php?id_licencie=<?php echo $row_effectif['id_licencie']; ?>"><?php echo $row_effectif['nom']; ?> <?php echo $row_effectif['prenom']; ?></a></p>
					</li>
				<?php } while ($row_effectif = mysql_fetch_assoc($global)); ?>
			</ul>
Je vous remercie pour vos lumières.

ViPHP
xTG
ViPHP | 7331 Messages

12 mars 2011, 17:33

Cela vient du fait que tu n'utilises pas comme il faut l'instruction do ... while
En algorythme cela se traduit par : FAIRE ... TANQUE
Or ton parcours de n-uplets se trouve dans le TANTQUE, donc il n'y a absolument rien d'initialisé la première fois que tu parcours la boucle.
Transformes ta boucle en while et tu n'auras plus de problème.

Petit nouveau ! | 3 Messages

12 mars 2011, 20:56

Cela vient du fait que tu n'utilises pas comme il faut l'instruction do ... while
En algorythme cela se traduit par : FAIRE ... TANQUE
Or ton parcours de n-uplets se trouve dans le TANTQUE, donc il n'y a absolument rien d'initialisé la première fois que tu parcours la boucle.
Transformes ta boucle en while et tu n'auras plus de problème.
Merci pour ta réponse.
J'ai modifié ma boucle en WHILE. Je n'ai plus de première ligne vide à l'affichage, en revanche je n'ai toujours pas le premier enregistrement, et l'affichage commence donc au second.

Voici le code modifié :
<ul>
				<?php
					while ($row_effectif = mysql_fetch_assoc($global))
					{?>
        				<li>
						<p><a href="/pages/licencie.php?id_licencie=<?php echo $row_effectif['id_licencie']; ?>"><?php echo $row_effectif['nom']; ?> <?php echo $row_effectif['prenom']; ?></a></p>
					</li>
				<?php } ?>
			</ul>

Petit nouveau ! | 3 Messages

12 mars 2011, 21:09

Je pense avoir trouvé, via une recherche Google.

J'ai supprimé la ligne suivante en haut de page :
$row_global = mysql_fetch_assoc($global);
Tous les enregistrements s'affichent désormais, y compris le premier.

J'espère que cela pourra servir à quelqu'un d'autre.

Je n'ai pas trouvé de bouton "Résolu" pour ce topic, je ne sais s'il existe sur ce forum.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 mars 2011, 21:44

il y a une petit coche verte sur les réponse clique sur le message qui t'a aider.

pour info chaque appel a un mysql_fetch_* fait avancer les curseurs dans le jeux de résultat si tu l'appel sans exploiter les résultats il en manque ensuite ;)


@+
Il en faut peu pour être heureux ......

yns
Invité n'ayant pas de compte PHPfrance

04 juin 2011, 01:57

Slt,
j'ai pas bien compris comment ta resolu ton probleme
voila mon code :
<?php
	
			include("connexion.php");
		
			$sql = "select IDMARQ, LMARQ from marq;";
			$res = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			$data = mysql_fetch_assoc($res);
			if($data)
			{
				while($row = mysql_fetch_array($res)) 
				{
					echo '<tr>';
					echo '<td bgcolor="#CCCCCC">'.$row[1].'</td>';
					echo '</tr>'."\n";
				}
			}
		
		?>
la premiere ligne ne s'affiche pas