Enregistrer plusieurs identifiants
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":
Code:
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> |
Je m'explique bien.
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:
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> |