Recuperation de plusieurs id
Résolu/Fermé
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
-
Modifié le 23 mars 2019 à 08:08
Busima Messages postés 53 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 29 janvier 2021 - 3 avril 2019 à 12:07
Busima Messages postés 53 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 29 janvier 2021 - 3 avril 2019 à 12:07
A voir également:
- Recuperation de plusieurs id
- Convertisseur récupération de texte - Guide
- Récupérer au terminal de fret - Forum Consommation & Internet
- Email id - Forum Consommation & Internet
- Mail facebook code de recuperation ✓ - Forum Facebook
- Impossible de récupérer mon compte gmail - Guide
5 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
23 mars 2019 à 08:18
23 mars 2019 à 08:18
Bonjour,
C'est un sacré bazarre ton code.... il serait bien de le remettre un peu au propre... en commençant par appliquer ce qui est indiqué dans ce lien ( la parti "séparer le code php du html" par exemple ) https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite, ton souci semble se situer ici :
Au passage... le bout de ligne
car oui... tu ne fais qu'un seul insert.....
Toi.. il faut désormais que tu boucles sur les données de ton panier.
Il suffit donc de jouer le execute avec les différentes valeurs
un truc du genre :
la variable $panier représentant ta variable de SESSION contenant tes produits bien évidemment
C'est un sacré bazarre ton code.... il serait bien de le remettre un peu au propre... en commençant par appliquer ce qui est indiqué dans ce lien ( la parti "séparer le code php du html" par exemple ) https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite, ton souci semble se situer ici :
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); }
Au passage... le bout de ligne
or die (print_r($req->errorInfo()));est inutile vu que tu es dans un try catch...
car oui... tu ne fais qu'un seul insert.....
Toi.. il faut désormais que tu boucles sur les données de ton panier.
Il suffit donc de jouer le execute avec les différentes valeurs
un truc du genre :
foreach($panier as $id_produit ){ $req2->execute(array(':last_id_in_client'=>$last_id_in_client, ':id2'=>$id_produit )) }
la variable $panier représentant ta variable de SESSION contenant tes produits bien évidemment
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
26 mars 2019 à 09:59
26 mars 2019 à 09:59
Salut,
quelqu'un peut m'aider svp?
quelqu'un peut m'aider svp?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
Modifié le 26 mars 2019 à 11:12
Modifié le 26 mars 2019 à 11:12
J'ai suivi vos conseils et j'ai fais les modifications que vous souhaitiez.
Pas totalement... tu as encore beaucoup de PHP que tu pourrais déplacer au dessus de ton code html....
Ensuite, pour ton besoin... sais tu faire des boucles en php ? ( des boucles FOREACH ) ??
Car, ce n'est que ça....
$panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL; $sql = "INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())"; try { $requete = $bdd->prepare($sql); if($panier){ foreach($panier as $produit ){ $id_produit = $panier['id_produit'] ; $datas = array(':last_id_in_client' => $last_id_in_client, ':id2' => $id_produit); $requete->execute($datas); } } } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); }
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
26 mars 2019 à 12:51
26 mars 2019 à 12:51
J'ai essayé votre procédure mais il n'y a pas de changement. Le problème est au même niveau.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
26 mars 2019 à 13:00
26 mars 2019 à 13:00
Montre nous ce que contient ta variable de session
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
26 mars 2019 à 14:26
26 mars 2019 à 14:26
Voici le resultat du var_dump($session);
array (size=4)
'nbre' => int 11
'id' => string '1' (length=1)
'panier' =>
array (size=2)
1 =>
array (size=5)
'id_produit' => int 1
'produit' => string 'produit 1' (length=9)
'qte' => int 35
'prix_unitaire' => int 10
'prix_Total' => int 350
'qteProduit' =>
array (size=1)
'' => int 0
'achats' =>
array (size=3)
0 =>
array (size=3)
'id1' => string '4' (length=1)
'statut' => int 0
'qte' => string '4' (length=1)
1 =>
array (size=3)
'id1' => string '9' (length=1)
'statut' => int 0
'qte' => string '5' (length=1)
2 =>
array (size=3)
'id1' => string '10' (length=2)
'statut' => int 0
'qte' => string '2' (length=1)
array (size=4)
'nbre' => int 11
'id' => string '1' (length=1)
'panier' =>
array (size=2)
1 =>
array (size=5)
'id_produit' => int 1
'produit' => string 'produit 1' (length=9)
'qte' => int 35
'prix_unitaire' => int 10
'prix_Total' => int 350
'qteProduit' =>
array (size=1)
'' => int 0
'achats' =>
array (size=3)
0 =>
array (size=3)
'id1' => string '4' (length=1)
'statut' => int 0
'qte' => string '4' (length=1)
1 =>
array (size=3)
'id1' => string '9' (length=1)
'statut' => int 0
'qte' => string '5' (length=1)
2 =>
array (size=3)
'id1' => string '10' (length=2)
'statut' => int 0
'qte' => string '2' (length=1)
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
26 mars 2019 à 15:58
26 mars 2019 à 15:58
Arf..
Ta variable de session c'est panier ... pas achats.
Il faut donc modifier la ligne de code
en
Tu aurais pu ( Dù ! ) le voir je pense....
Enfin bon.. tu comprends le principe...le code est à adapter à tes besoins.... suffit pas juste de copier/coller sans regarder.
Ta variable de session c'est panier ... pas achats.
Il faut donc modifier la ligne de code
$panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL;
en
$panier = !empty($_SESSION['panier']) ? $_SESSION['panier'] : NULL;
Tu aurais pu ( Dù ! ) le voir je pense....
Enfin bon.. tu comprends le principe...le code est à adapter à tes besoins.... suffit pas juste de copier/coller sans regarder.
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
27 mars 2019 à 11:33
27 mars 2019 à 11:33
Voic le code de ma page "panier.php"
Ensuite, voici le code de ma page "mon-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> "; ?>
Ensuite, voici le code de ma page "mon-panier.php"
<!DOCTYPE html> <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> votre panier </title> </head> <body> <div id="bloc_page"> <?php include('header.php');?> <div class="container"> <div class="row"> <section class="col-md-12 col-sm-12 col-xs-12" id="partag"> <div class="row"> <?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="reservation_globale.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'> <center><h1><u>CONTENU DE VOTRE PANIER</u><h1></center> <?php for($i=0;$i<$count;$i++){ // on parcourt notre tableau session et on ne considère que les lignes encore 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 nom, prix 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>*/ echo" <div class='col-md-8 col-sm-7 col-xs-7'> <tr> <td height='34' align='center' class='lie4 zone'>{$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> </div>"; // on incrémente le total $tot=$lig3['prix']*$qte; $total+=$tot; } } echo" <div class='col-md-4 col-md-5 col-md-5'> <a href='index.php'>Ajouter un autre produit au panier</a> </div>"; $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()" /> <input name="Button2" type="button" class="text6" onclick="fin()" value="Vider le panier" /> </div> </td> </tr> </table> </form> <?php } ?> </div> </section> </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
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
27 mars 2019 à 11:44
27 mars 2019 à 11:44
Donc... ton code d'ajout :
Tu as donc la clé : id1
c'est donc bien là dessus que tu dois faire ta boucle...
$_SESSION['achats'][] = array ("id1" => $code,"statut"=> 0,"qte"=>$qt);
Tu as donc la clé : id1
c'est donc bien là dessus que tu dois faire ta boucle...
$panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL; $sql = "INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())"; try { $requete = $bdd->prepare($sql); if($panier){ foreach($panier as $produit ){ $id_produit = $panier['id1'] ; $datas = array(':last_id_in_client' => $last_id_in_client, ':id2' => $id_produit); $requete->execute($datas); } } } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); }
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
27 mars 2019 à 23:15
27 mars 2019 à 23:15
Salut jordane45,
ça commence à aller. J'ai fais les modifications. Les enregistrements se font dans la base mais la colonne id_Cat reçoit des valeurs NULL dans la table reservation_categories et voici l'erreur qui s'affiche:
Undefined index: id1 in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation_final.php on line 136
ça commence à aller. J'ai fais les modifications. Les enregistrements se font dans la base mais la colonne id_Cat reçoit des valeurs NULL dans la table reservation_categories et voici l'erreur qui s'affiche:
Undefined index: id1 in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation_final.php on line 136
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
28 mars 2019 à 06:53
28 mars 2019 à 06:53
Sans voir ton code modifié... Impossible de te répondre
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
28 mars 2019 à 15:58
28 mars 2019 à 15:58
Voici mon code modifié:
<?php if(!isset($_SESSION)) {Session_start();} ?> <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 error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $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); } $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>"; } } if (isset($_POST['valider'])) { $nomC=$_POST['nomC']; $prenomC=$_POST['prenomC']; $emailC=$_POST['emailC']; $cellC=$_POST['cellC']; /* $id_produit=$_SESSION['achats'][$i]['id_produit']; */ 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> </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(); $panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL; $sql = "INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())"; try { $requete = $bdd->prepare($sql); if($panier){ foreach($panier as $produit ){ $id_produit = $panier['id1'] ; $datas = array(':last_id_in_client' => $last_id_in_client, ':id2' => $id_produit); $requete->execute($datas); } } } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } }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
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
28 mars 2019 à 17:32
28 mars 2019 à 17:32
$panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL; $sql = "INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())"; try { $requete = $bdd->prepare($sql); if($panier){ foreach($panier as $produit ){ $id_produit = !empty($panier['id1']) ? $panier['id1'] : NULL ; if($id_produit){ $datas = array(':last_id_in_client' => $last_id_in_client, ':id2' => $id_produit); $requete->execute($datas); } } } } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); }
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
Modifié le 29 mars 2019 à 09:39
Modifié le 29 mars 2019 à 09:39
Jordane45, je pense que c'est plutôt le code ci-dessous que nous devons chercher à améliorer car j'arrive à avoir des enregistrements dans les 2 tables avec celui-ci. Alors que celui que vous venez de faire ne produit aucun d'enregistrement dans la table "reservation_categories". Donc visitons bien celui-ci pour retrouver l'erreur et la corriger svp.
Lorsque je valide la commande, il enregistre bien le client dans la table "client", il enregistre bien aussi les id du client dans la table reservation_commande, c'est seulement les id_Cat qu'il met à NULL. Et c'est ce qu'on doit chercher à resoudre pour finaliser. Voici le message d'erreur qui s'affiche pour chacun des produits contenu dans le panier.
Undefined index: id1 in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation_final.php on line 136
Il affiche ce message autant de fois qu'il ya de produits dans le panier. C'est à dire qu'il affiche ce message 10 fois s'il ya 10 produits dans le panier, 15 fois s'il y en a 15 produits.
<?php if(!isset($_SESSION)) {Session_start();} ?> <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 error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $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); } $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>"; } } if (isset($_POST['valider'])) { $nomC=$_POST['nomC']; $prenomC=$_POST['prenomC']; $emailC=$_POST['emailC']; $cellC=$_POST['cellC']; /* $id_produit=$_SESSION['achats'][$i]['id_produit']; */ 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> </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(); $panier = !empty($_SESSION['achats']) ? $_SESSION['achats'] : NULL; $sql = "INSERT INTO reservation_categories(idC, id_Cat, date_reservation) VALUES(:last_id_in_client, :id2, NOW())"; try { $requete = $bdd->prepare($sql); if($panier){ foreach($panier as $produit ){ $id_produit = $panier['id1'] ; $datas = array(':last_id_in_client' => $last_id_in_client, ':id2' => $id_produit); $requete->execute($datas); } } } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } }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>
Lorsque je valide la commande, il enregistre bien le client dans la table "client", il enregistre bien aussi les id du client dans la table reservation_commande, c'est seulement les id_Cat qu'il met à NULL. Et c'est ce qu'on doit chercher à resoudre pour finaliser. Voici le message d'erreur qui s'affiche pour chacun des produits contenu dans le panier.
Undefined index: id1 in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation_final.php on line 136
Il affiche ce message autant de fois qu'il ya de produits dans le panier. C'est à dire qu'il affiche ce message 10 fois s'il ya 10 produits dans le panier, 15 fois s'il y en a 15 produits.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Busima
Messages postés
53
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
3 avril 2019 à 12:07
3 avril 2019 à 12:07
Bonjour jordane45.
J'ai enfin pu resoudre le problème. Je fermais un peu tôt les accolades. De plus j'avais 2 balises php que j'ai résumées en une seule pour pouvoir résoudre le problème.
Merci à vous.
J'ai enfin pu resoudre le problème. Je fermais un peu tôt les accolades. De plus j'avais 2 balises php que j'ai résumées en une seule pour pouvoir résoudre le problème.
Merci à vous.
23 mars 2019 à 11:27
Cependant pouvez-vous me dire dans quelle partie dois-je mettre cette boucle "foreach" svp?
J'ai actuellement mis le foreach dans le try, mais ça coince pour les "id" des produits.
Le problème se trouve probablement dans la partie requette que vous avez indiquée, mais il ya un problème au niveau de la récupération des "id" des produits contenus dans le panier. Car j'avais l'habitude de recupérer un seul "id" avec la superglobale GET[], ça coince actuellement parceque je ne sais pas comment récupérer les "id" des produits contenus dans le panier.
Merci pour l'éclairicssement.
23 mars 2019 à 11:28
Je n'interviendrai plus dans cette discussion tant que ça n'aura pas été fait.
24 mars 2019 à 08:05
J'ai suivi vos conseils et j'ai fais les modifications que vous souhaitiez.
Voici le code modifié dans lequel on m'affiche maintenant les erreurs suivantes:
1- Notice: Undefined offset: 2 in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation.php on line 47
2- Notice: Undefined variable: id in C:\wamp\www\PROMO_SHOP_PANIER\traitement_reservation.php on line 62
Mon souhait est de pouvoir récupérer les id de tous les produits contenus dans le panier du client pour les enregistrer tous dans un champ.