IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Enregistrer plusieurs identifiants


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 112
    Par défaut 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 : 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>
    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 : 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>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if( empty(session_id()) ){ session_start(); }

    2- Il manque le DOCTYPE :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE html>
      <html>
    ...

    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	for($i=0;$i<$count;$i++){
    		if($_SESSION['achats'][$i]['statut']!=0) 
    		{
    			$id = $_SESSION['achats'][$i]['id1'];		// on recupère l'id
    		}
    	}
    Cette boucle est mal conçues, puisqu'au final, $id contiendra seulement le DERNIER "id1" de la boucle.

    Ou alors, c'est que le for() est fermé trop tôt (pas au bon endroit) !

    4- Améliore l'INDENTATION de ton code : tu y verras plus clair (plus facile à lire = plus facile à déboguer)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 112
    Par défaut
    Salut jreaux62,
    D'abord je vous remercie pour la reponse.
    En effet vous avez raison. Malheureusement je ne me retrouve pas en ce qui concerne la construction de la boucle pour récupérer tous les id. c'est d'ailleurs ce qui m'a emmené à vous demander de l'aide. Si vous pouvez m'aider à construire cette boucle pour que je comprenne le processus.
    Merci infiniment.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 112
    Par défaut
    Bonjour, ça me fait pratiquement une semaine que je cherche la solution à ce problème.
    Quelqu'un peut vraiment m'aider ici svp?

  5. #5
    Invité
    Invité(e)

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 112
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    J'ai déjà vu ce tuto mais il n'enregistre pas les informations dans la bd. Donc ce tuto n'est pas adéquat à mon besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ne pas enregistrer plusieurs fois une touche ?
    Par Jordinateur dans le forum SDL
    Réponses: 33
    Dernier message: 05/10/2007, 21h44
  2. Réponses: 2
    Dernier message: 22/09/2007, 15h37
  3. Réponses: 9
    Dernier message: 25/07/2007, 21h24
  4. Réponses: 3
    Dernier message: 10/06/2007, 15h53
  5. [Dates] Enregistrer plusieurs dates
    Par bfabrice dans le forum Langage
    Réponses: 7
    Dernier message: 17/05/2006, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo