Php mysql et liste de choix

Fermé
patricia - 31 janv. 2007 à 10:28
 patricia - 4 févr. 2007 à 07:59
Bonjour,
Je construit une page qui propose des produits de démarrage de feu. J'ai réussi à construire une base de données mysql avec easyphp. Toute fière, je me suis dit que ce n'était pas si difficile que ça et puis la je bute, je n'arrive qu'à afficher la même liste de choix pour tous les produits alors qu'il en faudrait une par ligne de produit et pas une pour toute la table.
Je ne sais pas si je suis assez précise dans ma question, voici un bout de mon code avec mes questions:

$requete='SELECT * FROM produits where reference="Flamnat"';
$valeur=mysql_query($requete);
print(mysql_affected_rows().' ligne(s)<br>');
while ($tableau=mysql_fetch_array($valeur)){
echo '<table class="tbleforma">';
echo '<tr;>';
echo '<td align="left";>'.$tableau['reference'].'</td>';
echo '<td class="produits">'.$tableau['description'].'</td>';
echo '<td class="condit">'.$tableau['conditionnement'].'</td>';
echo '<td class="prix" align="right">'.$tableau['prix'].' chf</td>';//comment différencier les différentes catégories de produit pour que la liste déroulante soit unique à chaque produit?
echo'<td align="right">Quantité</td>';
echo'<td align="right">
<SELECT name="qte ">
<OPTION VALUE="0">0</OPTION>
<OPTION VALUE="1 ">1</OPTION>
<OPTION VALUE="2 ">2</OPTION>
<OPTION VALUE="3 ">3</OPTION>
<OPTION VALUE="4 ">4</OPTION
<OPTION VALUE="5 ">5</OPTION>
</SELECT>

</td>';

echo'<td align="right">carton</td>';//est il possible que ici s'affiche sac ou sachet ou carton selon le produit choisi?
echo '</tr>'."\n";
echo '</table">'."\n";
}
?>

Merci pour votre aide, je débute, soyez indulgents ;-)
A voir également:

3 réponses

P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
31 janv. 2007 à 10:49
tu ne boucle pas au bon endroit
$requete='SELECT * FROM produits where reference="Flamnat"';
$valeur=mysql_query($requete);
print(mysql_affected_rows().' ligne(s)<br>');
echo '<table class="tbleforma">';
while ($tableau=mysql_fetch_array($valeur)){
echo '<tr;>';
echo '<td align="left";>'.$tableau['reference'].'</td>';
echo '<td class="produits">'.$tableau['description'].'</td>';
echo '<td class="condit">'.$tableau['conditionnement'].'</td>';
echo '<td class="prix" align="right">'.$tableau['prix'].' chf</td>';//comment différencier les différentes catégories de produit pour que la liste déroulante soit unique à chaque produit?
echo'<td align="right">Quantité</td>';
echo'<td align="right">
<SELECT name="qte ">
<OPTION VALUE="0">0</OPTION>
<OPTION VALUE="1 ">1</OPTION>
<OPTION VALUE="2 ">2</OPTION>
<OPTION VALUE="3 ">3</OPTION>
<OPTION VALUE="4 ">4</OPTION
<OPTION VALUE="5 ">5</OPTION>
</SELECT>

</td>';

echo'<td align="right">carton</td>';//est il possible que ici s'affiche sac ou sachet ou carton selon le produit choisi?
echo '</tr>'."\n";
}
echo '</table">'."\n";
 

essaie comme ca
0
Merci j'ai fait la modif mais ça ne me change rien à l'affichage?
0
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
31 janv. 2007 à 13:36
reprennons le pb

tu fais une requete
tu veux l'afficher
une ligne de tableau pour une ligne d'enregistrement

qu'entends tu par e n'arrive qu'à afficher la même liste de choix pour tous les produits alors qu'il en faudrait une par ligne de produit ??
la liste, c'est la liste contenu dans ta variable $tableau ou dans ton select ??
0
et bien la liste des articles vient de mysql un article par ligne ca c'est ok. seulement à la fin de chaque ligne j'ai besoin que l'on puisse sélectionner la quantité du produit dans le select genre 1 carton ou 1 sac et je n'arrive à mettre qu'un seul select pour tous les produits tu vois?

Merci de te pencher sur ce pb avec moi :-)
0
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185 > patricia
2 févr. 2007 à 09:40
J'ai 2 compréhension de ce que tu demandes.
les voici :

1- tu ne veux pas une liste "select" par ligne mais une a la fin de ton
tableau par exemple, c'est ca ??
dans ce cas ...
$requete='SELECT * FROM produits where reference="Flamnat"';
$valeur=mysql_query($requete);
print(mysql_affected_rows().' ligne(s)<br>');
echo '<table class="tbleforma">';
while ($tableau=mysql_fetch_array($valeur)){
echo '<tr;>';
echo '<td align="left";>'.$tableau['reference'].'</td>';
echo '<td class="produits">'.$tableau['description'].'</td>';
echo '<td class="condit">'.$tableau['conditionnement'].'</td>';
echo '<td class="prix" align="right">'.$tableau['prix'].' chf</td>';//comment différencier les différentes catégories de produit pour que la liste déroulante soit unique à chaque produit?


echo'<td align="right">carton</td>';//est il possible que ici s'affiche sac ou sachet ou carton selon le produit choisi?
echo '</tr>'."\n";
}
echo '<tr>';
echo'<td align="right">Quantité</td>';
echo'<td align="right" colspan="3">
<SELECT name="qte ">
<OPTION VALUE="0">0</OPTION>
<OPTION VALUE="1 ">1</OPTION>
<OPTION VALUE="2 ">2</OPTION>
<OPTION VALUE="3 ">3</OPTION>
<OPTION VALUE="4 ">4</OPTION
<OPTION VALUE="5 ">5</OPTION>
</SELECT>

</td>';
echo '</tr>';
echo '</table">'."\n";

2- si tu veux pouvoir identifier chaque select (1 par ligne), il faut leur donner des noms différents, comme qte pour quantité suivi de la référence produit, ou juste ta référence produit comme suit
$requete='SELECT * FROM produits where reference="Flamnat"';
$valeur=mysql_query($requete);
print(mysql_affected_rows().' ligne(s)<br>');
echo '<table class="tbleforma">';
while ($tableau=mysql_fetch_array($valeur)){
echo '<tr;>';
echo '<td align="left";>'.$tableau['reference'].'</td>';
echo '<td class="produits">'.$tableau['description'].'</td>';
echo '<td class="condit">'.$tableau['conditionnement'].'</td>';
echo '<td class="prix" align="right">'.$tableau['prix'].' chf</td>';//comment différencier les différentes catégories de produit pour que la liste déroulante soit unique à chaque produit?
echo'<td align="right">Quantité</td>';
echo'<td align="right">
<SELECT name=" '.$tableau['reference'].'">
<OPTION VALUE="0">0</OPTION>
<OPTION VALUE="1 ">1</OPTION>
<OPTION VALUE="2 ">2</OPTION>
<OPTION VALUE="3 ">3</OPTION>
<OPTION VALUE="4 ">4</OPTION
<OPTION VALUE="5 ">5</OPTION>
</SELECT>
</td>';

echo'<td align="right">carton</td>';//est il possible que ici s'affiche sac ou sachet ou carton selon le produit choisi?
echo '</tr>'."\n";
}
echo '</table">'."\n";

0
patricia > P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009
2 févr. 2007 à 11:24
merci, je commence à comprendre...pour commencer il faut que je structure ma base de données différemment...je fais tout ça, je teste et je reviens vers toi :-) Merci :-)
0
patricia > P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009
2 févr. 2007 à 15:13
<?php
$requete='SELECT * FROM produits where reference="Flamnat"';
$valeur=mysql_query($requete);
echo '<table class="tbleforma">';
while ($tableau=mysql_fetch_array($valeur)){
echo '<tr;>';
echo '<td class="ref";>'.$tableau['reference'].'</td>';
echo '<td class="produits">'.$tableau['description'].'</td>';
echo '<td class="condit">'.$tableau['conditionnement'].'</td>';
echo '<td class="chf">'.$tableau['prix'].'</td>';
echo '<td class="chf">'.$tableau['monnaie'].'
</td>';
echo'<td align="right">Quantité</td>';
echo'<td align="right">
<SELECT name=" '.$tableau['reference'].'">
<OPTION VALUE="0">0</OPTION>
<OPTION VALUE="1 ">1</OPTION>
<OPTION VALUE="2 ">2</OPTION>
<OPTION VALUE="3 ">3</OPTION>
<OPTION VALUE="4 ">4</OPTION
<OPTION VALUE="5 ">5</OPTION>
</SELECT>
</td>';

echo '<td align="left">'.$tableau['condqte'].'</td>';
echo '</tr>'."\n";
echo '</table">'."\n";
}
?>

Merci , j'ai changé la structure de la base j'ai ajouté un champs 'condqte' qui dit si le produit vient en sa sachet carton etc.
Tu me parlais de pouvoir identifier chaque select (1 par ligne), en leur donnant des noms différents comme qte pour quantité suivi de la référence produit, ou juste ta référence là, j'utilise la référence mais comment faire pour ajouter également la description, le conditionnement, la quantité et le 'condqte'?

J'ai essayé en fasiant
<SELECT name=" '.$tableau['reference'].['description'].['conditionnement'].['quantité'].['condqte'].'">
mais sans succès. Une piste par laquelle je peux comprendre?
0
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185 > patricia
2 févr. 2007 à 16:52
tu veux identifier ta liste par tout ca ???
ca me semble un peu beaucoup
je suppose que tu voudrais afficher ta référence, ta description, ton conditionnement, ta quentité et ton conditionnement.

L'objectif d'avoir une liste par ligne et de pouvoir mettre une quantité par produit.
et pour pouvoir associer la quantité au produit tu pourrais appeler ta liste avec la référence. qui je suppose est une clé primaire (pas de doublon dans ta table).

Pour info $tableau['reference'].['description'].['conditionnement'].['quantité'].['condqte'] voudrait dire que ton tableau reference, comprend un sous tableau description qui lui même comprend un sous tableau conditionnement, qui lui même ....
si tu veux mettre tes valeurs dans une chaine il te faut les concaténer.
$valeur = $tableau['reference'];
$valeur .= $tableau['description'];
$valeur .= $tableau['conditionnement'];
$valeur .= $tableau['quantité'];
$valeur .= $tableau['condqte'];

mais ce ne sera pas simple pour travailler avec ce genre d'élèment.
0