Récupérer la donnée d'une table pour la mettre dans une autre

Résolu
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -  
roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis actuellement en BTS IRIS et je dois réaliser un site web de simulation de réservation de billet d'avion.

J'ai presque fini le développement du site en revanche j'ai un petit problème sur la base de données.

Voici ma modélisation :



Le voyageur choisi son vol, un numéro de dossier lui est généré en AUTO_INCREMENT, cela s'enregistre dans la table "dossiervoyage"
Puis il est redirigé vers une page où il devra saisir les informations d'identité des passagers, ces informations seront enregistrées dans la table "voyageur".

Je voudrais savoir comment puis-je récupérer le numéro de dossier qui est généré dans table "dossiervoyage" afin de le copier et de l'associer au voyageur de la table "voyageur"

Merci d'avance

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    Avec quel langage travailles tu ?

    Qu'as tu codé pour l'insertion en BDD ?

    **** Attention ****
    Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    .
    1
    1. roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
       
      Bonjour,

      Afin de communiquer avec ma base de données j'utilise le langage PHP et SQL. J'ai par ailleurs développé ma base de données sur PHPmyAdmin
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Ok... donc en PHP.
    Et pour te connecter (en php) à ta Base de données Mysql .. qu'as tu utilisé comme extension ?
    mysql_* , mysqli_* ou PDO ?

    Et qu'as tu commencé à coder ?(pour l'insertion de tes données en base )

    Merci de nous montrer ton code

    **** Attention ****
    Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    .
    0
  3. roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
     
    J'ai utilisé l'extension PDO comme ci-dessous :

    <?php 
    	try
    		{
    		$bdd_voyageurs = new PDO ('mysql:host=localhost;dbname=databasegestionvoyageurs;charset=utf8', 'root', '');
    		}
    
    	catch(Exception $e)
    		{
    		die('Erreur : '.$e->getMessage());
    		}
    ?>
    


    Voici le traitement de mon premier formulaire :

     <?php session_start(); ?> 
    <!DOCTYPE html>
    <html>
        <head>
            <title>Choose your flight !</title> 
    		<meta charset="utf-8" />
    		<meta http-equiv="Content-Language" content="fr-fr" /> 
    		<link rel="stylesheet" media="screen" type="text/css" href="design.css" />      
    	</head>
    	
    	<body>
    	
    		<?php require_once('connect.php'); ?>
    		<?php include("header.php"); ?>	
    		<?php include("menu.php"); ?>
    		
    		<div class="corps">
    			<?php
    			
    			if (isset($_POST['depart']))
    				$_SESSION['depart'] = $_POST['depart'];
    			else
    				$_SESSION['depart'] = "";
    			
    			if (isset($_POST['arrivee']))
    				$_SESSION['arrivee'] = $_POST['arrivee'];
    			else
    				$_SESSION['arrivee'] = "";			
    
    			if (isset($_POST['date_depart']))
    				$_SESSION['date_depart'] = $_POST['date_depart'];
    			else
    				$_SESSION['date_depart'] = "";	
      
    			if (isset($_POST['date_retour']))
    				$_SESSION['date_retour'] = $_POST['date_retour'];
    			else
    				$_SESSION['date_retour'] = "";	
    			
    			$_SESSION['adultes'] = $_POST['adultes'];	
    
    			$_SESSION['enfants'] = $_POST['enfants'];
     
    
    		
    if (($_SESSION['depart'] && $_SESSION['arrivee'] && $_SESSION['date_depart'] && $_SESSION['date_retour']) != "" )
    
    {
    	
    
    			$date_ajd=date('d-m-Y');
    				
    			if (($date_ajd <= $_SESSION['depart']) ) 
    			
    			{
    				echo "<h2>Vol(s) <span>Disponible</span> :</h2>";
    	
    			?>
    
    
    				<div id="div_liste_vols" class="div_corps">
    					<form name="frm_ajout_reservation" method="POST" action="traitement_page_2_reservation.php">
    						<h1 id="titre_vols">Votre vol <span class="mots_clés">"Aller"</span></h1>
    							<table id="table_vols_aller">
    								<thead class="t_head_vols">
    									<td class="ligne_head_vols">
    										<label>Numéro de vol</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Départ</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Date <br> Heure départ</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Destination</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Heure d'arrivée</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Compagnie</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Prix /p</label>
    									</td>
    									<td class="ligne_head_vols">
    										<label>Choix du vol "aller"</label>
    									</td>
    								</thead>	
    							
    			<?php 
    			
    
    			/* Requete pour déduire le nom de l'aeroport de depart grace au code IATA */
    			$sql_iata_depart  = 
    			"SELECT * 
    			FROM aeroport 
    			WHERE ville = '".$_SESSION['depart']."' OR nomAeroport = '".$_SESSION['depart']."' OR codeIATA = '".$_SESSION['depart']."' ";
    			
    			$result_iata_depart = $bdd_vol->query($sql_iata_depart);
    			while($iata_depart = $result_iata_depart->fetch(PDO::FETCH_ASSOC)) 
    			{	
    				/* Requete pour déduire le nom de l'aeroport destination grace au code IATA */
    				$sql_iata_destination  = 
    				"SELECT * 
    				FROM aeroport 
    				WHERE ville = '".$_SESSION['arrivee']."'";
    				
    				$result_iata_destination = $bdd_vol->query($sql_iata_destination);
    				while($iata_destination = $result_iata_destination->fetch(PDO::FETCH_ASSOC)) 
    				{
    					/* Requete pour trouver les vols aller disponibles selon critères saisis */
    					$sql_aller  = 
    					"SELECT * 
    					FROM vol 
    					WHERE provenance = 
    					'".$iata_depart['codeIATA']."' AND destination = '".$iata_destination['codeIATA']."' AND dateDepart = '".$_SESSION['date_depart']."'";
    					
    					$result = $bdd_vol->query($sql_aller);
    					
    							while($row_aller = $result->fetch(PDO::FETCH_ASSOC))
    							{
    							echo "<tr>";
    							echo "<td class=\"ligne_paire_vols\">".$row_aller['numeroVol']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".$_SESSION['depart']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".dateusfr($row_aller['dateDepart'])."<br>".$row_aller['heureDepart']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".$_SESSION['arrivee']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".dateusfr($row_aller['dateArrivee'])."<br>".$row_aller['heureArrivee']."</td>";
    								/* Recupère le nom de la compagnie grace à IdAvion */
    								$sql_compagnie = "SELECT * FROM avion WHERE IdAvion = '".$row_aller['IdAvion']."'";
    								$result_compagnie = $bdd_vol->query($sql_compagnie);
    
    								while($compagnie = $result_compagnie->fetch(PDO::FETCH_ASSOC))
    								{
    									echo"<td class=\"ligne_paire_vols\">".$compagnie['compagnie']."</td>";
    								}
    							echo "<td class=\"ligne_paire_vols\">".$row_aller['prix']."€</td>";
    							echo '<td class="ligne_paire_vols"><input type="radio" name="choix_aller" value="'.$row_aller['numeroVol'].'"></td>';
    							echo"</tr>";
    							} 
    						
    					/* Requete pour trouver les vols retour disponibles selon critères saisis */
    					$sql_retour  = "SELECT * FROM vol WHERE provenance = '".$iata_destination['codeIATA']."' AND destination = '".$iata_depart['codeIATA']."' AND dateDepart = '".$_SESSION['date_retour']."'";
    					$result_retour = $bdd_vol->query($sql_retour);
    				}
    			} 
    			?> 
    			</table>
    			
    			
    					<h1 id="titre_vols">Votre vol <span class="mots_clés">"Retour"</span></h1>
    					<table id="table_vols_retour">
    						<thead class="t_head_vols">
    							<td class="ligne_head_vols">
    								<label>Numéro de vol</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Départ</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Date <br> Heure départ</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Destination</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Heure d'arrivée</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Compagnie</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Prix /p</label>
    							</td>
    							<td class="ligne_head_vols">
    								<label>Choix du vol "aller"</label>
    							</td>
    						</thead>
    
    						
    			
    						<?php while($row_retour = $result_retour->fetch(PDO::FETCH_ASSOC))
    						{
    						  echo "<tr>";
    							echo "<td class=\"ligne_paire_vols\">".$row_retour['numeroVol']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".$_SESSION['arrivee']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".dateusfr($row_retour['dateDepart'])."<br>".$row_retour['heureDepart']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".$_SESSION['depart']."</td>";
    							echo "<td class=\"ligne_paire_vols\">".dateusfr($row_retour['dateArrivee'])."<br>".$row_retour['heureArrivee']."</td>";
    							
    								/*Recupère le nom de la compagnie grace à IdAvion */
    								$sql_compagnie = "SELECT * FROM avion WHERE IdAvion = '".$row_retour['IdAvion']."'";
    								$result_compagnie = $bdd_vol->query($sql_compagnie);
    
    								while($compagnie = $result_compagnie->fetch(PDO::FETCH_ASSOC))
    								{
    									echo"<td class=\"ligne_paire_vols\">".$compagnie['compagnie']."</td>";
    								}
    							echo "<td class=\"ligne_paire_vols\">".$row_retour['prix']." €</td>";
    							echo '<td class="ligne_paire_vols"><input type="radio" name="choix_retour" value="'.$row_retour['numeroVol'].'"></td>';
    							echo"</td>";
    						echo"</tr>";
    						} 
    						?>
    					</table>
    					</div>
    
    				<input type="submit" value="Réserver" name="reserver" id="reserver" />
    			</form>
    	
    		</div>
    <?php		
    			} else
    				
    				if($date_ajd > $_SESSION['depart'])
    				echo " Votre date de départ est déjà dépassée !";
    				
    			
    }
    else
    	if($_SESSION['depart']=="")
    	echo "<br><font color='red'>Vous devez saisir votre depart ! </font>";
    
    	if($_SESSION['arrivee']=="")
    	echo "<br><font color='red'>Vous devez saisir votre destination ! </font>";
    
    	if($_SESSION['date_depart']=="")
    	echo "<br><font color='red'>Vous devez saisir date de départ ! </font>";
    
    	if($_SESSION['date_retour']=="")
    	echo "<br><font color='red'>Vous devez saisir votre date de retour ! </font>";
    		
    ?>
    	</body>
    </html>
    


    Ainsi que le traitement de mon deuxieme formulaire :

    session_start();
    
    require_once('connect.php');
    				$_SESSION['titre$i'] = $_POST['titre$i']; 
    
    				$_SESSION['prenomt$i'] = $_POST['prenom$i'];
    				
    				$_SESSION['nom$i'] = $_POST['nom$i'];
    				
    				$_SESSION['jour$i'] = $_POST['jour$i'];
    				
    				$_SESSION['mois$i'] = $_POST['mois$i'];
    				
    				$_SESSION['annee$i'] = $_POST['annee$i'];
    				
    				$_SESSION['CI$i'] = $_POST['CI$i'];
    					
    				$_SESSION['mail$i'] = $_POST['mail$i'];
    					
    				$_SESSION['tel_portable$i'] = $_POST['tel_portable$i'];
    					
    				$_SESSION['tel_fixe$i'] = $_POST['tel_fixe$i'];
    					
    				}
    
    	
    	header("Location: bdd.php"); 
    


    Voici l'insertion dans ma BDD :

    <?php session_start();
    
    	require_once('connect.php');
    
    	// on crée une nouvelle ligne dans la table dosssiervoyage page 2 
    	$sql_dossier = "INSERT INTO dossiervoyage
    						(numeroVolAller, numeroVolRetour, nombreVoyageurs, total)
    			VALUES (:choix_aller, :choix_retour, :vol_nbvoyageur, :vol_total)";
    			
    	$result = $bdd_voyageurs->prepare($sql_dossier);
    	$result->bindValue('choix_aller', $_SESSION['choix_aller'], PDO::PARAM_STR);
    	$result->bindValue('choix_retour', $_SESSION['choix_retour'], PDO::PARAM_STR);
    	$result->bindValue('vol_nbvoyageur', $_SESSION['vol_nbvoyageur'], PDO::PARAM_INT);
    	$result->bindValue('vol_total', $_SESSION['vol_total'], PDO::PARAM_INT);
    	$result->execute();
    	
    	
    // on insère les informations des passagers dans la table voyageur
    
    	  $sql_info ="INSERT INTO voyageur
    		(numeroDossier, titre, nom, prenom, dateDeNaissance, telephoneFixe, telephonePortable, mail, numeroCI, nombreBagages) 
    		VALUES('1234', :titre, :nom, :prenom, :dateDeNaissance, :tel_fixe, :tel_portable, :mail, :CI, :nb_bagages)";
    
    	  $result = $bdd_voyageurs->prepare($sql_info);
    	  $result->bindValue('titre', $_SESSION['titre'], PDO::PARAM_STR); 
    	  $result->bindValue('nom', $_SESSION['prenom'], PDO::PARAM_STR);
    	  $result->bindValue('prenom', $_SESSION['nom'], PDO::PARAM_STR);
    	  $result->bindValue('dateDeNaissance', ($_SESSION['annee'].'-'.$_SESSION['mois'].'-'.$_SESSION['jour']), PDO::PARAM_STR);
    	  $result->bindValue('tel_fixe', $_SESSION['tel_fixe'], PDO::PARAM_INT);
    	  $result->bindValue('tel_portable', $_SESSION['tel_portable'], PDO::PARAM_INT);
    	  $result->bindValue('mail', $_SESSION['mail'], PDO::PARAM_STR);
    	  $result->bindValue('CI', $_SESSION['CI'], PDO::PARAM_INT);
    	  $result->bindValue('nb_bagages', $_SESSION['nb_bagages'], PDO::PARAM_INT);
    	  $result->execute();
    
    ?>
    
    0
  4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bon...

    Première chose... pour récupérer tes données ... tu peux remplacer tes IF
    if (isset($_POST['date_depart']))
    				$_SESSION['date_depart'] = $_POST['date_depart'];
    			else
    				$_SESSION['date_depart'] = "";	
    

    Par :
    $_SESSION['date_depart'] = isset($_POST['date_depart']) ? $_POST['date_depart'] : "";
    


    Ca rendra ton code plus lisible.

    Ensuite...
    Lorsque tu insères les données en BDD .. tu peux récupérer automatiquement après, l'ID qui a été généré avec l'instruction lastInsertId()

    // on crée une nouvelle ligne dans la table dosssiervoyage page 2 
    	$sql_dossier = "INSERT INTO dossiervoyage
    						(numeroVolAller, numeroVolRetour, nombreVoyageurs, total)
    			VALUES (:choix_aller, :choix_retour, :vol_nbvoyageur, :vol_total)";
    			
    	$result = $bdd_voyageurs->prepare($sql_dossier);
    	$result->bindValue('choix_aller', $_SESSION['choix_aller'], PDO::PARAM_STR);
    	$result->bindValue('choix_retour', $_SESSION['choix_retour'], PDO::PARAM_STR);
    	$result->bindValue('vol_nbvoyageur', $_SESSION['vol_nbvoyageur'], PDO::PARAM_INT);
    	$result->bindValue('vol_total', $_SESSION['vol_total'], PDO::PARAM_INT);
    	$result->execute();
    
    // récupération de l'ID créé lors de l'insertion :
    $id_dossiervoyage = $bdd_voyageurs->lastInsertId();
    
    
    


    0
    1. roms75001 Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   7
       
      Ca marche merci beaucoup !
      0