Comparer les données d'un formulaire avec celle d'une BDD
Résolu
roms75001
Messages postés
395
Date d'inscription
Statut
Membre
Dernière intervention
-
Thorak83 Messages postés 1051 Date d'inscription Statut Membre Dernière intervention -
Thorak83 Messages postés 1051 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Étant étudiant en deuxième année de BTS Informatique et réseaux pour l'industrie et les services techniques (IRIS), j'ai un projet à réaliser pour l'examen de fin d'année.
Pour ma part, je dois réaliser un site web d'achat de billets d'avion. Le site doit pouvoir proposer différentes destinations, avec différents horaires, avec différentes compagnies etc. Il serait équivalent aux sites tels que https://www.govoyages.com/ ou encore https://www.kayak.fr/ .
J'ai commencé par faire mon HTML ainsi que ma base de données sous Mysql mais je suis bloqué sur le PHP. Je dois récupérer les données du formulaire préalablement remplit par l'utilisateur afin de les comparer à ma base de données et ainsi lui retourner les vols disponibles.
Voici mon code HTML :
Ainsi que le début de mon code PHP :
Comme vous le voyez, je stock les données entrées par l'utilisateur dans des variables mais je ne sais pas comment pourrais-je les comparer à ma base de données afin de retourner à l'utilisateur les vols correspondants.
Merci d'avance
EDIT: Précision du langage dans la coloration syntaxique.
Étant étudiant en deuxième année de BTS Informatique et réseaux pour l'industrie et les services techniques (IRIS), j'ai un projet à réaliser pour l'examen de fin d'année.
Pour ma part, je dois réaliser un site web d'achat de billets d'avion. Le site doit pouvoir proposer différentes destinations, avec différents horaires, avec différentes compagnies etc. Il serait équivalent aux sites tels que https://www.govoyages.com/ ou encore https://www.kayak.fr/ .
J'ai commencé par faire mon HTML ainsi que ma base de données sous Mysql mais je suis bloqué sur le PHP. Je dois récupérer les données du formulaire préalablement remplit par l'utilisateur afin de les comparer à ma base de données et ainsi lui retourner les vols disponibles.
Voici mon code HTML :
<html> <head> <title>Choose your flight !</title> <meta charset="utf-8" /> <meta http-equiv="Content-Language" content="fr-fr" /> <script type="text/javascript" src="calendrier.js"></script> <link rel="stylesheet" media="screen" type="text/css" href="design.css" /> </head> <body> <?php include("header.php"); ?> <?php include("menu.php"); ?> <!-- Corps --> <div id="corps"> <!-- Formulaire pour trouver un vol --> <div id="div_formulaire" class="div_corps"> <caption><h1 id="titre_form"> TROUVER UN <span class="mots_clés">VOL</span> </h1></caption> <form method="post" action="traitement_recherche_vol2.php"><table> <tr><td class="colonne1"> <label for="alle_retour" class="colonne1">Aller Retour</label> <input type="radio" name="aller_retour" checked> </td> <td class="colonne2"> <label for="aller" class="colonne1">Aller Simple</label> <input type="radio" name="aller_retour"> </td></tr> <tr><td class="colonne1"> <label>Départ</label> : <br><input type="text" name="depart" /> </td> <td class="colonne2"> <label>Arrivée</label> : <br><input type="text" name="arrivee" /> </td></tr> <!--Tableau qui contiendra le calendrier --> <td><table class="ds_box" cellpadding="0" cellspacing="0" id="ds_conclass" style="display: none;"> <tr> <td id="ds_calclass"></td> </tr> </table></td> <tr><td class="colonne1"> <label>Date de départ :</label><br><input type="text" name="date_depart" onclick="ds_sh(this);" /> </td> <td class="colonne2"> <label>Date de retour :</label><br><input type="text" name="date_retour" onclick="ds_sh(this);" /> </td></tr> <tr><td class="colonne1"> <label name="adultes" class="colonne1_1">Adulte(s) :</label> <label name="enfants" class="colonne1_2">Enfant(s) :</label> </td> <td class="colonne2"> <label name="classe" "colonne1_1">Classe :</label> <label name="vol_direct" class="colonne2_2">Vol direct </label> </td></tr> <tr><td class="colonne1"> <select name="adultes"> <!-- menu deroulant pour choisir le nombre de voyageurs --> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> <select name="enfants" class="colonne1_1_2"> <option value="1">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select></td> <td class="colonne2"><select name="classe" id="classe"> <option value="economique">Economique</option> <option value="affaire">Affaire</option> <option value="premiere">Première</option> </select> <input type="checkbox" name="vol_direct" class="colonne2_2"> </td></tr> <tr><td></td> <td class="colonne2"> <input type="submit" value="Rechercher un vol" name="rechercher" class="rechercher"/> </td></tr> </table> </form></div> <!-- fin de la div "formulaire" --> <div id="image"> <img id="monde" src="./images/monde.jpg" alt="monde"/> </div> <?php include("footer.php"); ?> </div> <!-- fin de la div "corps" --> </body> </html>
Ainsi que le début de mon code PHP :
<?php // On commence par récupérer les champs if(isset($_POST['depart'])) $depart=$_POST['depart']; else $depart=""; if(isset($_POST['arrivee'])) $arrivee=$_POST['arrivee']; else $arrivee=""; if(isset($_POST['date_depart'])) $arrivee=$_POST['date_depart']; else $date_depart=""; if(isset($_POST['date_retour'])) $arrivee=$_POST['date_retour']; else $date_retour=""; if(isset($_POST['adultes'])) $arrivee=$_POST['adultes']; else $adultes=""; if(isset($_POST['enfants'])) $arrivee=$_POST['enfants']; else $enfants=""; if(isset($_POST['classe'])) $arrivee=$_POST['classe']; else $classe=""; // On vérifie si les champs sont vides if(empty($depart) OR empty($arrivee) OR empty($date_depart) OR empty($date_retour) OR empty($adultes) OR empty($enfants) OR empty($classe)) { echo '<font color="red">Attention, seul le champs <b>ICQ</b> peut rester vide !</font>'; } // Aucun champ n'est vide, on peut enregistrer dans la table else { // Connexion à la base de donnée try { $bdd = new PDO ('mysql:host=localhost;dbname=databasegestionvol;charset=utf8', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } } ?>
Comme vous le voyez, je stock les données entrées par l'utilisateur dans des variables mais je ne sais pas comment pourrais-je les comparer à ma base de données afin de retourner à l'utilisateur les vols correspondants.
Merci d'avance
EDIT: Précision du langage dans la coloration syntaxique.
A voir également:
- Comparer les données d'un formulaire avec celle d'une BDD
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Supprimer les données de navigation - Guide
- Formulaire de reclamation instagram - Guide
6 réponses
Bonjour,
Sans connaitre le nom des tables, ni le nom des champs, ça va pas être simple.
Après la connexion, faire une requête SQL avec les critères récupérés.
C'est un exemple, a vous d'adapter
Cordialement
Sans connaitre le nom des tables, ni le nom des champs, ça va pas être simple.
Après la connexion, faire une requête SQL avec les critères récupérés.
$sql = "SELECT champ1, champ2,... From tableVols WHERE champ1 = '".$val1."' AND champ2 = '".$val2."' ORDER BY champdeTrie"; $result = $bdd->query($sql); while($row = $result->fetch(PDO::FETCH_ASSOC)) { echo $row['Champ1']; }
C'est un exemple, a vous d'adapter
Cordialement
Bonjour Thorak83,
Tout d'abord, merci pour votre réponse.
Veuillez m'excuser, voici le nom de mes tables ainsi que mes champs :
Table "aeroport" :

Table "vol" :

La table "aeroport" me servira à trouver le "codeIATA" de l'aéroport que l'utilisateur aura saisi (c'est à dire l'identifiant de l'aéroport).
Ainsi, avec ce "codeIATA" je pourrais trouver dans la table "vol" les vols correspondant.
Si un exemple correspondant à mes tables pourrait m'être proposé, cela me serais plus parlant.
Cordialement.
Tout d'abord, merci pour votre réponse.
Veuillez m'excuser, voici le nom de mes tables ainsi que mes champs :
Table "aeroport" :

Table "vol" :

La table "aeroport" me servira à trouver le "codeIATA" de l'aéroport que l'utilisateur aura saisi (c'est à dire l'identifiant de l'aéroport).
Ainsi, avec ce "codeIATA" je pourrais trouver dans la table "vol" les vols correspondant.
Si un exemple correspondant à mes tables pourrait m'être proposé, cela me serais plus parlant.
Cordialement.
Voici
function dateusfr($dateus) { $date=explode("-",$dateus); return $date[2]."/".$date[1]."/".$date[0]; } function datefrus($datefr) { $date=explode("/",$datefr); return $date[2]."-".$date[1]."-".$date[0]; } $sql = "SELECT * FROM vol WHERE provenance = '".$depart."' AND destination = '".$arrivee."' AND dateDepart = '".datefrus($date_depart)."' AND dateArrivee = '".datefrus($date_retour)."'"; $result = $bdd->query($sql); echo "<table>"; echo "<th>N°Vol</th><th>IDavion</th><th>Provenance</th><th>Destination</th><th>dateDepart</th><th>dateArrivee</th><th>HeureDepart</th><th>heureArrivee</th><th>Etat</th><th>Prix</th>"; while($row = $result->fetch(PDO::FETCH_ASSOC)) { echo "<tr>"; echo "<td>".$row['numeroVol']."</td>"; echo "<td>".$row['IDavion']."</td>"; echo "<td>".$row['provenance']."</td>"; echo "<td>".$row['destination']."</td>"; echo "<td>".dateusfr($row['dateDepart'])."</td>"; echo "<td>".dateusfr($row['dateArrivee'])."</td>"; echo "<td>".$row['heureDepart']."</td>"; echo "<td>".$row['heureArrivee']."</td>"; echo "<td>".$row['Etat']."</td>"; echo "<td>".$row['Prix']."</td>"; echo "</tr>"; } echo "</table>";
Après exécution du code suivant:
Quelques erreurs sont affichées :

Cordialement
<?php
// On commence par récupérer les champs
if(isset($_POST['depart'])) $depart=$_POST['depart'];
else $depart="";
if(isset($_POST['arrivee'])) $arrivee=$_POST['arrivee'];
else $arrivee="";
if(isset($_POST['date_depart'])) $arrivee=$_POST['date_depart'];
else $date_depart="";
if(isset($_POST['date_retour'])) $arrivee=$_POST['date_retour'];
else $date_retour="";
if(isset($_POST['adultes'])) $arrivee=$_POST['adultes'];
else $adultes="";
if(isset($_POST['enfants'])) $arrivee=$_POST['enfants'];
else $enfants="";
if(isset($_POST['classe'])) $arrivee=$_POST['classe'];
else $classe="";
// Connexion à la base de donnée
try
{
$bdd = new PDO ('mysql:host=localhost;dbname=databasegestionvol;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
function dateusfr($dateus)
{
$date=explode("-",$dateus);
return $date[2]."/".$date[1]."/".$date[0];
}
function datefrus($datefr)
{
$date=explode("/",$datefr);
return $date[2]."-".$date[1]."-".$date[0];
}
$sql = "SELECT * FROM vol WHERE provenance = '".$depart."' AND destination = '".$arrivee."' AND dateDepart = '".datefrus($date_depart)."' AND dateArrivee = '".datefrus($date_retour)."'";
$result = $bdd->query($sql);
echo "<table>";
echo "<th>N°Vol</th><th>IDavion</th><th>Provenance</th><th>Destination</th><th>dateDepart</th><th>dateArrivee</th><th>HeureDepart</th><th>heureArrivee</th><th>Etat</th><th>Prix</th>";
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td>".$row['numeroVol']."</td>";
echo "<td>".$row['IDavion']."</td>";
echo "<td>".$row['provenance']."</td>";
echo "<td>".$row['destination']."</td>";
echo "<td>".dateusfr($row['dateDepart'])."</td>";
echo "<td>".dateusfr($row['dateArrivee'])."</td>";
echo "<td>".$row['heureDepart']."</td>";
echo "<td>".$row['heureArrivee']."</td>";
echo "<td>".$row['Etat']."</td>";
echo "<td>".$row['Prix']."</td>";
echo "</tr>";
}
echo "</table>";
?>
Quelques erreurs sont affichées :

Cordialement
plusieurs erreurs:
regardez cette partie de code, tout est en $arrivee =....
regardez cette partie de code, tout est en $arrivee =....
if(isset($_POST['depart'])) $depart=$_POST['depart']; else $depart=""; if(isset($_POST['arrivee'])) $arrivee=$_POST['arrivee']; else $arrivee=""; if(isset($_POST['date_depart'])) $arrivee=$_POST['date_depart']; else $date_depart=""; if(isset($_POST['date_retour'])) $arrivee=$_POST['date_retour']; else $date_retour=""; if(isset($_POST['adultes'])) $arrivee=$_POST['adultes']; else $adultes=""; if(isset($_POST['enfants'])) $arrivee=$_POST['enfants']; else $enfants=""; if(isset($_POST['classe'])) $arrivee=$_POST['classe']; else $classe="";
je n'ai aucune erreur personnellement
if(isset($_POST['depart'])) $depart=$_POST['depart']; else $depart=""; if(isset($_POST['arrivee'])) $arrivee=$_POST['arrivee']; else $arrivee=""; if(isset($_POST['date_depart'])) $date_depart=$_POST['date_depart']; else $date_depart=""; if(isset($_POST['date_retour'])) $date_retour=$_POST['date_retour']; else $date_retour=""; if(isset($_POST['adultes'])) $adultes=$_POST['adultes']; else $adultes=""; if(isset($_POST['enfants'])) $enfants=$_POST['enfants']; else $enfants=""; if(isset($_POST['classe'])) $classe=$_POST['classe']; else $classe="";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici :
Array ( [aller_retour] => on [depart] => CDG [arrivee] => FCO [date_depart] => 16/06/2015 [date_retour] => 23/06/2015 [adultes] => 1 [enfants] => 1 [classe] => economique [rechercher] => Rechercher un vol )
N°Vol IDavion Provenance Destination dateDepart dateArrivee HeureDepart heureArrivee Etat Prix
Array ( [aller_retour] => on [depart] => CDG [arrivee] => FCO [date_depart] => 16/06/2015 [date_retour] => 23/06/2015 [adultes] => 1 [enfants] => 1 [classe] => economique [rechercher] => Rechercher un vol )
N°Vol IDavion Provenance Destination dateDepart dateArrivee HeureDepart heureArrivee Etat Prix
Si vous voulez les aller et retour essayez ceci
$sql = "SELECT * FROM vol WHERE (provenance = '".$depart."' AND destination = '".$arrivee."' AND dateDepart = '".datefrus($date_depart)."') OR (provenance = '".$arrivee."' AND destination = '".$depart."' AND dateDepart = '".datefrus($date_retour)."')";