IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Panier et transfert de variable [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Panier et transfert de variable
    Bonjour,

    Encore un problème, cette fois-ci, ce n'est plus sur le panier, mais sur la page suivante qui insère les données dans ma BDD.

    Code du panier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?
     
    if (creationPanier())
    {
    $nbArticles=count($_SESSION['panier']['Reference']);
      if ($nbArticles <= 0)
       echo "<tr><td><font face='arial' size='2' color='#000066'>Votre panier est vide </font></ td></tr>";
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
     
    $prod="SELECT * FROM Produit WHERE Reference=".$_SESSION['panier']['Reference'][$i]."";
     
    $res_prod=mysql_query($prod)
         or die (mysql_error());
     
     while ($data = mysql_fetch_assoc($res_prod))
     { extract($data);
     
      $prix_unit_HT= round(($data['PrixUnitaire'] * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i])), 2);
      $MontantGlobal += $prix_unit_HT;
     
        echo "<tr></tr>";
        echo "<tr>";
    	echo "<td><font face='arial' size='2' color='#000066'>".htmlspecialchars($_SESSION['panier']['Reference'][$i])."</font></td>";
        echo "<td><font face='arial' size='2' color='#000066'>".$data['NomProduit']."</font></td>";
    	echo "<td><font face='arial' size='2' color='#000066'>".$data['Designation']."</font></td>";
    	echo "<td align='center'><font face='arial' size='2' color='#000066'>× ".$data['QteColis']."</font></td>";
    	echo "<td align='center'><font face='arial' size='2' color='#000066'>".$data['QteMoyen']."</font></td>";
        echo "<td align='center'><font face='arial' size='2' color='#000066'><input type=\"text\" size=\"2\" name=\"QteCommandee[]\" value=\"".htmlspecialchars($_SESSION['panier']['QteCommandee'][$i])."\"/></font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$data['PrixUnitaire']." € / ".$data['UniteVente']."</font></td>";
    	echo "<td align='right'><strong><font face='arial' size='2' color='#000066'>$prix_unit_HT €</font></strong></td>";
        echo "<td align='center'><a href=".htmlspecialchars("panier.php?action=suppression&r=".rawurlencode($_SESSION['panier']['Reference'][$i]))."><img src='/img/croix.jpg' border='0' /></a></td>";
        echo "</tr>";
     
     
      echo "<tr><td colspan=\"3\"> </td>";
      echo "<td colspan=\"3\" align='right'><font face='arial' size='3' color='#0066CC'><b>";
    }
    }
     
      echo "Total estimatif : ".number_format($MontantGlobal,2)." €";
      echo "</b></font></td></tr>";
     
     
      echo "<tr><td colspan=\"2\">";
      echo "<input type=\"submit\" value=\"Rafraichir\"/>";
      echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
      echo "</td></tr>";
     
     }
    }
    ?>
    Code d'insertion dans la BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?
    $prod="SELECT * FROM Produit WHERE Reference='".$_SESSION['panier']['Reference'][$i]."'";
    
    $res_prod=mysql_query($prod)
         or die (mysql_error());
    	 
     while ($data = mysql_fetch_assoc($res_prod))
     { extract($data);
    
    $ref=$_SESSION['panier']['Reference'];
    $qte=$_SESSION['panier']['QteCommandee'];
    $prix=(($data['PrixUnitaire']) * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i]));
     }
     
    $nbArticles=count($_SESSION['panier']['Reference']);
      if ($nbArticles <= 0)
       exit ("Votre panier est vide. La commande ne peut être finalisée.");
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       { 
         $requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','".$res_num_cde['MaxNumCde']."','".$ref[$i]."','".$qte[$i]."','".$prix[$i]."',19.6)";
     
         $rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
       }
      }
    ?>
    C'est donc la variable $prix (voir en gras) qui ne s'insère pas dans la BDD, il y a toujours 0.00

    J'ai essayé pas mal de choses mais là je commence à être perdu dans ce "bordel" de code.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $prix=(($data['PrixUnitaire']) * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i]));
    Donc $prix est un scalaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','".$res_num_cde['MaxNumCde']."','".$ref[$i]."','".$qte[$i]."','".$prix[$i]."',19.6)";
    Là tu utilises $prix comme un tableau.

    Je n'ai pas cherché davantage, le code étant mal formaté/indenté.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Merci pour ta réponse, je vais essayer de chercher un peu plus.

    Mais c'est vrai que pour le code, j'ai pas mal bricolé, donc ça doit pas être trés joli à voir pour qqn qui s'y connait bien !!!


  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    J'ai regardé pour les types de variables :

    Par contre, ma variable $prix est un bien un scalaire, mais là, il faut que cela calcule pour chaque produit de mon panier et je ne sais pas comment faire.

    Sinon pour le code j'ai essayé de l'indenter un peu mieux.
    J'espère que ça sera plus facile pour vous de comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    				// requete d'insertion de la commande dans la BDD
     
    				$prod="SELECT * FROM Produit WHERE Reference='".$_SESSION['panier']['Reference'][$i]."'";
     
    				$res_prod=mysql_query($prod)
    					or die (mysql_error());
     
    				while ($data = mysql_fetch_assoc($res_prod))
    				{ extract($data);
    					$ref=$_SESSION['panier']['Reference'];
    					$qte=$_SESSION['panier']['QteCommandee'];
    					$prix=(($data['PrixUnitaire']) * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i]));
    				}
     
    				$nbArticles=count($_SESSION['panier']['Reference']);
    				if ($nbArticles <= 0)
    					exit ("Votre panier est vide. La commande ne peut être finalisée.");
    				else
    				{
    					for ($i=0 ;$i < $nbArticles ; $i++)
    						{ 
    							$requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','".$res_num_cde['MaxNumCde']."','".$ref[$i]."','".$qte[$i]."','".$prix[$i]."',19.6)";
    							$rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    						}
    				}

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Le code et sa finalité ne sont pas très clairs
    Donne-nous la structure de ton panier, la structure des tables intéressantes de ta base de données, un exemple significatif des données que tu as en entrée et ce que tu veux en sortie.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Le code et sa finalité ne sont pas très clairs
    Donne-nous la structure de ton panier, la structure des tables intéressantes de ta base de données, un exemple significatif des données que tu as en entrée et ce que tu veux en sortie.
    OK, je prépare mon message, et je le poste.

    Merci

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Structure de la base de données (simplifié) :

    Table Produit :

    DateAjout
    Reference
    Marque
    NomProduit
    FamilleProduit
    Designation
    Photo
    UniteVente
    PrixUnitaire
    QteMoyen
    QteColis
    Visible


    Table Commande :

    Cde_Num
    Cde_loginName
    Cde_Date
    Cde_Livraison


    Table LigneCommande :

    LC_Id
    LC_IdCommande
    LC_IdProduit
    LC_Quantité
    LC_MontantTVA
    LC_MontantTTC

    + d'autres tables qui ne vont pas nous servir pour l'exemple.

    Le catalogue :

    Possibilité d'ajouter un produit dans son panier, transfert via url tel que :
    http://www.xxx.fr/panier.php?action=ajout&r=3016

    Le panier :

    exemple :
    3016 Porcelet frais 6 à 8 kg. Non fendu. Commande 8 à 10 jours avant la date de livraison × 1 7.000 7.90 € / kg 55.30 €

    Total estimatif : 55.30 €

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    if (creationPanier())
    {
    $nbArticles=count($_SESSION['panier']['Reference']);
      if ($nbArticles <= 0)
       echo "<tr><td><font face='arial' size='2' color='#000066'>Votre panier est vide </font></ td></tr>";
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
     
    $prod="SELECT * FROM Produit WHERE Reference=".$_SESSION['panier']['Reference'][$i]."";
     
    $res_prod=mysql_query($prod)
         or die (mysql_error());
     
     while ($data = mysql_fetch_assoc($res_prod))
     { extract($data);
     
      $prix_unit_HT= round(($data['PrixUnitaire'] * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i])), 2);
      $MontantGlobal += $prix_unit_HT;
     
        echo "<tr></tr>";
        echo "<tr>";
    	echo "<td><font face='arial' size='2' color='#000066'>".htmlspecialchars($_SESSION['panier']['Reference'][$i])."</font></td>";
        echo "<td><font face='arial' size='2' color='#000066'>".$data['NomProduit']."</font></td>";
    	echo "<td><font face='arial' size='2' color='#000066'>".$data['Designation']."</font></td>";
    	echo "<td align='center'><font face='arial' size='2' color='#000066'>× ".$data['QteColis']."</font></td>";
    	echo "<td align='center'><font face='arial' size='2' color='#000066'>".$data['QteMoyen']."</font></td>";
        echo "<td align='center'><font face='arial' size='2' color='#000066'><input type=\"text\" size=\"2\" name=\"QteCommandee[]\" value=\"".htmlspecialchars($_SESSION['panier']['QteCommandee'][$i])."\"/></font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$data['PrixUnitaire']." € / ".$data['UniteVente']."</font></td>";
    	echo "<td align='right'><strong><font face='arial' size='2' color='#000066'>$prix_unit_HT €</font></strong></td>";
        echo "<td  align='center'><a href=".htmlspecialchars("panier.php?action=suppression&r=".rawurlencode($_SESSION['panier']['Reference'][$i]))."><img src='/img/croix.jpg' border='0' /></a></td>";
        echo "</tr>";
     
     
      echo "<tr><td colspan=\"3\"> </td>";
      echo "<td  colspan=\"3\" align='right'><font face='arial' size='3' color='#0066CC'><b>";
    }
    }
     
      echo "Total estimatif : ".number_format($MontantGlobal,2)." €";
      echo "</b></font></td></tr>";
     
     
      echo "<tr><td colspan=\"2\">";
      echo "<input type=\"submit\" value=\"Rafraichir\"/>";
      echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
      echo "</td></tr>";
     
     }
    }
    ?>
    Validation de la commande :

    Le client valide la commande, et les données du panier s'inscrivent dans la base, table Commande avec le numéro, et table Ligne Commande avec IdProduit, la quantité du produit, et le montant qui correspond au prix unitaire du produit × Poids Moyen × Qte Colis × Qte Commandée, d'ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $prix=(($data['PrixUnitaire']) * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i]));
    Dans ma table LigneCommande, une entrée correspond à une ligne du panier.

    Le code qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    				// requete d'insertion de la commande dans la BDD
     
    				$prod="SELECT * FROM Produit WHERE Reference='".$_SESSION['panier']['Reference'][$i]."'";
     
    				$res_prod=mysql_query($prod)
    					or die (mysql_error());
     
    				while ($data = mysql_fetch_assoc($res_prod))
    				{ extract($data);
    					$ref=$_SESSION['panier']['Reference'];
    					$qte=$_SESSION['panier']['QteCommandee'];
    					$prix=(($data['PrixUnitaire']) * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i]));
    				}
     
    				$nbArticles=count($_SESSION['panier']['Reference']);
    				if ($nbArticles <= 0)
    					exit ("Votre panier est vide. La commande ne peut être finalisée.");
    				else
    				{
    					for ($i=0 ;$i < $nbArticles ; $i++)
    						{ 
    							$requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','".$res_num_cde['MaxNumCde']."','".$ref[$i]."','".$qte[$i]."','".$prix[$i]."',19.6)";
    							$rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    						}
    				}
    Mon problème est avec ce code, tout les infos se mettent bien dans ma table sauf le prix qui lui est à zéro.

    Merci pour votre aide...

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Merci pour les infos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ( $data = mysql_fetch_assoc($res_prod) ) {
        extract($data);
        $ref=$_SESSION['panier']['Reference'];
        $qte=$_SESSION['panier']['QteCommandee'];
        $prix= $data['PrixUnitaire'] * $data['QteMoyen'] * $data['QteColis'] * $_SESSION['panier']['QteCommandee'][$i] ;
    }
    Evite d'utiliser extract( ), cela rend le code illisible et est source de bugs.
    Le while( ) est-il vraiment utile ? Non si ta requête ne sors systématiquement qu'un enregistrement.
    Que vaut $prix à la sortie de la boucle ? Assure-toi déjà qu'ici la valeur est bonne.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    mon $prix vaut 0.

    C'est donc peut-être normal qu'il me mette 0 dans ma BDD...

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Voilà, donc une des opérandes de $prix est à 0...
    Que vaut $_SESSION['panier']['QteCommandee'][$i] ? $i est bien valorisé ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Voilà pour les variables !

    J'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($_SESSION['panier']);
    echo '</pre>';
    Et le résultat :
    Array
    (
    [Reference] => Array
    (
    [0] => 1055
    )

    [QteCommandee] => Array
    (
    [0] => 1
    )

    )
    Dans le cas de plusieurs produits :
    Array
    (
    [Reference] => Array
    (
    [0] => 3030
    [1] => 6046
    )

    [QteCommandee] => Array
    (
    [0] => 2
    [1] => 3
    )

    )
    Mes variables de panier sont donc complètes.

  12. #12
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Reste à vérifier $data et $i.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Reste à vérifier $data et $i.
    Apparemment ils ne renvoient rien !

  14. #14
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mikael2235 Voir le message
    Apparemment ils ne renvoient rien !
    Bon ben voilà une des raisons de la valeur erronée de $prix.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    La variable $i me renvoie bien le nombre d'article de mon panier.

  16. #16
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mikael2235 Voir le message
    La variable $i me renvoie bien le nombre d'article de mon panier.
    C'est incohérent, tout à l'heure tu disais que $i ne "renvoyait rien"
    D'autre part si $i, un index, contient le nbre d'articles alors c'est incorrect si l'indexage du tableau commence à 0.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fruits = array('Pomme', 'Poire') ; // 2 éléments dans le tableau (indexes 0 et 1)
    $i = 2 ; // Nbre d'éléments
    echo $fruits[$i] ; // Rien/erreur car $fruits[2] n'existe pas
    Comment $i est-il valorisé ?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par Séb. Voir le message
    C'est incohérent, tout à l'heure tu disais que $i ne "renvoyait rien"
    D'autre part si $i, un index, contient le nbre d'articles alors c'est incorrect si l'indexage du tableau commence à 0.
    Excuse moi, j'avais mal regardé !

    Citation Envoyé par Séb. Voir le message
    Comment $i est-il valorisé ?
    Je pense que c'est ça que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (creationPanier())
    {
    $nbArticles=count($_SESSION['panier']['Reference']);
      if ($nbArticles <= 0)
       echo "vide";
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
    Tu veux voir aussi creationPanier ?

  18. #18
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Excuse moi, j'avais mal regardé !
    Bon, et bien dans ce cas c'est $data qui pose pb.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    J'ai vérifié ma variable $data, et elle est OK.

    Voici le code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    if (creationPanier())
    {
    $nbArticles=count($_SESSION['panier']['Reference']);
      if ($nbArticles <= 0)
       echo "vide";
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
    $prod="SELECT * FROM Produit WHERE Reference=".$_SESSION['panier']['Reference'][$i]."";
    $res_prod=mysql_query($prod)
         or die (mysql_error());
    	 
     while ($data = mysql_fetch_array($res_prod))
     {
     
    
     
        echo "<tr></tr>";
        echo "<tr>";
    	echo "<td class='none'><font face='arial' size='2' color='#000066'>".htmlspecialchars($_SESSION['panier']['Reference'][$i])."</font></td>";
    	echo "<td class='none' align='center'><font face='arial' size='2' color='#000066'>× ".$data['QteColis']."</font></td>";
    	echo "<td class='none' align='center'><font face='arial' size='2' color='#000066'>".$data['QteMoyen']."</font></td>";
        echo "<td class='none' align='center'><font face='arial' size='2' color='#000066'>".$data['PrixUnitaire']."</font></td>";
        echo "<td class='none' align='center'><font face='arial' size='2' color='#000066'><input type=\"text\" size=\"2\" name=\"QteCommandee[]\" value=\"".htmlspecialchars($_SESSION['panier']['QteCommandee'][$i])."\"/></font></td>";
      $prix = round(($data['PrixUnitaire'] * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i])), 2);	
    	echo "<td class='none' align='right'><strong><font face='arial' size='2' color='#000066'>$prix €</font></strong></td>";
        echo "</tr>";	
    }
    }
    }
    }
    
    					$ref=$_SESSION['panier']['Reference'];
    					$qte=$_SESSION['panier']['QteCommandee'];
    					
    				if ($nbArticles <= 0)
    					exit ("Votre panier est vide. La commande ne peut être finalisée.");
    				else
    				{
    					for ($i=0 ;$i < $nbArticles ; $i++)
    						{ 
    							$requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','test','".$ref[$i]."','".$qte[$i]."','".$prix[$i]."',19.6)";
    							$rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    						}
    				}
    Tel qu'il est actuellement, l'insertion dans la base fonctionne avec le prix par ligne. Mais il m'insère 2 fois le même prox, qui correspond à celui du dernier produit du panier.

    J'ai voulu mettre [$i] pour parcourir tous mes résultats, et comme indiqué en rouge dans le code,
    Mais quand je le mets il ne m'insère plus rien dans ma BDD !

    Merci pour votre aide.

    Mikael

  20. #20
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    J'ai voulu mettre [$i] pour parcourir tous mes résultats, et comme indiqué en rouge dans le code,
    Mais quand je le mets il ne m'insère plus rien dans ma BDD !
    C'est normal, $prix n'est pas un tableau (cf. le while( ) : $prix = ...), en l'état tu ne peux donc pas utiliser $prix[$i].

    A la limite pour continuer dans ta voie dans le while( ) tu devrais pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $prix[$i] = round(($data['PrixUnitaire'] * ($data['QteMoyen']) * ($data['QteColis']) * ($_SESSION['panier']['QteCommandee'][$i])), 2);
    D'ailleurs le while( ) est-il vraiment pertinent ? Je ne pense pas que ce soit le cas si la requête $prod retourne systématiquement 1 produit.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. pt->py:transfert de variables
    Par kowabounga dans le forum Zope
    Réponses: 1
    Dernier message: 17/08/2006, 11h00
  2. Session: pour le transfert de variables
    Par arti2004 dans le forum Langage
    Réponses: 15
    Dernier message: 28/05/2006, 18h16
  3. [VBA-E]Userform et transfert de variable
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/03/2006, 09h16
  4. transfert des variables de sessions
    Par Julie 2006 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 26/02/2006, 11h58
  5. [vb] Transfert de variables et listbox
    Par lepiou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/01/2006, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo