Problème pour additionner des variables

Problème pour additionner des variables - PHP - Programmation

Marsh Posté le 17-06-2007 à 21:27:59    

salut a tous
 
Je suis un débutant en php et je suis en trains de faire un formulaire pour pouvoir passer une commande sur mon site web.
Mais voila mon problème, j'ai programmé se code:

Code :
  1. <?php
  2.    include('config.php');
  3.    // connection à la BDD
  4.    mysql_connect("$db_host", "$db_user", "$db_pass" ); // Connexion au serveur MySQL
  5.        mysql_select_db("$db" ); // Sélection de la base lcg
  6.    //recuperation des infos
  7.    $produits = mysql_query("SELECT reference,designation,prix FROM bt_pro_produits" );
  8.    //boucle pour récuperer les infos
  9.    while ($donnees = mysql_fetch_array($produits) )
  10.  
  11.    {
  12. ?>
  13. <tr>
  14.        <td><?php echo $donnees['reference']; ?></td>
  15.        <td><?php echo $donnees['designation']; ?></td>
  16.        <td><?php echo $donnees['prix']; ?></td>
  17.    <td>
  18. <input type="text" name="quantite" value="0" /></td>
  19.    </tr>
  20. <?php


 
Mais mon problème c'est que j'ai plus de 100 produits dans ma BDD et la variable $_POST['quantite'] que je vais récupérer dans une autre page pour calculer le nombre de produits a le même nom pour tous les produits alors je ne pourrai pas faire d'addition du nombre de produits sélectionné je pense et après calculer le prix et plusieurs trucs? avez vous une idée pour faire se que je veux faire? merci

Reply

Marsh Posté le 17-06-2007 à 21:27:59   

Reply

Marsh Posté le 17-06-2007 à 21:56:23    

remplace  
<input type="text" name="quantite" value="0" />
 
par
<input type="text" name="quantite_<? echo  $donnees['reference']; ?>" value="0" />
 
et ensuite dans ta page de traitement, tu fais :

Code :
  1. foreach($_POST as $cle => $valeur)
  2. {
  3.     if(strpos('quantite') === false) // les 3 egals sont importants
  4.            continue;
  5.     $ref = substr($cle,8);
  6.     $quantite = $valeur;
  7. // ici tu traite le resultat
  8. }

Reply

Marsh Posté le 17-06-2007 à 22:09:22    

ok merci je vais esseyer de comprendre et d'en faire un truc.

Reply

Marsh Posté le 18-06-2007 à 05:48:18    

Bonjour,
 
Il serait plus simple d'utiliser un tableau :

Code :
  1. //3


Et pour récupérer :

Code :
  1. <?php
  2. foreach ($_POST['quantite'] as $reference => $quantite)
  3. {
  4.   //-- traitement --------------------
  5. }
  6. ?>


Message édité par jeca le 18-06-2007 à 05:50:07
Reply

Marsh Posté le 18-06-2007 à 07:10:55    

la j'ai un peut de mal, si je voulais calculer le nombre de produits sélectionné en fonction de la quantité grâce à la référence je ferai comment? merci


Message édité par hppp le 18-06-2007 à 07:13:33
Reply

Marsh Posté le 18-06-2007 à 07:27:32    

Désolé, mais une ligne a sauté :
<input type="text" name="quantite[<? echo  $donnees['reference']; ?>]" value="0" />
 
Ce qui donnera dans les sources html générées, pour un produit ayant la référence '123456' :
<input type="text" name="quantite[123456]" value="0" />
 
Si le client a choisit une qté de 10, et en reprenant le code du foreach :
$reference = 123456;
$quantite = 10;
 

Reply

Marsh Posté le 18-06-2007 à 11:47:33    

ah ok merci beaucoup  :jap:

Reply

Marsh Posté le 18-06-2007 à 13:50:21    

Re moi, j'ai encore un petit probléme que j'arrive pas a résoudre et je suis dessus depuis se matin.
Je suis en trains de faire une page d'identification et voila le code pour traiter les données récolté par le formulaire:
 

Code :
  1. <?php
  2.    //inclure le fichier
  3.    include('config.php');
  4.    // connection à la BDD
  5.    mysql_connect("$db_host", "$db_user", "$db_pass" ); // Connexion au serveur MySQL
  6.        mysql_select_db("$db" ); // Sélection de la base lcg
  7.    //recuperation des info du id
  8.    $id = mysql_query('SELECT id FROM lcg_pro_clients WHERE id=' . htmlentities($_POST['id']))
  9.    //boucle pour récuperer le mot de passe
  10.    while ($pass_bdd = mysql_fetch_array($id) )
  11.  
  12.    {
  13.    if (mysql_num_rows($pass_bdd['mdp']) == 0)
  14.    {
  15.     header('Location: index.php');
  16. }
  17. elseif (mysql_num_rows($pass_bdd['mdp']) == 1)
  18.    {
  19.    //$_SESSION['id'] = $_POST['id'];
  20.     header('Location: index_accueil.php');
  21.    }
  22.    }
  23.     mysql_close(); 
  24.  
  25. ?>


et j'ai cette erreur: Parse error: parse error in c:\easyphp1-8\www\pro\identification2.php on line 10
mais je n'arrive pas a trouver se que j'ai oublié ou se que j'ai fait comme erreur(s).Merci

Reply

Marsh Posté le 18-06-2007 à 14:23:09    

Il manque le point-virgule à la fin de cette ligne :
  $id = mysql_query('SELECT id FROM lcg_pro_clients WHERE id=' . htmlentities($_POST['id']))
 
Mais normalement, un parse error, ça se trouve seul, en cherchant un peu

Reply

Marsh Posté le 18-06-2007 à 15:16:29    

jeca a écrit :

Il manque le point-virgule à la fin de cette ligne :
  $id = mysql_query('SELECT id FROM lcg_pro_clients WHERE id=' . htmlentities($_POST['id']))
 
Mais normalement, un parse error, ça se trouve seul, en cherchant un peu


autant pour moi, j'avais pas fait gaffe que je l'avais mi en variable, je pensai que c'étais une requête mysql :(  et comme je me l'etais mi dans la tête! merci encore, c'est comme ça qu'on apprend, je ferai gaffe la prochaine fois.
PS: mais le script ne semble pas marché je sans que je vais y passer du temps


Message édité par hppp le 18-06-2007 à 15:16:59
Reply

Marsh Posté le 18-06-2007 à 15:16:29   

Reply

Marsh Posté le 18-06-2007 à 16:29:25    

dsl de vous déranger encore mais j'ai encore un problème sur une boucle:
//boucle pour récuperer le mot de passe
while ($pass_bdd = mysql_fetch_array(htmlentities($_POST['mdp']) )
{ //erreur sur cette ligne
    if(mysql_num_rows($pass_bdd['mdp']) == 0)
     
       {
    header('Location: index.php');  
}
elseif(mysql_num_rows($pass_bdd['mdp']) == 1)
    {  
    header('Location: index_accueil.php');  
}
     
}
 
et ma question est si il faut metre deux point-virgule aprés la variable $pass_bdd? comme ça:
 
 while ($pass_bdd = mysql_fetch_array(htmlentities($_POST['mdp']); )
car il me fait une erreur a la ligne en rouge qui est la même que tous a l'heure a savoir: Parse error: parse error in c:\easyphp1-8\www\pro\identification2.php on line 10 . mais la je ne vois pas ou il manque un ; ou autre. dsl si c'est un truc con mais j'ai pas encore l'habitude de savoir ou metre des ; ou des '' quand il le faut et il ne le faut pas. merci


Message édité par hppp le 18-06-2007 à 16:30:08
Reply

Marsh Posté le 18-06-2007 à 16:36:28    

Quand une erreur est affichée sur une ligne, celle-ci provient souvent de la ligne précédente.
En l'occurence, tu ouvres 3 parenthèses et tu n'en fermes que 2.
Pas besoin d'un forum pour ça.

Reply

Marsh Posté le 18-06-2007 à 16:37:09    

Code :
  1. while ($pass_bdd = mysql_fetch_array(htmlentities($_POST['mdp']) )
  2. { //erreur sur cette ligne


 
On ouvre une parentaise, on ouvre deux parentaises, on ouvre trois parentaires.
On ferme une parentaise, on ferme deux parentaises.
 
Il manquerait pas une fermeture? ;)

Reply

Marsh Posté le 18-06-2007 à 16:42:08    

a oui dsl, c'est se que je disai encore un truc con!  :(

Reply

Marsh Posté le 20-06-2007 à 08:57:36    

Salut
 
Je suis retourné sur le formulaire pour esseyer de récuperer les Référence, Désignation, Prix et Quantité mais je n'y arrive pas a ajouter le prix et la Quantité le reste marche trés bien avec:
 

Code :
  1. <tr>
  2.        <td><?php echo $donnees['reference']; ?></td>
  3.        <td><?php echo $donnees['designation']; ?></td>
  4.        <td><?php echo $donnees['prix']; ?></td>
  5.    <td><input type="text" name="quantite[<? echo  $donnees['reference']; ?>]" value="0" size="3" /></td>
  6.    </tr>


et pour récuperre les info avec:
 

Code :
  1. <?php
  2. foreach ($_POST['quantite'] as $reference => $quantite)
  3. {
  4. ?>
  5. <p> <strong>Réference</strong> : <?php echo $reference;?> <strong>Quantité :</strong> <?php echo $quantite; ?>
  6. <?php
  7. }
  8. ?>


J'ai testé ça mais ça ne marche pas:
 

Code :
  1. <tr>
  2.        <td><?php echo $donnees['reference']; ?></td>
  3.        <td><?php echo $donnees['designation']; ?></td>
  4.        <td><?php echo $donnees['prix']; ?></td>
  5.    <td><input type="text" name="quantite[<? echo  $donnees['reference']; ?> <? echo  $donnees['prix']; ?>]" value="0" size="3" /></td>
  6.    </tr>


 

Code :
  1. <?php
  2. foreach ($_POST['quantite'] as $reference => $quantite => $prix )
  3. foreach ($_POST['quantite'] as $prix => $quantite)
  4. {
  5. ?>
  6. <p> <strong>Réference</strong> : <?php echo $reference;?> <strong>Quantité :</strong> <?php echo $quantite; ?> <strong>Prix :</strong> <?php echo $prix; ?>
  7. <?php
  8. }
  9. }
  10. ?>


 
Je suis allé voir la doc de php: http://www.manuelphp.com/php/contr [...] oreach.php mais je n'arrive pas a savoir comment le formuler en php pour cas. Merci


Message édité par hppp le 20-06-2007 à 08:58:31
Reply

Marsh Posté le 21-06-2007 à 16:52:09    

Bon voila se que je suis arrivé a faire mais qui ne me plais pas:

 

un petit lien: http://blog.homelinux.org/test/formulaire.php
et voila les scripts:
formulaire.php

Code :
  1. <form action="test.php" method="post">
  2.    <center>
  3.    <table>
  4.    <tr>
  5.        <th>Référence</th>
  6.        <th>Désignation</th>
  7.        <th>Prix</th>
  8.    <th>Quantité</th>
  9.    </tr>
  10.    <?php
  11.    //inclure le fichier
  12.    include('config.php');
  13.    // connection à la BDD
  14.    mysql_connect("$host", "$user", "$pass" ); // Connexion au serveur MySQL
  15.        mysql_select_db("$db" ); // Sélection de la base lcg
  16.    //recuperation des info
  17.    $produits = mysql_query("SELECT reference,designation,prix FROM produits" );
  18.    //boucle pour récuperer les info
  19.    while ($donnees = mysql_fetch_array($produits) )
  20.  
  21.    {
  22. ?>
  23. <input type="hidden" name="reference[<? echo  $donnees['designation']; ?>]" value="<?php echo $donnees['reference']; ?>">
  24.    <tr>
  25.        <td><?php echo $donnees['reference']; ?></td>
  26.        <td><?php echo $donnees['designation']; ?></td>
  27.        <td><?php echo $donnees['prix']; ?></td>
  28. <td><input type="text" name="quantite[<? echo  $donnees['reference']; ?>]" value="0" /></td>
  29.    </tr>
  30. <?php
  31. }
  32. mysql_close(); 
  33.    ?>
  34.    </table>
  35.       </center>
  36.    <br/>
  37.    <p>Avant de valider votre Commande merci de bien verifier vos quantité car un retour en arriére n'est pas possible a moins de tous recommencer</p>
  38.    <br/>
  39.    <center><input type="submit" value="Validé votre Commande" /></center>


test.php:

Code :
  1. <?php
  2.     foreach ($_POST['quantite'] as $prix => $quantite)
  3.     {
  4. $prix2 = $prix;
  5. $quantite2 = $quantite;
  6. foreach ($_POST['reference'] as $designation => $reference)
  7.     {
  8. $designation2 = $designation;
  9. $reference2 = $reference;
  10.  ?>
  11. <p>Reference :<?php echo $reference2; ?><br/></p>
  12. <p>Designation :<?php echo $designation2; ?><br/></p>
  13. <p>Prix :<?php echo $prix2; ?><br/></p>
  14. <p>Quantité :<?php echo $quantite2 ?></p>
  15. <?php
  16.     }
  17.     }
  18. ?>


Déjà il fait plusieurs boucles et apres il y aura pas un autre moyen de faire plus propre, merci de votre aide


Message édité par hppp le 21-06-2007 à 16:53:21
Reply

Sujets relatifs:

Leave a Replay

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