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

magicpp Messages postés 13 Statut Membre -  
 le père -
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>
";
?>
Configuration: Windows Vista
Firefox 3.5.2

2 réponses

  1. moderno31 Messages postés 900 Statut Membre 92
     
    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
  2. le père
     
    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