Panier en pph
Résolu/Fermé
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
-
21 mars 2019 à 20:09
jordane45 Messages postés 38275 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 novembre 2024 - 22 mars 2019 à 21:06
jordane45 Messages postés 38275 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 novembre 2024 - 22 mars 2019 à 21:06
3 réponses
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
120
21 mars 2019 à 23:23
21 mars 2019 à 23:23
Bonjour,
Je n'est pas exécuté le code, mais il y a deux choses qui me dérangent et les deux sont dans le fichier panier.php :
1. La ligne 11, est ce que cela n'écrase pas les anciens produits ?
2. Lignes 34 et 42, la quantité est passée comme un caractère non pas un entier, je me demande si cela ne pose pas des problème avec le calcul plus tard d'où le problème dans ligne 65.
Je n'est pas exécuté le code, mais il y a deux choses qui me dérangent et les deux sont dans le fichier panier.php :
1. La ligne 11, est ce que cela n'écrase pas les anciens produits ?
2. Lignes 34 et 42, la quantité est passée comme un caractère non pas un entier, je me demande si cela ne pose pas des problème avec le calcul plus tard d'où le problème dans ligne 65.
jordane45
Messages postés
38275
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 novembre 2024
4 696
21 mars 2019 à 23:26
21 mars 2019 à 23:26
Bonjour,
Pour commencer.... tu fais un prepare sur une requpete... mais tu ne l'execute pas...
Je t'invite à lire ET à appliquer (TOUT) le contenu de ces deux liens :
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Reviens nous voir avec le code modifié si tu rencontres encore des soucis après ça.
Pour commencer.... tu fais un prepare sur une requpete... mais tu ne l'execute pas...
$req3=$bdd->prepare("select nom, prix from produit where id=$id"); $lig3=$req3->fetch();
Je t'invite à lire ET à appliquer (TOUT) le contenu de ces deux liens :
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Reviens nous voir avec le code modifié si tu rencontres encore des soucis après ça.
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
22 mars 2019 à 13:02
22 mars 2019 à 13:02
Bonjour les doyens. J'ai fait les modifications que vous m'avez demandées et je suis là à nouveau pour la suite.
En effet:
1- Je n'arrive pas à afficher les noms des produits alors que les quantités et prix s'affichent. Ma requête de sélection du nom et du prix du produit est pourtant bien claire à la ligne 58 sur la page "mon_panier.php".
Ou bien, dois-je élaborer une session pour obtenir les noms des produits sur ma page "mon_panier.php" à la ligne 73?
2- Je veux avoir la quantité totale de tous les produits sélectionnés et mis dans le panier par le client. Car pour le moment je ne vois que la quantité totale de chaque produit. Je veux donc avoir la quantité totale de tous les produits dans le panier. Montrez-moi comment l'obtenir svp et sur quelle page dois-le faire? car je sais que c'est sur la page "mon_panier.php" que je dois afficher cette quantité totale des produits sélectionnés. Mais comment le faire?
Ci-dessous encore les codes modifiés:
Page "panier.php"
Page "mon_panier.php"
En effet:
1- Je n'arrive pas à afficher les noms des produits alors que les quantités et prix s'affichent. Ma requête de sélection du nom et du prix du produit est pourtant bien claire à la ligne 58 sur la page "mon_panier.php".
Ou bien, dois-je élaborer une session pour obtenir les noms des produits sur ma page "mon_panier.php" à la ligne 73?
2- Je veux avoir la quantité totale de tous les produits sélectionnés et mis dans le panier par le client. Car pour le moment je ne vois que la quantité totale de chaque produit. Je veux donc avoir la quantité totale de tous les produits dans le panier. Montrez-moi comment l'obtenir svp et sur quelle page dois-le faire? car je sais que c'est sur la page "mon_panier.php" que je dois afficher cette quantité totale des produits sélectionnés. Mais comment le faire?
Ci-dessous encore les codes modifiés:
Page "panier.php"
<?php // ouverture d'une session car le contenu du panier sera stocké dans un tableau session if(!isset($_SESSION)) {Session_start();} error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $id=$_GET['id']; // récupération de l'id du produit // fonction d'ajout du produit dans le panier, elle initialise la variable $_SESSION['panier'] function add($code,$qt) { $_SESSION['achats'][] = array ("id1" => $code,"statut"=> 0,"qte"=>$qt); } // on teste si la variable $_SESSION['achat'][] existe if(isset($_SESSION['achats'])){ // les lignes de code ci-dessous servent à incrémenter la quantité du produit dans le panier, ainsi chaque fois que l'on choisit d'ajouter un produit, un test est fait pour savoir s'il existe déjà dans le panier ou pas. $count1 = count($_SESSION['achats']); $tab=array(); $tab1=array(); for($i=0;$i<$count1;$i++) { $tab[$i]=$_SESSION['achats'][$i]['id1']; $tab1[$i]=$_SESSION['achats'][$i]['statut']; } if(!in_array($id,$tab)){ add($id,'1'); } else { for($j=0;$j<$count1;$j++) { if($id==$tab[$j]) { if($_SESSION['achats'][$j]['statut']==0) { $q=$_SESSION['achats'][$j]['qte']; $q++; $_SESSION['achats'][$j]['qte']=$q; //Modifications $nbr1=$q; } else { add($id,'1'); } } } /* while($j=0;$j<$count1;$j++){$quantite_totale=$nbr1+$nbr1;} */ } } // si la variable n'existe, on l'initialise else {add($id,'1'); } $nbre=0; $count = count($_SESSION['achats']); // calcul du nombre de produit dans le panier for($i=0;$i<$count;$i++) { if($_SESSION['achats'][$i]['statut']=='0') { $nbre+=$_SESSION['achats'][$i]['qte']; } } // stockage du nombre de produit dans une variable session $_SESSION['nbre']=$nbre; /* $_SESSION['quantite_totale']=$quantite_totale; */ // redirection après insertion dans le panier echo"<script language='javascript'> document.location.href='mon_panier.php'; </script> "; ?>
Page "mon_panier.php"
<?php if(!isset($_SESSION)) {Session_start();} error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // petit test pour voir si le panier existe if(!isset($_SESSION['achats'])) { echo"<script language='javascript'> document.location.href='liste_pdt.php'; </script> "; } /* $_SESSION['quantite_totale']=$quantite_totale; */ ?> <script language="javascript"> // script javascript pour le dynamisme de notre page function fin(){ if(confirm("Voulez vous vraiment annuler votre commande ?")){ document.location.href="fin_achat.php"; } } function effacer(val){ if(confirm("Voulez vous vraiment effacer ce produit de votre panier ?")) { document.location.href="effacer.php?id="+val; } } function payer(){ if(confirm("Voulez vous vraiment valider cette commande ?")){ document.location.href="validation.php"; } } </script> <?php $total=0; $count=count($_SESSION['achats']); $tot=0; if($count==0){ } else{ // le code suivant liste le contenu du panier et nous donne la possibilité de supprimer ou de modifier les quantités des produits du panier ?> <form action="calcul.php" method="post"> <table border='0' CellSpace='2' CellPad='0' width='638'> <?php for($i=0;$i<$count;$i++){ // on parcourt notre tableau session et on ne considère que les lignes encore active if($_SESSION['achats'][$i]['statut']==0) { $id=$_SESSION['achats'][$i]['id1']; // on recupère l'id $qte=$_SESSION['achats'][$i]['qte']; // de même que la quantité require_once('connexion.php'); $requete="select nom, prix from produit where id=$id"; try { $reslt=$bdd->prepare($requete); $reslt->execute(); $lig3=$reslt->fetch(); $prix=number_format($lig3['prix'],0,'',''); } catch(PDOException $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); print_r($reslt); } /* <td height='34' class='lie4 zone esp'>$lig3['nom'];</td> <td align='center' class='lie4 zone'>$quantite_totale</td>*/ echo"<tr> <td height='34' class='lie4 zone esp'>$lig3['nom'];</td> <td align='center' class='lie zone'><input type='text' value='$qte' name='$i' size='5' class='li3'></td> <td align='center' class='lie4 zone'>$prix FCFA</td> <td align='center' class='lie zone'><a href='#' onclick='effacer($id)' class='lie41'>Effacer</a></td> </tr>"; // on incrémente le total $tot=$lig3['prix']*$qte; $total+=$tot; } } $prix1=number_format($total,0,'',' '); ?> <tr><td colspan="5"> </td></tr> <tr><td> </td><td bgcolor="#0099CC" class="zone lie4 style7 style4">Prix Total : </td><td class='lie42 zone' align="center"><?php echo $prix1 ?> FCFA</td><td> </td> <td> </td> </tr> <tr><td colspan="5"> </td></tr> <tr><td colspan="2"><div align="center"> <input name="Button2" type="button" class="text6" onclick="fin()" value="Annuler la commande" /> </div></td><td><div align="center"> <input name="Button" type="submit" class="text6" value="Recalculer" /> </div></td><td><div align="center"> <input name="Button" type="button" class="text6" value="Valider" onclick="payer()" /> </div></td> <td> </td> </tr> </table> </form> <?php } ?>
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
22 mars 2019 à 20:58
22 mars 2019 à 20:58
Salut Jordane,
Je suis un peu avancé maintenant dans le projet en question. Seulement que ça coince un peu encore.
Dans le projet, les clients avaient l'habitude de réserver un et seul produit par commande. Désormais, je veux maintenant donner la possibilité aux clients de mon site de pouvoir réserver plusieurs produits à la fois pour une même commande.
C'est pour cela que j'ai cherché le tuto du panier. Je suis maintenant au stade de la réservation des produits ajoutés au panier. Malheureusement je ne vois pas d'abord comment enregistrer dans ma base de données, tous les produits sélectionnés par le client (id du produit, nom du produit, prix...). Parceque j'avais l'habitude d'enregistrer le nom, le contact, l'adresse email du client et l'identifiant id du produit que le client resservait dans la table "reservation". Je veux maintenant faire la même chose en enregistrant les informations du client avec les différents id des produits dans son panier. Comment m'y prendre?
Ci-dessous le code de la page de reservation que j'appelle "reservation_globale.php":
Par exemple: Au debut, le client Chirack ne pouvait reserver qu'un seul ordinateur par commande . Et maintenant je veux qu'il puisse réserver un ordinateur, une imprimante, une télévision, des chaussures... tous ensemble dans la même "reservation" et je veux enregistrer les informations du client "Chirack" et tous les produits qu'il a réservés dans son panier. J'ai une table "réservation" à cet effet mais je ne parviens pas effectuer l'enregistrement des différents id des produits du panier. C'est seulement l'id du premier produit qui s'enregistre dans la base. Merci de m'eclaircir...
Voici le code de la page de traitement "traitement_reservation.php"
Je suis un peu avancé maintenant dans le projet en question. Seulement que ça coince un peu encore.
Dans le projet, les clients avaient l'habitude de réserver un et seul produit par commande. Désormais, je veux maintenant donner la possibilité aux clients de mon site de pouvoir réserver plusieurs produits à la fois pour une même commande.
C'est pour cela que j'ai cherché le tuto du panier. Je suis maintenant au stade de la réservation des produits ajoutés au panier. Malheureusement je ne vois pas d'abord comment enregistrer dans ma base de données, tous les produits sélectionnés par le client (id du produit, nom du produit, prix...). Parceque j'avais l'habitude d'enregistrer le nom, le contact, l'adresse email du client et l'identifiant id du produit que le client resservait dans la table "reservation". Je veux maintenant faire la même chose en enregistrant les informations du client avec les différents id des produits dans son panier. Comment m'y prendre?
Ci-dessous le code de la page de reservation que j'appelle "reservation_globale.php":
<?php if(!isset($_SESSION)) {Session_start();} error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // petit test pour voir si le panier existe if(!isset($_SESSION['achats'])) { echo"<script language='javascript'> document.location.href='liste_pdt.php'; </script> "; } /* session_start(); if(isset($_GET["id"])) { $id=$_GET["id"]; $_SESSION['id']=$id; } $new_id=$_SESSION['id']; */ ?> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="bootstrap/css/bootstrap.css" /> <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" /> <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/> <link rel="stylesheet" type="text/css" href="styl.css" /> <link rel="stylesheet" href="menu_index.css" type ="text/css" /> <title>produits d'une catégorie</title> </head> <body> <div id="bloc_page"> <?php include ('config.php');?> <?php include('header.php');?> <div class="container"> <div class="row"> <form method="POST" action="operation_categories_script.php"> <div class="container"> <div class="row"> <article class="col-md-12 col-sm-12 col-xs-12 ajuste"> <div class="panel panel-default"> <?php $total=0; $count=count($_SESSION['achats']); $tot=0; if($count==0){ } for($i=0;$i<$count;$i++){ // on parcourt notre tableau session et on ne considère que les lignes encore active if($_SESSION['achats'][$i]['statut']==0) { $id=$_SESSION['achats'][$i]['id1']; // on recupère l'id $qte=$_SESSION['achats'][$i]['qte']; // de même que la quantité require_once('config.php'); $requete="select * from categories where id_Cat=$id"; try { $reslt=$bdd->prepare($requete); $reslt->execute(); $lig3=$reslt->fetch(); $prix=number_format($lig3['prix'],0,'',''); } catch(PDOException $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); print_r($reslt); } /* <td height='34' class='lie4 zone esp'>{$lig3['nom']}</td> <td align='center' class='lie4 zone'>$quantite_totale</td> <input type='text' value='$qte' name='$i' size='5' class='li3'></td> */ $tot=$lig3['prix']*$qte; $total+=$tot; echo" <div class='col-md-8 col-sm-8 col-xs-8'> <tr></br> <td align='center' class='lie zone'>- $qte {$lig3['nom']}(s) </td> dont le prix unitaire est <td align='center' class='lie4 zone'>$prix FCFA</td> = <td align='center' class='lie4 zone'>$tot FCFA</td> </tr> </div> <div class='col-md-4 col-sm-4 col-xs-4'></br> <td align='center' class='lie zone'><a href='#' onclick='effacer($id)' class='lie41'>Effacer</a></td> </div> </br></br></br>"; // on incrémente le total /* $tot=$lig3['prix']*$qte; $total+=$tot; */ } } $prix1=number_format($total,0,'',' '); echo'<tr> <td bgcolor="#0099CC" class="zone lie4 style7 style4">Prix Total à payer = </td><td class="lie42 zone" align="center">'.$prix1.'FCFA</td> </tr> </div> </article> </div> </div>'; ?> <div class="container"> <div class="row"> <article class="col-md-12 col-sm-12 col-xs-12 ajuste"> <div class="panel panel-default"> <div class="panel-heading"><h2>Donnez vos coordonnées pour la validation de votre réservation!</h2></div> <div class="panel-body"> <table> <div class="col-md-4 col-sm-4 col-xs-4"> <td> <label>Nom</label><br/> <input type="text" name="nomC" size="120" class="form-control" required/> <br/> <label>Prénom</label><br/> <input type="text" name="prenomC" size="120" class="form-control" required/> <br/> <label>Email</label><br/> <input type="email" name="emailC" class="form-control" required size="120"/> <br/> <label>Contacts</label><br/> <input type="tel" name="cellC" size="120" class="form-control" required/> </br> <input type="hidden" name="id" value="id" size="20"/> <input type="submit" name="valider" value="valider" align="right"/> </td> </div> </tr> </center> </table> </div> </div> </article> </div> </div> </form> </div> </div> </br></br></br> <?php include('footer.php') ?> </div> <script src="bootstrap/js/jquery.js"> </script> <script src="bootstrap/js/bootstrap.min.js"></script> </body> </html>
Par exemple: Au debut, le client Chirack ne pouvait reserver qu'un seul ordinateur par commande . Et maintenant je veux qu'il puisse réserver un ordinateur, une imprimante, une télévision, des chaussures... tous ensemble dans la même "reservation" et je veux enregistrer les informations du client "Chirack" et tous les produits qu'il a réservés dans son panier. J'ai une table "réservation" à cet effet mais je ne parviens pas effectuer l'enregistrement des différents id des produits du panier. C'est seulement l'id du premier produit qui s'enregistre dans la base. Merci de m'eclaircir...
Voici le code de la page de traitement "traitement_reservation.php"
<?php if(!isset($_SESSION)) {Session_start();} error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ?> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="bootstrap/css/bootstrap.css" /> <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" /> <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/> <link rel="stylesheet" type="text/css" href="styl.css" /> <link rel="stylesheet" href="menu_index.css" type ="text/css" /> <title>traitement de la reservation</title> </head> <body> <div id="bloc_page"> <?php include ('config.php');?> <?php include('header.php');?> <div class="container"> <div class="row"> <form method="POST" action=""> <div class="container"> <div class="row"> <article class="col-md-12 col-sm-12 col-xs-12 ajuste"> <div class="panel panel-default"> <div class="panel-body"> <?php $count=count($_SESSION['achats']); if($count==0){ } for($i=0;$i<$count;$i++){ if($_SESSION['achats'][$i]['statut']!=0) { $id=$_SESSION['achats'][$i]['id1']; // on recupère l'id } $identifiants=$id; } if (isset($_POST['valider'])) { $nomC=$_POST['nomC']; $prenomC=$_POST['prenomC']; $emailC=$_POST['emailC']; $cellC=$_POST['cellC']; $id=$_SESSION['id']; echo "<center><h3><u> Vérifiez vos coordonnées svp </u></h3></center>"; echo'<div class="col-md-3 col-sm-4 col-xs-4"> <h3>Nom et prénom: </br></br>Adresse email: </br></br>Téléphones: </br></br>Les produits numéro:</h3> </div> <div class="col-md-9 col-sm-8 col-xs-8"> <h3>'.$nomC.' ' .$prenomC.' </br></br>'.$emailC.' </br></br>'.$cellC.'</br></br> '.$id.', '.$id.', '.$id.'</h3> </div> <form method="POST" action=""> <input type="hidden" name="nomC2" value="'.$nomC.'" /> <input type="hidden" name="prenomC2" value="'.$prenomC.'" /> <input type="hidden" name="emailC2" value="'.$emailC.'" /> <input type="hidden" name="cellC2" value="'.$cellC.'" /> <input type="hidden" name="id2" value="'.$id.'" /></br></br></br> <input class="annuler ch1" type="submit" name="annuler" value="Annuler" /> <input class="ch2" type="submit" name="confirmer" value="Confirmer" /> </form>'; } ?> <?php if(isset($_POST['confirmer'])) { $nomC2=isset($_POST['nomC2']) ? $_POST['nomC2'] : '' ; $prenomC2=isset($_POST['prenomC2']) ? $_POST['prenomC2'] : ''; $emailC2=isset($_POST['emailC2']) ? $_POST['emailC2'] : ''; $cellC2=isset($_POST['cellC2']) ? $_POST['cellC2'] : ''; $id2=isset($_POST['id2']) ? $_POST['id2'] : ''; $req1 = "INSERT INTO clients(nomC, prenomC, emailC, cellC) VALUES(:nomC2, :prenomC2, :emailC2, :cellC2)"; $datas = array(':nomC2'=>$nomC2, ':prenomC2'=>$prenomC2, ':emailC2'=>$emailC2, ':cellC2'=>$cellC2); try { $requete = $bdd -> prepare($req1); $requete->execute($datas) ; }catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } /* $req1->closeCursor(); */ $last_id_in_client = $bdd->lastInsertId(); try { $req2=$bdd->prepare('INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())'); $req2->execute(array(':last_id_in_client'=>$last_id_in_client, ':id2'=>$id2)) or die (print_r($req->errorInfo())); $req2->closeCursor(); echo'<h3> Réservation faite avec succès!</h3> </br><h3><a href="categories.php">Faire une autre réservation!</a></h3>'; }catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($req2); } }else if(isset($_POST['annuler'])) { header('Location:index.php'); } ?> </div> </div> </article> </div> </div> </form> </div> </div> </br></br></br> <?php include('footer.php') ?> </div> <script src="bootstrap/js/jquery.js"> </script> <script src="bootstrap/js/bootstrap.min.js"></script> </body> </html>
jordane45
Messages postés
38275
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 novembre 2024
4 696
22 mars 2019 à 21:06
22 mars 2019 à 21:06
La question précédente a été résolue.
Merci d'ouvrir une nouvelle discussion propre à cette nouvelle problématique.
Merci d'ouvrir une nouvelle discussion propre à cette nouvelle problématique.