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

Résolu/Fermé
roms75001 Messages postés 395 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2017 - 28 mai 2015 à 17:58
roms75001 Messages postés 395 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2017 - 1 juin 2015 à 14:55
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
A voir également:

4 réponses

jordane45 Messages postés 38303 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
29 mai 2015 à 02:16
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
roms75001 Messages postés 395 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2017 7
29 mai 2015 à 08:11
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
jordane45 Messages postés 38303 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
29 mai 2015 à 11:10
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
roms75001 Messages postés 395 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2017 7
29 mai 2015 à 12:02
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
jordane45 Messages postés 38303 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
29 mai 2015 à 12:27
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
roms75001 Messages postés 395 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2017 7
1 juin 2015 à 14:55
Ca marche merci beaucoup !
0