Inserer les valeurs d'un panier dans une table sql

Eléphant du PHP | 91 Messages

08 juin 2009, 16:17

Bonjours,

Comment peut on insérer les valeurs d'un panier php dans une table SQL

Merci

ViPHP
ViPHP | 1136 Messages

08 juin 2009, 16:23

Salut ,

avec des requetes mysql !

Ch.

Eléphant du PHP | 91 Messages

08 juin 2009, 17:36

OK, je vais être plus explicite:

J'ai quelques difficultés pour insérer les données d'un panier dans une table

car je peux afficher le panier avec le code suivant:

<?php   

$nbArticles=count($_SESSION['panier']['libelleProduit']);
  if ($nbArticles <= 0)
   echo "Votre caddie est vide";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".($_SESSION['panier']['libelleProduit'][$i])."<br>";

   }
     
    }
   

;?>

MAIS, ce que je n'arrive pas a faire, c'est récupérer les données de la session
($_SESSION['panier']['libelleProduit'][$i])
dans un champs
<input type="hidden" name="libelleProduit" value="<? echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">
pour ensuite l'insérer dans une table avec un INSERT INTO

Quelqu'un aurait il une idée? Merci de vos réponses

ViPHP
ViPHP | 2291 Messages

08 juin 2009, 17:49

<input type="hidden" name="libelleProduit" value="<? echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">

pour ensuite l'insérer dans une table avec un INSERT INTO

Quelqu'un aurait il une idée? Merci de vos réponses
Et comme ceci :?:
<input type="hidden" name="libelleProduit" value=<?php echo $_SESSION['panier']['libelleProduit'][$i];?> />
Puis il te suffit de récupéré
$_POST['libelleProduit']
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 91 Messages

08 juin 2009, 19:12

Puis il te suffit de récupéré
$_POST['libelleProduit']
C'est fait, mais le résultat dans la table, c'est que ca n'insere soit rien du tout soit array

Pour cela, j'utilise le code suivant:
      <?php
 
      session_start();
  
      require("conf.php");
   
       
 
      mysql_connect("$host", "$username", "$password")or die("cannot connect");
   
      mysql_select_db("$db_name")or die("cannot select DB");
   
       
 
      $order_number=$_POST['order_number'];
  
      $myusername=$_SESSION['myusername'];
  
      $libelleProduit=$_POST['libelleProduit'];
  
      $qteProduit=$_POST['qteProduit'];
  
      $prixProduit=$_POST['prixProduit'];
  
      $total=$_POST['total'];
  
      $firstname=$_POST['firstname'];
  
      $lastname =$_POST['lastname'];
  
      $address =$_POST['address'];
  
      $city=$_POST['city'];
  
      $state=$_POST['state'];
  
      $ZIP =$_POST['ZIP'];
  
      $country =$_POST['country'];
  
      $phone=$_POST['phone'];  
  
      $payment =$_POST['payment'];  
 
      $date_hour=(date("Y-m-d H:i:s"));

       

       

      mysql_query("INSERT INTO $tbl_name2 VALUES ('','$order_number','$myusername','$libelleProduit','$qteProduit','$prixProduit','$total','$firstname','$lastname','$address','$city','$state','$ZIP','$country','$phone','$payment','$date_hour') ") or die(mysql_error());  

      session_register("myusername");
  
      session_register("mypassword");
  
      header("location:transc_.php");


       

      ?>

Toutes les valeur s'insèrent sans problèmes  SAUF CELLE DE LA SESSION. C'est à dire 

      $libelleProduit=$_POST['libelleProduit'];
  
      $qteProduit=$_POST['qteProduit'];
  
      $prixProduit=$_POST['prixProduit'];
La ou dans la table, il y a soit un espace vide soit le mot array

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 juin 2009, 19:14

Modération :
arkhon21, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Eléphant du PHP | 91 Messages

08 juin 2009, 19:25

Modération :
arkhon21, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

OK, ca sera fait.

Eléphant du PHP | 65 Messages

08 juin 2009, 19:51

Attention, il me semble qu'il y a un problème ici :

Pour chaque article, tu as un input de ce type :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit" value="<? echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">
qui va se traduire par un seul $_POST['libelleProduit'] sur la page appelée par ton formulaire
alors que tu devrais en avoir un pour chaque article.

Je verrais alors plutôt un input de ce style :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit[<?php echo $i; ?>]" value="<?php echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">
Que tu pourras récupérer dans un $_POST['libelleProduit'][$i] et pour chaque $i, il faudra faire un INSERT INTO dans ta table.

Et pour finir, si j'ai bien compris ce que tu as fait, tu as également un problème de conception de la BDD, puisque tu vas avoir les coordonnées du client (firstname, lastname,...) pour chaque article.

Fred

Eléphant du PHP | 91 Messages

09 juin 2009, 09:55

Attention, il me semble qu'il y a un problème ici :

Pour chaque article, tu as un input de ce type :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit" value="<? echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">
qui va se traduire par un seul $_POST['libelleProduit'] sur la page appelée par ton formulaire
alors que tu devrais en avoir un pour chaque article.

Je verrais alors plutôt un input de ce style :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit[<?php echo $i; ?>]" value="<?php echo "".$_SESSION['panier']['libelleProduit'][$i]."";?>">
Que tu pourras récupérer dans un $_POST['libelleProduit'][$i] et pour chaque $i, il faudra faire un INSERT INTO dans ta table.

Et pour finir, si j'ai bien compris ce que tu as fait, tu as également un problème de conception de la BDD, puisque tu vas avoir les coordonnées du client (firstname, lastname,...) pour chaque article.

Fred
Je me demande si il faudrait pas que je serialize toutes les données libelleProduit pour pouvoir les insérer dans un champs unique.

Eléphant du PHP | 91 Messages

10 juin 2009, 23:08

J'ai réussi, en fait il fallait les $_SESSION dansINSERT INTO. J'ai aussi crée une table séparer pour cela

for ($i=0; $i<count($_SESSION['panier']['libelleProduit']); $i++) {


mysql_query("INSERT INTO $tbl_name2 VALUES ('','$order_number','$myusername','".$_SESSION['panier']["libelleProduit"][$i]."','".$_SESSION['panier']["qteProduit"][$i]."','".$_SESSION['panier']["prixProduit"][$i]."','$total','$payment_','$date_hour') ") or die(mysql_error());  


}

Eléphant du PHP | 65 Messages

11 juin 2009, 07:42

En regardant ta solution, je me suis demandé à quoi servaient tes INPUT de type hidden :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit" value=<?php echo $_SESSION['panier']['libelleProduit'][$i];?> />
Comme tu as toutes tes infos dans ta variable de session,
tu n'as pas besoin de les faire passer d'une page à une autre dans une variable post.
Les as-tu conservés ?

Bonne journée,
Fred

Eléphant du PHP | 91 Messages

11 juin 2009, 19:30

En regardant ta solution, je me suis demandé à quoi servaient tes INPUT de type hidden :

Code : Tout sélectionner

<input type="hidden" name="libelleProduit" value=<?php echo $_SESSION['panier']['libelleProduit'][$i];?> />
Comme tu as toutes tes infos dans ta variable de session,
tu n'as pas besoin de les faire passer d'une page à une autre dans une variable post.
Les as-tu conservés ?

Bonne journée,
Fred
En fait, j'ai même pas penser a les retirer!