Page 1 sur 1

PHP/mysql - souci affichage de données dans tableau HTMl

Posté : 30 mars 2006, 16:02
par Sana
Bonjour,
Je suis a nouveau un debutant en PHP, et oui ca fait deja plusieurs fois que j'essai PHP ;)
Bref, j'ai un petit souci que je vous explique ci dessous,
J'ai reussi a le resoudre en bidouillant mais j'aimerais qd meme bien savoir où est l'erreur.

je recupere des données dans une table (sous mysql) je veux afficher le resultat dans un tableau HTMl.
Le souci est qu'il manque une des données dans le tableau ...
j'ai 5 enregistrements, et le tableau ne m'en affiche que 4 ...
J'ai bidouillé en affichant manuellement (hors de la boucle while) le 1 er enregistrement...

Mon code :
<div id="contenu">
	<h1>Contacts : </h1>
		 <?	$requete="SELECT nomcontact,telcontact FROM annuaire ORDER BY nomcontact";
			$res=mysql_query($requete);
			$ligne=mysql_fetch_array($res);
			$nbLignes=mysql_num_rows($res);
			
			echo ('<table width="100%" >');
			echo('<tr><td>'.$ligne[1].':</h1></td> <td>'.$ligne[2] .'</td></tr>');  [color=orange]// pour forcer l'affichage du 1 er enregistrement![/color]
			
			echo('nb de contacts : '.$nbLignes.'<br>');
			
			while ($ligne=mysql_fetch_array($res)) 
			
				{extract($ligne);
				
				echo ('<tr><td><H1>'.$nomcontact.':</h1></td> <td>' .$telcontact.'</td></tr>');
				echo('<tr><td colspan="2"><hr></td></tr>');
				}
			echo('</table>'); 
		 ?>
</div>
Ma table :

Code : Tout sélectionner

dcontact nomcontact telcontact 13 toto 0682549556 30 personne 0011223344 17 essai 0002225566 26 ab 8596321470 29 paul 12345678900
Ce qui donne dans ma page HTML :

Code : Tout sélectionner

Contacts : nb de contacts : 5 ab: 8596321470 // afficher hors de la boucle while essai: 0002225566 paul: 12345678900 personne: 0011223344 toto: 0682549556

Cordialement
Sana

Ps : j'ai essayé avec une boucle for, mais sans reussite :
<?	$requete="SELECT nomcontact,telcontact FROM annuaire ORDER BY nomcontact";
			$res=mysql_query($requete);
			$ligne=mysql_fetch_array($res);
			$nbLignes=mysql_num_rows($res);
			
			echo ('<table width="100%" >');
			//echo('<tr><td><H1> '.$ligne[1].':</h1></td> <td>'.$ligne[2] .'</td></tr>');
			echo('<tr><td colspan="2"><hr></td></tr>');
			echo('nb de contacts : '.$nbLignes.'<br>');

			for($i=0;$i<$nbLignes;$i++)
				{
				$ligne=mysql_fetch_array($res);
				echo ('<tr><td><H1> '.$ligne['nomcontact'].':</h1></td> <td>' .$ligne['telcontact'].'</td></tr>');
				echo('<tr><td colspan="2"><hr></td></tr>');
				}
			echo('</table>'); 
		 ?>

Posté : 30 mars 2006, 17:25
par Maitrepylos
Bonjour,

Essaye ceci
<div id="contenu">
<h1>Contacts : </h1>
<?php $requete="SELECT nomcontact,telcontact FROM annuaire ORDER BY nomcontact";
$res=mysql_query($requete);
$nbLignes=mysql_num_rows($res);
?>
<table width="100%" >
nb de contacts : <?php echo $nbLignes ?><br>
<?php
while ($ligne=mysql_fetch_array($res)){

echo ('<tr><td><H1>'.$ligne['nomcontact'].':</h1></td> <td>' .$ligne['telcontact'].'</td></tr>');
echo('<tr><td colspan="2"><hr></td></tr>');
}
?>
</table>
</div> 

ok merci c bon mais ...

Posté : 30 mars 2006, 17:53
par Sana
Merci ca marche,
Mais pourrais tu me dire où etait mon erreur ?
Je la voit tjs pas en faite ;)
ce n'etais que l'instruction extract($ligne); qui etait de trop peut etre.
Merci

Posté : 30 mars 2006, 17:59
par Maitrepylos
Tu faisais appel a des variables qui n'existes pas
echo ('<tr><td><H1>'.$nomcontact.':</h1></td> <td>' .$telcontact.'</td></tr>'); 

dans ce cas c'est la tableau $ligne qu'il fallait appeler

Posté : 30 mars 2006, 18:08
par Hermès
Non ça n'est pas à cause de ça je pense...

extract()