integration d'un formulaire dans un boucle

integration d'un formulaire dans un boucle - PHP - Programmation

Marsh Posté le 20-09-2006 à 23:24:34    

Bonjour à tous !
 
J'ai un problème que je n'arrive pas à résoudre avec un script.
 
Tout d'abord, mon script sert à afficher un système de marché ou les utilisateur peuvent vendre ou acheter des marchandises (ici du pain).
Pour ce faire, j'ai utilisé une boucle while pour ressortir toutes les entrées des utilisateurs qui ont été préalablement envoyées dans la base de donnée via un formulaire de vente.
Seulement, pour que l'utilisateur puisse acheter, j'ai integré un formulaire avec son traitement dans la boucle en croyant que de ce fait en cliquant sur le bouton "acheter" cela s'occuperait de la denrée affichée. Ce n'est pas faux !  
Cependant, lorsqu'on a plusieurs fois la denrée affichée avec un prix et un nombre différent, lorsque l'on clique sur le bouton "acheter", le formulaire traite toute les mises en vente de cette denrée.
 
Voici un petit screen pour que vous y voyez plus clair !
http://www.ekrutz.com/imgs/s/seigneurmartin/th-tabl.jpg
Vous pouvez constater qu'il y a des miches de pain mises en vente par 4 utilisateurs différents. Le problème est lorsque je veux acheter par exemple la miche de pain à 50 pièces, le formulaire traite l'achat des 3 miches à 4 et 5 pièces également !!
 
Bref, voici une partie du code avec en rouge le passage problèmatique :
 
$rq = "SELECT pain, painn, painp FROM marche WHERE village='$village'";
$result = @mysql_query ($rq);
 
 
while ($pain = mysql_fetch_array ($result))
{
 if ($pain[0] !== "0" )
 {
 
 echo "<tr>";
 echo "<td width='33%' height='12'><p align='center'>Miches de pain</td>";
 echo "<td width='33%' height='12'><p align='center'>$pain[0]</td>";
 echo "<td width='33%' height='12'><p align='center'>$pain[2] pièces</td>";
        echo "<td width='34%' height='12' valign='middle'>";
 
        echo "<form method='POST' action='marche_comtal.php'>";
        echo "<p align='center'><select size='1' name='nombre' />";
 
 for ($i = 1; $i <= $pain[0]; $i++)
 {
         echo "<option value='$i'>$i</option>";
        }
 
        echo "</select><input type='submit' value='Acheter' name='
submit_pain' />";
        echo "</form>";
        echo "</td>";
        echo "</tr>";
 
 
if (isset($_POST['submit_pain']))
 {
  // traiter l'achat
 
etc...

 
 
Merci d'avance à ceux qui essayeront de m'aider.
 
@++


Message édité par SeigneurMartin le 20-09-2006 à 23:26:30
Reply

Marsh Posté le 20-09-2006 à 23:24:34   

Reply

Marsh Posté le 20-09-2006 à 23:29:50    

Ba au lieu de répéter une seule ligne du contenu du formulaire, tu répéte un formulaire complet.
Sinon c'est checkbox et bouton de validation global.

Reply

Marsh Posté le 21-09-2006 à 01:06:36    

Merci de ta réponse, je n'y avais pas pensé !
 
J'ai cependant un deuxième problème !
J'ai donc appliqué tes conseil mais j'ai une variable récalcitrante !
Voici mon code avec en rouge la variable que le script me dit ne pas etre définie...
 
 
if (isset($_POST['submit']))
{
 // Regarde les achats effectués
 $legume = echappement($_POST['legume']);
 $poisson = echappement($_POST['poisson']);
 $pain = echappement($_POST['pain']);
 $viande = echappement($_POST['viande']);
 $fruit = echappement($_POST['fruit']);
 
 if ($legume !== "" )
 {
  // On traite l'achat de légumes
  // Regarde si le gars n'est pas en déficit
  $rq = "SELECT banque FROM membre WHERE nom='$nom'";
  $result = @mysql_query ($rq);
  $argent2 = mysql_fetch_array ($result);
  $argent2 = echappement($argent2[0]);
 
  if ($argent2 > "0" )
  {
   $nombre = echappement($_POST['nombre_legume']);
 
   $rq = "SELECT legume, legumep FROM marche WHERE village='$village' AND nom='$legume'";
   $result = @mysql_query ($rq);
   $leg = mysql_fetch_array ($result)
   
   $nb2 = $leg[0] - $nombre;
   $nb2 = echappement($nb2);
 
etc...
 
Je ne comprend pas, pourtant cette variable est clairement définie !! En tout cas, l'erreur est sur cette ligne, peut être s'agit-il de $nombre ?
Qu'en pensez-vous ?


Message édité par SeigneurMartin le 21-09-2006 à 01:07:14
Reply

Marsh Posté le 21-09-2006 à 01:37:41    

L'est passé où mon message :??:
 
Il te manque un ; après mysql_fetch_array ;)
 
C'est souvent sur la ligne du dessus quand il manque un ; que le parseur râle :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed