Salut, besoin d'aide.
Je suis entrain de faire une migration de la procédure de réservation simple de produit vers un panier virtuel.
Sur le site, 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.
J'ai développé et 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 des produits et/ou noms des produit, prix...). Parce que 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":
Je m'explique bien.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 <?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 début, le client Chirack ne pouvait réserver 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 créé une table "réservation" à cet effet dans ma base 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"
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 <?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 } } if (isset($_POST['valider'])) { $nomC=$_POST['nomC']; $prenomC=$_POST['prenomC']; $emailC=$_POST['emailC']; $cellC=$_POST['cellC']; /* $id=$_SESSION['achats'][$i]['id1']; */ 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.'</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); } $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)); foreach($panier as $id_produit ) { $req2->execute(array(':last_id_in_client'=>$last_id_in_client, ':id2'=>$id_produit )); } $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>
Partager