Créez un script permettant d’afficher le contenu de la table modele dans un tableau XHTML. Les résultats doivent être triés par marque.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Lecture de la table modele</title> <style type="text/css" > table {border-style:double;border-width: 3px;border-color: red;background-color: yellow;} </style> </head> <body> <?php include("connexpdo.inc.php"); $idcom=connexpdo("voitures","myparam"); $requete="SELECT id_modele AS 'Code modèle',modele AS 'Modèle',carburant AS 'Carburant' FROM modele ORDER BY modele"; $result=$idcom->query($requete); // if(!$result) { echo "Lecture impossible"; } else { $nbart=$result->rowCount(); echo "<h3> Tous les modèles de voitures</h3>"; echo "<h4> Il y a $nbart modèles répertoriés </h4>"; echo "<table border=\"1\"> <tr>"; //Lecture des lignes de résultat while($ligne=$result->fetch(PDO::FETCH_ASSOC)) { echo "<tr>"; foreach($ligne as $valeur) { echo "<td> $valeur </td>"; } echo "</tr>"; } echo "</table>"; } $result->closeCursor(); $idcom=null; ?> </body> </html>Voir le résultat
Créez un formulaire permettant l’insertion de nouvelles données dans la table modele.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Saisissez les caractéristiques du modèle</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Vos coordonnées</b></legend> <table> <tr><td>Code du type : </td><td><input type="text" name="id_modele" size="40" maxlength="10"/></td></tr> <tr><td>Marque et modèle : </td><td><input type="text" name="modele" size="40" maxlength="30"/></td></tr> <tr><td>Carburant : </td> <td><select name="carburant"> <option value="essence">Essence</option> <option value="diesel">Diesel</option> <option value="électrique">Electrique</option> </select></td> </tr> <tr> <td><input type="reset" value=" Effacer "></td> <td><input type="submit" value=" Envoyer "></td> </tr> </table> </fieldset> </form> <?php include("connexpdo.inc.php"); $idcom=connexpdo("voitures","myparam"); echo $_POST['id_modele'],$_POST['modele'],$_POST['carburant'],"<br />"; if(!empty($_POST['id_modele'])&& !empty($_POST['modele'])&& !empty($_POST['carburant'])) { $id_modele=$idcom->quote($_POST['id_modele']); $modele=$idcom->quote($_POST['modele']); $carburant=$idcom->quote($_POST['carburant']); //Requète SQL $requete="INSERT INTO modele VALUES($id_modele,$modele,$carburant)"; $nb=$idcom->exec($requete); if($nb!=1) { echo "<script type=\"text/javascript\"> alert('Erreur : ".$idcom->errorCode()."')</script>"; } else { echo "<script type=\"text/javascript\"> alert('Modèle bien enregistré ')</script>"; } } else {echo "<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Créez un formulaire permettant l’insertion simultanée des coordonnées d’une personne dans les tables proprietaire, cartegrise et voiture. Il doit contenir les zones de saisie des coordonnées de la personne et la liste des modèles d’une marque créée dynamiquement à partir de la saisie de la marque.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Saisissez les caractéristiques du modèle</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Enregistrement d'un véhicule</b></legend> <table> <tr colspan="2"><td><b>Propriétaire</b></td></tr> <tr><td>Nom : </td><td><input type="text" name="nom" size="40" maxlength="10"/></td></tr> <tr><td>Prénom : </td><td><input type="text" name="prenom" size="40" maxlength="30"/></td></tr> <tr><td>Adresse : </td><td><input type="text" name="adresse" size="40" maxlength="30"/></td></tr> <tr><td>Ville : </td><td><input type="text" name="ville" size="40" maxlength="30"/></td></tr> <tr><td>Code postal : </td><td><input type="text" name="codepostal" size="40" maxlength="5"/></td></tr> <tr colspan="2"><td><b>Modèle</b></td></tr> <tr><td>Marque : </td><td><input type="text" name="marque" size="40" maxlength="30" /> <input type="submit" name ="cherchemod" value=" Chercher les modèles " /></td> </tr> <?php if(isset($_POST['cherchemod'])) { include_once("connexpdo.inc.php"); $idcom=connexpdo('voitures','myparam'); $marque=$_POST['marque']; //Requète SQL $requete="SELECT DISTINCT id_modele,modele FROM modele WHERE modele LIKE '%$marque%'"; $result=$idcom->query($requete); echo "<tr><td>Les modèles</td> <td><select name=\"id_modele\">"; while($ligne=$result->fetch(PDO::FETCH_BOTH)) { { echo " <option value=\"$ligne[0]\">$ligne[1]</option>"; } } echo "</select></td></tr>"; } ?> <tr><td>Carburant : </td> <td><select name="carburant"> <option value="essence">Essence</option> <option value="diesel">Diesel</option> <option value="électrique">Electrique</option> </select></td> </tr> <tr colspan="2"><td><b>Voiture</b></td></tr> <tr> <td>Numéro d'immatriculation</td> <td><input type="text" name="immat" /></td> </tr> <tr><td>Couleur : </td> <td><select name="couleur"> <option value="claire">Claire</option> <option value="moyenne">Moyenne</option> <option value="foncée">Foncée</option> </select></td> </tr> <tr> <td>Date 1ere immatriculation AAAA-MM-JJ</td> <td><input type="text" name="datevoiture" /></td> </tr> <td>Date de la carte grise AAAA-MM-JJ</td> <td><input type="text" name="datecarte" /></td> </tr> <tr> <td><input type="reset" value=" Effacer " /></td> <td><input type="submit" value="ENREGISTRER" name="enreg" /></td> </tr> </table> </fieldset> </form> <?php include_once("connexpdo.inc.php"); $idcom=connexpdo('voitures','myparam'); if(isset($_POST['enreg'])) { //Récupération des valeurs du formulaire $id_modele=$idcom->quote($_POST['id_modele']); $carburant=$idcom->quote($_POST['carburant']); $immat=$idcom->quote($_POST['immat']); $couleur=$idcom->quote($_POST['couleur']); $datevoiture=$idcom->quote($_POST['datevoiture']); $datecarte=$idcom->quote($_POST['datecarte']); $nom=$idcom->quote($_POST['nom']); $prenom=$idcom->quote($_POST['prenom']); $adresse=$idcom->quote($_POST['adresse']); $ville=$idcom->quote($_POST['ville']); $codepostal=$idcom->quote($_POST['codepostal']); //Connexion $idcom=connexpdo('voitures','myparam'); //Requète SQL: insertions dans la table voiture $requete="INSERT INTO voiture VALUES($immat,$id_modele,$couleur,$datevoiture)"; $result1=$idcom->query($requete); //Requète SQL: insertions dans la table proprietaire $requete="INSERT INTO proprietaire VALUES('',$nom,$prenom,$adresse,$ville,$codepostal)"; $result2=$idcom->query($requete); $id_pers=$idcom->lastInsertId(); //Requète SQL: insertions dans la table cartegrise $requete="INSERT INTO cartegrise VALUES($id_pers,$immat,$datecarte)"; $result3=$idcom->query($requete); if(!$result1) { echo "<script type=\"text/javascript\"> alert('Erreur NUM: ".$idcom->errorCode()."')</script>"; } else { echo "<script type=\"text/javascript\">"; echo "alert('La carte grise est enregistrée ')</script>"; } } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Créez un formulaire de recherche permettant de retrouver tous les propriétaires d’un type de véhicule de marque et de modèle donnés. Affichez les résultats sous forme de tableau XHTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Recherche des propriétaires d'un modèle</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Choisir le modèle</b></legend> <table> <tr><td>Marque et modèle</td><td><input type="text" name="modele" maxlength=" " /></td></tr> <td><input type="submit" value="Chercher" /></td> </tr> </table> </fieldset> </form> <?php if(isset($_POST['modele'])) { include_once('connexpdo.inc.php'); $idcom=connexpdo('voitures','myparam'); $modele=$_POST['modele']; //Requète SQL $requete="SELECT proprietaire.nom,proprietaire.prenom FROM voiture,modele,proprietaire,cartegrise WHERE modele LIKE '%$modele%' AND voiture.id_modele=modele.id_modele AND cartegrise.immat=voiture.immat AND proprietaire.id_pers=cartegrise.id_pers"; $result=$idcom->query($requete); echo "<table border=\"1\" >"; while($ligne=$result->fetch(PDO::FETCH_BOTH)) { echo " <tr><td>$ligne[0]</td><td> $ligne[1]</td>"; } echo "</table>"; } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Créez un formulaire de recherche permettant de retrouver tous les véhicules possédés par une personne donnée. Affichez les résultats sous forme de tableau XHTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Recherche des voitures d'une personne</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Coordonnées de la personne</b></legend> <table> <tr><td>Nom : </td><td><input type="text" name="nom" /></td></tr> <tr><td>Prénom : </td><td></td></tr> <td><input type="submit" value="Chercher" /></td> </tr> </table> </fieldset> </form> <?php if(isset($_POST['nom']) && isset($_POST['prenom'])) { include_once('connexpdo.inc.php'); $idcom=connexpdo('voitures','myparam'); $nom=$idcom->quote($_POST['nom']); $prenom=$idcom->quote($_POST['prenom']); //Requète SQL $requete="SELECT voiture.immat,modele.modele FROM voiture,modele,proprietaire,cartegrise WHERE proprietaire.nom=$nom AND proprietaire.prenom=$prenom AND proprietaire.id_pers=cartegrise.id_pers AND voiture.id_modele=modele.id_modele AND cartegrise.immat=voiture.immat"; $result=$idcom->query($requete); echo "<h3>Liste des véhicules de ",$_POST['prenom'],$_POST['nom']," </h3>"; echo "<table border=\"1\" >"; while($ligne=$result->fetch(PDO::FETCH_BOTH)) { echo " <tr><td> ",$ligne[0]," </td><td> ", $ligne[1]," </td>"; } echo "</table>"; } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Réécrivez entièrement le code de l’exercice 5 en récupérant tous les résultats dans des objets et en manipulant leurs propriétés.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Recherche des voitures d'une personne</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "<?php echo $_SERVER['PHP_SELF'];?>" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Coordonnées de la personne</b></legend> <table> <tr><td>Nom : </td><td><input type="text" name="nom" /></td></tr> <tr><td>Prénom : </td><td><input type="text" name="prenom"/></td></tr> <td><input type="submit" value="Chercher" /></td> </tr> </table> </fieldset> </form> <?php if(isset($_POST['nom']) && isset($_POST['prenom'])) { include_once('connexpdo.inc.php'); $idcom=connexpdo('voitures','myparam'); $nom=$idcom->quote($_POST['nom']); $prenom=$idcom->quote($_POST['prenom']); //Requète SQL $requete="SELECT voiture.immat,modele.modele FROM voiture,modele,proprietaire,cartegrise WHERE proprietaire.nom=$nom AND proprietaire.prenom=$prenom AND proprietaire.id_pers=cartegrise.id_pers AND voiture.id_modele=modele.id_modele AND cartegrise.immat=voiture.immat"; $result=$idcom->query($requete); echo "<h3>Liste des véhicules de ", $_POST['prenom']," ", $_POST['nom'],"</h3>"; echo "<table border=\"1\" >"; while($ligne=$result->fetchObject()) { echo " <tr><td> ",$ligne->immat," </td><td> ", $ligne->modele," </td>"; } echo "</table>"; } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Refaire l’exercice 4 en utilisant une requête préparée.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Recherche des propriétaires d'un modèle</title> </head> <body> <form action= "<?php echo $_SERVER['PHP_SELF'];?>" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Choisir le modèle </b></legend> <table> <tr><td>Marque et modèle</td><td><input type="text" name="modele" maxlength=" " /></td></tr> <td><input type="submit" value="Chercher" /></td> </tr> </table> </fieldset> </form> <?php if(isset($_POST['modele'])) { include_once('connexpdo.inc.php'); $idcom=connexpdo('voitures','myparam'); $modele=$_POST['modele']; //Requète SQL $requeteprep=$idcom->prepare("SELECT proprietaire.nom,proprietaire.prenom FROM voiture,modele,proprietaire,cartegrise WHERE modele=:modele AND voiture.id_modele=modele.id_modele AND cartegrise.immat=voiture.immat AND proprietaire.id_pers=cartegrise.id_pers"); $requeteprep->bindParam(':modele',$modele,PDO::PARAM_STR); $requeteprep->execute(); $requeteprep->bindColumn('nom',$nom); $requeteprep->bindColumn('prenom',$prenom); //var_dump($requeteprep->fetch()); echo "<table border=\"1\" >"; while($requeteprep->fetch(PDO::FETCH_BOUND)) { echo " <tr><td>$nom</td><td> $prenom</td>"; } echo "</table>"; } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat
Refaire l'exercice 3 en utilisant une transaction pour s'assurer que les données sont bien insérées dans les différentes tables.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <title>Saisissez les caractéristiques du modèle</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action= "" name="form1" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>Enregistrement d'un véhicule</b></legend> <table> <tr colspan="2"><td><b>Propriétaire</b></td></tr> <tr><td>Nom : </td><td><input type="text" name="nom" size="40" maxlength="10"/></td></tr> <tr><td>Prénom : </td><td><input type="text" name="prenom" size="40" maxlength="30"/></td></tr> <tr><td>Adresse : </td><td><input type="text" name="adresse" size="40" maxlength="30"/></td></tr> <tr><td>Ville : </td><td><input type="text" name="ville" size="40" maxlength="30"/></td></tr> <tr><td>Code postal : </td><td><input type="text" name="codepostal" size="40" maxlength="5"/></td></tr> <tr colspan="2"><td><b>Modèle</b></td></tr> <tr><td>Marque : </td><td><input type="text" name="marque" size="40" maxlength="30" /> <input type="submit" name ="cherchemod" value=" Chercher les modèles " /></td> </tr> <?php if(isset($_POST['cherchemod'])) { include_once("connexpdo.inc.php"); $idcom=connexpdo('voitures','myparam'); $marque=$_POST['marque']; //Requète SQL $requete="SELECT DISTINCT id_modele,modele FROM modele WHERE modele LIKE '%$marque%'"; $result=$idcom->query($requete); echo "<tr><td>Les modèles</td> <td><select name=\"id_modele\">"; while($ligne=$result->fetch(PDO::FETCH_BOTH)) { { echo " <option value=\"$ligne[0]\">$ligne[1]</option>"; } } echo "</select></td></tr>"; } ?> <tr><td>Carburant : </td> <td><select name="carburant"> <option value="essence">Essence</option> <option value="diesel">Diesel</option> <option value="électrique">Electrique</option> </select></td> </tr> <tr colspan="2"><td><b>Voiture</b></td></tr> <tr> <td>Numéro d'immatriculation</td> <td><input type="text" name="immat" /></td> </tr> <tr><td>Couleur : </td> <td><select name="couleur"> <option value="claire">Claire</option> <option value="moyenne">Moyenne</option> <option value="foncée">Foncée</option> </select></td> </tr> <tr> <td>Date 1ere immatriculation AAAA-MM-JJ</td> <td><input type="text" name="datevoiture" /></td> </tr> <td>Date de la carte grise AAAA-MM-JJ</td> <td><input type="text" name="datecarte" /></td> </tr> <tr> <td><input type="reset" value=" Effacer " /></td> <td><input type="submit" value="ENREGISTRER" name="enreg" /></td> </tr> </table> </fieldset> </form> <?php include_once("connexpdo.inc.php"); $idcom=connexpdo('voitures','myparam'); if(isset($_POST['enreg'])) { //Récupération des valeurs du formulaire $id_modele=$idcom->quote($_POST['id_modele']); $carburant=$idcom->quote($_POST['carburant']); $immat=$idcom->quote($_POST['immat']); $couleur=$idcom->quote($_POST['couleur']); $datevoiture=$idcom->quote($_POST['datevoiture']); $datecarte=$idcom->quote($_POST['datecarte']); $nom=$idcom->quote($_POST['nom']); $prenom=$idcom->quote($_POST['prenom']); $adresse=$idcom->quote($_POST['adresse']); $ville=$idcom->quote($_POST['ville']); $codepostal=$idcom->quote($_POST['codepostal']); //Connexion $idcom=connexpdo('voitures','myparam'); //Début transaction $idcom->beginTransaction(); //Requète SQL 1: insertions dans la table voiture $requete1="INSERT INTO voiture VALUES($immat,$id_modele,$couleur,$datevoiture)"; //Compteur d'exécution des requètes $valid=$idcom->exec($requete1); //Requète SQL 2: insertions dans la table proprietaire $requete2="INSERT INTO proprietaire VALUES('',$nom,$prenom,$adresse,$ville,$codepostal)"; $valid+=$idcom->exec($requete2); $id_pers=$idcom->lastInsertId(); //Requète SQL 3: insertions dans la table cartegrise $requete3="INSERT INTO cartegrise VALUES($id_pers,$immat,$datecarte)"; $valid+=$idcom->exec($requete3); if($valid!=3) { $idcom->rollBack(); $err=$idcom->errorInfo(); echo "<script type=\"text/javascript\"> alert('Erreur NUM: ".$err[2]."')</script>"; } else { $idcom->commit(); echo "<script type=\"text/javascript\">"; echo "alert('La carte grise est enregistrée ')</script>"; } } else {"<h3>Formulaire à compléter!</h3>";} ?> </body> </html>Voir le résultat