{MySQL} Page en PHP ne renvoie que la première lig

Fermé
magicpp Messages postés 13 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 27 février 2020 - 7 sept. 2009 à 18:51
 le père - 8 sept. 2009 à 17:00
Bonjour,
absolument novice en PHP, j'ai toutefois écrit la page ci-dessous afin d'obtenir une liste des articles de mon catalogue. Or je n'obtiens que la première référence. Pouvez vous m'expliquer comment traiter cette demande en boucle?

Par avance merci.



<?php







echo "

Inventaire :";



echo "

<br/>

<br/>

<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\" width=\"1200\">

<tr>

<td width=\"20\" align=\"center\"><strong>Code</strong></td>

<td width=\"60\" align=\"center\"><strong>Désignation</strong></td>

<td width=\"20\" align=\"center\"><strong>Stock</strong></td>

<td width=\"20\" align=\"center\"><strong>PA</strong></td>

</tr>

";



$host = "*******";

$user = "*******";

$password = "*******";

$bdd = "*******";



mysql_connect($host,$user,$password) or die("erreur de connexion au serveur");



mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");





// Creation et envoi de la requete

$query = "SELECT product_sku,product_name,product_in_stock,prix_achat FROM jos_vm_product";

$result = mysql_query($query);


// Recuperation des resultats

while($row = mysql_fetch_row($result)){




$Code = $row[0];

$Designation = $row[1];

$Stock = $row[2];

$PA = $row[3];






}

echo "<tr>\n

<td width=\"20\" align=\"center\">$Code</td>

<td width=\"60\" align=\"center\">$Désignation</td>

<td width=\"20\" align=\"center\">$Stock</td>

<td width=\"20\" align=\"center\">$PA</td>




</tr>\n
</table>
";
?>
A voir également:

2 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
7 sept. 2009 à 20:04
hello,
question
directement dans ta base de données quand tu fais
SELECT product_sku,product_name,product_in_stock,prix_achat FROM jos_vm_product

la liste correspond à ce que tu attends ?
Cette manip permet de savoir identifier le souci. Est-ce coté mysql ou est-ce coté programme php. Et à mon avis çà vient du php.
Je t'explique
Tu dois monter ta liste dans le boucle
1- tu as ta requete
$query = "SELECT product_sku,product_name,product_in_stock,prix_achat FROM jos_vm_product";

2- tu envoies à la BD
$result = mysql_query($query);

2.1- entête de tableau
echo("<table>");
echo("...");ect
3- tu récupéère le jeu de résultats
while($row = mysql_fetch_row($result)){ //Ouverture du boucle
//Construire ton tableau proprement
echo("<tr>");
echo("<td>".$row[0];."</td>");
echo("<td>".$row[1]."</td>");
echo("<td>".$row[2]."</td>");
echo("<td>".$row[3]."</td>");
echo("<td>".$row[4]."</td>");
echo("</tr>");
}//fermeture de la boucle.

Donc tanqu'il y a des lignes il va te monter ce tableau.
Ton entête doit etre en dehors de la boucle comme exemple

<td width=\"20\" <--
pk tu n'écris pas <td width="20" ça passe très bien
0
Bonjour

Tu dis que tu ne vois que la première référence, je dirais plutôt que tu ne vois que la dernière.
En effet, tu fais bien un while pour balayer toutes les lignes de résultats, mais tu ne fais l'affichage (echo...) qu'après être sorti du while. Donc ce que tu affiche, c'est ce qui avait été mis dans tes variables lors de la dernière boucle.
Il suffit presque de déplacer le } qui referme ton while, et de le mettre après le dernier echo.
Mais pour éviter de répéter aussi les <br /> et le <table>, il faut les mettre avant la boucle. et ne pas oublier le </table> après la boucle.
0