Exercices php5
Exercices php5
Exercices php5
Exercices du chapitre 2
Exercice 1
Exercice 2
Exercice 3
Exercice 4
Exercice 5
2
$a[0]="MySQL";
echo "\$a[0] vaut : {$a[0]} et est de type ", gettype($a),"<br />";
?>
Résultat affiché :
$x vaut : PHP5 et est de type string
$a[0] vaut : PHP5 et est de type array
$y vaut : 5 eme version de PHP et est de type string
$z vaut : 50 et est de type integer
$x vaut : PHP5 5 eme version de PHP et est de type string
$y vaut : 250 et est de type integer
$a[0] vaut : MySQL et est de type array
Exercice 6
Solution :
$x vaut : 9E3
$y vaut : 7
$z vaut : 9000
Exercice 7
Exercices du chapitre 3
Exercice 1
Exercice 2
4
{
echo "Bonjour Madame vous avez entre 21 et 40 ans <br />";
}
else
{
echo "Désolé, vous ne remplissez pas les conditions <br />";
}
?>
Exercice 3
Exercice 4
6
Exercice 5
?>
Exercice 6
Exercice 7
8
Exercice 8
Exercices du chapitre 4
Exercice 1
Exercice 2
Exercice 3
10
for($i=0;$i<count($tab);$i++)
{
echo vsprintf ("<tt>%'_-20s %'_-20s </tt><br />",$tab[$i]);
}
?>
Exercice 4
Exercice 5
Exercice 6
Effectuez une censure sur des textes en n’affichant pas ceux qui
contiennent le mot zut.
<?php
$ch="Zut je me suis trompé";
$modele="zut";
if(eregi($modele,$ch)) echo "Un Mot censuré";
else echo $ch
?>
Exercice 7
Exercice 8
12
return TRUE;
}
else
{
echo "$age est un age invalide <br />";
return FALSE;
}
?>
Exercice 9
Exercices du chapitre 5
Exercice 1
Exercice 2
Exercice 3
14
Elément Smith :
elément 0 :Stan
elément 1 :Londres
elément 2 :45
Exercice 4
Utilisez une boucle while pour lire les tableaux des exercices 1
et 2.
Personne: Schmoll
clé 0 valeur Kirk
clé 1 valeur Berlin
clé 2 valeur 35
Personne: Smith
clé 0 valeur Stan
clé 1 valeur Londres
clé 2 valeur 45
while($element=each($tab))
{
echo "Personne: {$element['key']} <br />";
while($coord=each($element[1]))
{
echo "{$coord[0]}:{$coord[1]} <br />";
}
echo"<hr />";
}
?>
Personne: Schmoll
prenom:Kirk
ville:Berlin
age:35
Personne: Smith
prenom:Stan
ville:Londres
age:45
16
Exercice 5
Exercice 6
18
3 0.14112000806
3.1 0.0415806624333
3.2 -0.0583741434276
3.3 -0.157745694143
3.4 -0.255541102027
3.5 -0.35078322769
3.6 -0.442520443295
3.7 -0.529836140908
3.8 -0.611857890943
3.9 -0.687766159184
4 -0.756802495308
4.1 -0.818277111064
4.2 -0.871575772414
4.3 -0.916165936749
4.4 -0.95160207389
4.5 -0.977530117665
4.6 -0.993691003633
4.7 -0.999923257564
4.8 -0.996164608836
4.9 -0.982452612624
5 -0.958924274663
5.1 -0.925814682328
5.2 -0.88345465572
5.3 -0.832267442224
5.4 -0.772764487556
5.5 -0.70554032557
5.6 -0.631266637872
5.7 -0.550685542598
5.8 -0.464602179414
5.9 -0.37387666483
6 -0.279415498199
6.1 -0.182162504272
6.2 -0.0830894028175
6.3 0.0168139004843
Exercices du chapitre 6
Exercice 1
20
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 1</title>
</head>
<body>
<form action="ch6exo1.php" method="post">
<fieldset>
<legend><b>Saisissez vos coordonnées </b></legend>
<table border="0" >
<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>
<tr>
<td>Adresse : </td>
<td><input type="text" name="adresse" /></td>
</tr>
<tr>
<td>Ville :</td>
<td><input type="text" name="ville" /></td>
</tr>
<tr>
<td>Code postal :</td>
<td><input type="text" name="code" maxlength="5"/></td>
</tr>
<tr>
<td>CONFIRMER</td>
<td><input type="submit" value="ENVOI" /></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
Exercice 2
Exercice 3
22
Le fichier suivant peut-il être enregistré avec l’extension .php ou
.htm ? Où se fait le traitement des données ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title> Insertion des données </title>
</head>
<body>
<form method="post" action="ajout.php" >
//Suite du formulaire
</form>
</body>
</html>
Exercice 4
Comment faire pour que les données soient traitées par le même
fichier que celui qui contient le formulaire ? Proposer deux
solutions.
Exercice 5
Résultat obtenu :
Votre mail et votre navigateur
mail : [email protected]
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
navigateur :
5.1; .NET CLR 1.1.4322)
Exercice 6
24
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 5</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
<fieldset>
<legend><b>Saisissez le prix HT et le taux de TVA </b></legend>
<table border="0" >
<tr>
<td>Prix Hors Taxes : </td>
<td><input type="text" name="prixht" value="<?=
$_POST['prixht']?>" /></td>
</tr>
<tr>
<td>Taux de TVA (en %) : </td>
<td><input type="text" name="tva" value="<?=
$_POST['tva']?>"/></td>
</tr>
<?php
if(!empty($_POST['prixht']) AND !empty($_POST['tva']) )
{
echo "<tr><td>Montant de la TVA : </td><td><input type=\"text\"
value=\"".round($_POST['prixht']*$_POST['tva']/100,2)
."\"/></td></tr>";
echo "<tr><td>Prix TTC : </td><td><input type=\"text\"
value=\"".round($_POST['prixht']*(1+$_POST['tva']/100),2)
."\"/></td></tr>";
}
else
{
echo "<b>Le formulaire est incomplet!</b>";
}
?>
<tr>
<td> </td>
<td><input type="submit" value="ENVOI" /></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
Exercice 7
<?php
if(isset($_FILES['fich']))
{
if($_POST["MAX_FILE_SIZE"] <$_FILES["fich"]["size"])
{
echo "<b>Taille trop grande </b><hr />";
echo "Taille maximale autorisée :",$_POST["MAX_FILE_SIZE"],"
octets<hr / >";
echo "Taille du fichier transféré :",$_FILES["fich"]["size"],"
octets<hr / >";
}
else
{
//Enregistrement et renommage du fichier
$result=move_uploaded_file($_FILES["fich"]["tmp_name"],"monfichier.
zip");
if($result==TRUE)
{
echo "<b>Vous avez bien transféré le fichier</b><hr />";
echo "Le nom du fichier est : ",$_FILES["fich"]["name"],"<hr
/>";
echo "Votre fichier a une taille de
",$_FILES["fich"]["size"],"<hr />";
}
else {echo "<hr /> Erreur de transfert
n°",$_FILES["fich"]["error"];}
}
}
?>
26
Exercice 8
Exercices du chapitre 7
Exercice 1
Créez une fonction PHP qui affiche une boîte d'alerte à partir de la
fonction JavaScript dont la syntaxe est alert("chaine_de
caractères"). Cette fonction peut être appelée avec comme
paramètre le texte du message à afficher. Elle est particulièrement
utile pour afficher des messages d’erreur de manière élégante,
sans que ces derniers restent écrits dans la page.
Exercice 2
28
Écrivez une fonction de lecture de tableaux multidimensionnels en
vous inspirant de l’exemple 7.3. L'affichage se fait sous forme de
tableau HTML dont les titres sont les clés des tableaux.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<title>Fonction de lecture de tableaux multidimensionnels</title>
</head>
<body>
<?php
//Définition de la fonction
function tabmulti($tab,$bord)
{
Exercice 3
Exercice 4
30
}
//Utilisation
$tabch= array("AzertToTO","Sous peAu","sARtHES jp");
print_r(initmaj($tabch));
?>
Exercice 5
Résultats affichés :
0.5
0.866025403784
1
Exercice 6
Exercice 7
32
Incorporez ces fonctions dans un script, et utilisez-les pour créer
un formulaire contenant un nombre quelconque de champ de
saisie de texte et de cases d’option.
Exercices du chapitre 8
Exercice 1
Exercice 2
34
$datenaiss= mktime(9,15,45,1,21,1962);
$aujourdhui=time();
$age=$aujourdhui - $datenaiss;
echo "Mon age est de $age secondes";
?>
Exercice 3
Exercice 4
Exercice 5
Exercice 6
36
</p>
</body>
</html>
Exercice 7
Exercices du chapitre 9
Exercice 1
Écrivez une classe représentant une ville. Elle doit avoir les
propriétés nom et département et une méthode affichant « la
ville X est dans le département Y ». Créez des objets ville,
affectez leurs propriétés, et utilisez la méthode d’affichage.
<?php
class ville
{
public $nom;
public $depart;
public function getinfo()
{
Exercice 2
38
deuxième possibilité consiste à isoler le code de création de la
classe ville de l’exercice 2 dans un fichier séparé, de l’inclure
dans le code de l’exercice 3 et d’étendre la classe ville à l’aide du
mot-clé extends puis de lui ajouter le constructeur.
Exercice 3
Créez une classe représentant une personne. Elle doit avoir les
propriétés nom, prénom et adresse, ainsi qu’un constructeur et
un destructeur. Une méthode getpersonne() doit retourner les
coordonnées complètes de la personne. Une méthode
setadresse() doit permettre de modifier l’adresse de la
personne. Créez des objets personne, et utilisez l’ensemble des
méthodes.
<?php
class personne
{
private $nom;
private $prénom;
private $adresse;
//Constructeur
public function __construct($nom,$prénom,$adresse)
{
$this->nom=$nom;
$this->prénom=$prénom;
$this->adresse=$adresse;
}
//Destructeur
public function __destruct()
{
echo "<script type=\"text/javascript\">alert('La personne nommée
$this->prénom $this->nom \\nest supprimée de vos
contacts')</script>";
}
//
public function getpersonne()
{
$texte=" $this->prénom $this->nom <br /> $this->adresse <br />";
return $texte;
}
//
public function setadresse($adresse)
{
$this->adresse=$adresse;
}
}
//Création d'objets
$client = new personne("Geelsen","Jan"," 145 Rue du Maine Nantes");
echo $client->getpersonne();
//Modification de l'adresse
$client->setadresse("23 Avenue Foch Lyon");
//Suppression explicite du client, donc appel du destructeur
unset($client);
Exercice 4
40
$this->code.=$this->codeinit;
$this->code.=$this->codetext;
$this->code.=$this->codesubmit;
$this->code.="</fieldset></form>";
echo $this->code;
}
}
?>
Exercice 5
Exercice 6
42
Créez un objet à partir de la classe form2 de l’exercice 5, puis
créez-en un clone. Modifiez certaines caractéristiques de cet objet,
et affichez les deux formulaires obtenus.
<?php
include('ch9exo4.php');
class form2 extends form
{
protected $coderadio;
protected $codecase;
public function __construct($action,$titre,$methode="post")
{
parent::__construct($action,$titre,$methode="post");
}
//********************************************
public function setradio($name,$libelle,$value)
{
$this->coderadio.="<b>$libelle</b><input type=\"radio\"
name=\"$name\" value=\"$value\"/><br />";
}
//************************************************
public function setcase($name,$libelle,$value)
{
$this->codecase.="<b>$libelle</b><input type=\"checkbox\"
name=\"$name\" value=\"$value\" /><br />";
}
//**************************
public function getform()
{
$this->code="";
$this->code.=$this->codeinit;
$this->code.=$this->codetext;
$this->code.=$this->coderadio;
$this->code.=$this->codecase;
$this->code.=$this->codesubmit;
$this->code.="</fieldset></form>";
echo $this->code;
}
}
//***************************
$myform = new form2("traitementb.php","Donnez vos
informations","post");
$myform->settext("nom","Votre nom : ");
$myform->settext("code","Votre code : ");
$myform->setsubmit();
$myform->getform();
$myclone = clone $myform;
$myclone->settext("truc","Votre truc : ");
$myclone->getform();
?>
44
}
public function getcoord()
{
$info="Le client $this->prenom $this->nom habite $this-
>adresse <br />";
return $info;
}
}
//Classe electeur
class electeur extends personne //
{
public $nom;Íp
public $prenom;Íq
public $bureau_de_vote;
public $vote;
function __construct($nom,$prenom,$bureau_de_vote)
{
$this->nom=$nom;
$this->prenom=$prenom;
$this->bureau_de_vote=$bureau_de_vote;
}
public function avoter()
{
$this->vote=TRUE;
}
}
//Création d'objets
$client1 = new client("Delmas","Jacquou","Bordeaux");
echo "<h4>", $client1->getcoord()," </h4>";
$electeur1 = new electeur("Tinitin","Milan","Brussel 5");
//L'électeur vote
$electeur1->avoter();
//Controle du vote
if($electeur1->vote)
{echo "L'électeur $electeur1->prenom $electeur1->nom inscrit au
bureau $electeur1->bureau_de_vote a voté <br />";}Ír
else
{echo "L'électeur $electeur1->prenom $electeur1->nom inscrit au
bureau $electeur1->bureau_de_vote peut encore voter <br />";}Ís
?>
Exercices du chapitre 10
Exercice 1
Créez une image de 500 × 300 pixels avec une couleur de fond
rouge. Écrivez un texte de bienvenue en blanc avec une police
PHP.
<?php
header ("Content-type: image/png");
$idimg=imagecreate(500,300);
Exercice 2
Exercice 3
Créez une image de 800 × 600 pixels avec une couleur de fond
verte. Tracez un trapèze isocèle rempli de jaune, et écrivez le mot
« trapèze » au centre.
<?php
header ("Content-type: image/gif");
$idimg=imagecreate(800,600);
$vert=imagecolorallocate($idimg,0,255,0);
$jaune=imagecolorallocate($idimg,255,255,0);
//Dessin des rectangles
//Coordonnées du quadrilatère
$tab=array (200,150,600,150,700,450,100,450);
//Tracé du quadrilatère
imagefilledpolygon($idimg,$tab,4,$jaune);
$texte="TRAPEZE";
imagestring($idimg,5,360,296,$texte,$vert);
46
imagegif($idimg,"trapeze.gif");
imagegif($idimg);
imagedestroy($idimg);
?>
Exercice 4
Créez une image à partir d’un fichier JPEG existant sur votre
poste. Écrivez une légende de votre choix, d’abord en noir puis
dans une autre couleur, en la décalant de 1 pixel en X et en Y afin
de créer un effet d’ombre.
<?php
header ("Content-type: image/jpeg");
$idimg=imagecreatefromjpeg("romy.jpg");
$fond=imagecolorallocate($idimg,225,5,5);
$blanc=imagecolorallocate($idimg,255,255,255);
$noir=imagecolorallocate($idimg,0,0,0);
$titre="Romy the star";
imagettftext($idimg,40,0,249,399,$noir,"Elephnt.ttf",$titre);
imagettftext($idimg,40,0,250,400,$blanc,"Elephnt.ttf",$titre);
imagejpeg($idimg,"romy2.jpg");
imagejpeg($idimg);
imagedestroy($idimg);
?>
48
Exercice 6
Exercices du chapitre 11
Exercice 1
50
while($date=fgets($idfile,11))
{
$tab[]=$date;
}
//Elimination des doublons
$tabstat=array_values(array_unique($tab));
//Affiche les dates et les heures des connexions
foreach($tabstat as $valeur)
{
echo date("d/M H:m:s",$valeur),"<br />";
}
flock($idfile,3);
fclose($idfile);
?>
Exercice 2
<?php
$nav = $_SERVER['HTTP_USER_AGENT'];
$explorer = 'MSIE';
$pos = strpos($nav, $explorer);
// Notez l'utilisation de ===. Un simple == ne donnerait pas le
résultat escompté
// car la lettre 'a' est à la position 0 (la première).
if ($pos !== false)
{
echo "Navigateur Internet Explorer";
}
else
{
echo "Navigateur Mozilla ou Netscape";
}
?>
Exercice 3
fwrite($id_file,$_POST['nom'].":".$_POST['mail'].":".$date.":".$_PO
ST['comment']."\n");
flock($id_file,3);
fclose($id_file);
}
else
{ echo "fichier inaccessible";
}
}
else
{
$id_file=fopen("livre2.txt","w");
fwrite($id_file,$$_POST['nom'].":".$$_POST['mail'].":".$date.":".$$
_POST['comment']."\n");
fclose($id_file);
}
}
}
//LECTURE DES DONNES
if(isset($_POST['affiche']))
{
if($id_file=fopen("livre2.txt","r"))
{
echo "<table border=\"2\"> <tbody>";
$i=0;
while($tab=fgetcsv($id_file,200,":") )
{
$tab5[$i]=$tab;
$i++;
}
$tab5=array_reverse($tab5);
echo "<hr />";
for($i=0;$i<5;$i++)
{
echo "<tr> <td>",$i+1 ,": de: ".$tab5[$i][0]." </td> <td> <a
href=\"mailto:".$tab5[$i][1]." \" > ".$tab5[$i][1]."</a></td>
<td>le: ",date("d/m/y H:i:s", $tab5[$i][2])," </td></tr>";
52
echo "<tr > <td colspan=\" 3 \">", stripslashes($tab5[$i][3])
,"</td> </tr> ";
}
fclose($id_file);
}
echo "</tbody></table> ";
}
else{ echo "<h2>Donnez votre avis puis cliquez sur 'envoyer' !
</h2> ";}
?>
</body>
</html>
Exercices du chapitre 12
Exercice 1
Exercice 2
54
legend{font-weight:bold;font-family:cursive;}
label{font-weight:bold;font-style:italic;}
-->
</style>
</head>
<body>
<form method="post" action="ch12exo2.php">
<fieldset>
<legend>Choisissez vos couleurs</legend>
<label>Couleur de fond
<input type="text" name="fond" />
</label><br /><br />
<label>Couleur de texte
<input type="text" name="texte" />
</label><br />
<input type="submit" value="Envoyer" />
<input type="reset" value="Effacer" />
</fieldset>
</form>
</body>
</html>
Exercice 3
56
//En pratique ils proviennent d'une base de données
$login="machin";
$motpass="123456";
//Récupération des valeurs saisies
$nom=$_POST['nom'];
$pass=$_POST['pass'];
//Vérification
if($nom==$login AND $pass=$motpass)
{
$expir=time() + 20;
//Ecriture des cookies
setcookie("nom",$nom,$expir);
setcookie("pass",$pass,$expir);
//Redirection vers la page à accès réservé
echo "<script type=\"text/javascript\">
window.location='ch12exo3b.php' </script>";
}
else
{
//Redirection vers la page de saisie du code
echo "<script type=\"text/javascript\">
window.location='ch12exo3a.php' </script>";
}
?>
Exercice 4
Exercice 5
if(mail($dest,$objet,$message))
{
echo "Mail envoyé à $dest";
}
}
?>
Exercice 6
58
}
}
?>
Exercice 7
Exercice 8
60
echo "<tr><th> code </th><th> article </
th><th> prix </th>";
for($i=0;$i<count($_SESSION["code"]);$i++)
{
echo "<tr> <td>{$_SESSION['code'][$i]}</td>
<td>{$_SESSION['article'][$i]}
</td><td>{$_SESSION['prix'][$i]}</td>";
$prixtotal+=$_SESSION['prix'][$i];
}
echo "<tr> <td colspan=2> PRIX TOTAL </td> <td>".
sprintf("%01.2f", $prixtotal)."</td>";
echo "</table>";
}
//ENREGISTRER
if($_POST["envoi"]=="ENREGISTRER")
{
$idfile=fopen("commande.txt",w);
echo SID, $PHPSESSID;
for($i=0;$i<count($_SESSION["code"]);$i++)
{
fwrite($idfile, $_SESSION["code"][$i]." ;
".$_SESSION["article"][$i]." ; ".$_SESSION["prix"][$i]."; \n");
}
fclose($idfile);
}
//LOGOUT
if($_POST["envoi"]=="LOGOUT")
{
session_unset();
session_destroy();
echo "<h3>La session est terminée</h3>";
}
$_POST["envoi"]="";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<title>Gestion de panier</title>
</head>
<body>
<div>
<a href="ch12exo8b.php"><big>Page des disques</big></a><br />Ín
</div>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Commande de livres</b></legend>
<table>
<tbody>
<tr>
<th>code : </th>
<td> <input type="text" name="code" /></td>
</tr>
62
echo "<tr> <td>{$_SESSION['code'][$i]}</td>
<td>{$_SESSION['article'][$i]}
</td><td>{$_SESSION['prix'][$i]}</td>";
$prixtotal+=$_SESSION['prix'][$i];
}
echo "<tr> <td colspan=2> PRIX TOTAL </td> <td>".
sprintf("%01.2f", $prixtotal)."</td>";
echo "</table>";
}
//ENREGISTRER
if($_POST["envoi"]=="ENREGISTRER")
{
$idfile=fopen("commande.txt",w);
for($i=0;$i<count($_SESSION["code"]);$i++)
{
fwrite($idfile, $_SESSION["code"][$i]." ;
".$_SESSION["article"][$i]." ; ".$_SESSION["prix"][$i]."; \n");
}
fclose($idfile);
}
//LOGOUT
if($_POST["envoi"]=="LOGOUT")
{
session_unset();
session_destroy();
echo "<h3>La session est terminée</h3>";
}
$_POST["envoi"]="";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<title>Gestion de panier</title>
</head>
<body>
<div>
<a href="ch12exo8.php"><big>Page des livres</big></a><br />Ín
</div>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Commande de disques</b></legend>
<table>
<tbody>
<tr>
<th>code : </th>
<td> <input type="text" name="code" /></td>
</tr>
<tr>
<th>article : </th>
<td><input type="text" name="article" /></td>
</tr>
Exercices du chapitre 13
Exercice 1
Cardinalités :
64
• Une voiture est d’un seul modèle : pour l’association est du
modèle la cardinalité du coté de l’entité voiture est donc
1.1.
Exercice 2
Exercice 3
Exercice 4
Exercice 5
66
Exercice 6
Exercices du chapitre 14
Sauf indication contraire, toutes les opérations de sélection des
exercices sont à réaliser sur la base magasin.
Exercice 1
Exercice 2
• Le fichier proprietaire.sql :
-- phpMyAdmin SQL Dump
68
-- version 2.6.0-rc3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mercredi 15 Décembre 2004 à 18:21
-- Version du serveur: 4.0.21
-- Version de PHP: 5.0.2
--
-- Base de données: `voitures`
--
-- --------------------------------------------------------
--
-- Structure de la table `proprietaire`
--
CREATE TABLE `proprietaire` (
`id_pers` mediumint(8) unsigned NOT NULL auto_increment,
`nom` varchar(30) NOT NULL default '',
`prenom` varchar(30) NOT NULL default '',
`adresse` varchar(50) NOT NULL default '',
`ville` varchar(40) NOT NULL default '',
`codepostal` mediumint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`id_pers`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
• Le fichier cartegrise.sql :
-- phpMyAdmin SQL Dump
-- version 2.6.0-rc3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mercredi 15 Décembre 2004 à 18:26
-- Version du serveur: 4.0.21
-- Version de PHP: 5.0.2
--
-- Base de données: `voitures`
--
-- --------------------------------------------------------
--
-- Structure de la table `cartegrise`
--
CREATE TABLE `cartegrise` (
`id_pers` mediumint(8) unsigned NOT NULL default '0',
`immat` varchar(6) NOT NULL default '',
`datecarte` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id_pers`,`immat`)
) TYPE=MyISAM;
• Le fichier voiture.sql
-- phpMyAdmin SQL Dump
-- version 2.6.0-rc3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mercredi 15 Décembre 2004 à 18:27
• Le fichier modele.sql
-- phpMyAdmin SQL Dump
-- version 2.6.0-rc3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mercredi 15 Décembre 2004 à 18:29
-- Version du serveur: 4.0.21
-- Version de PHP: 5.0.2
--
-- Base de données: `voitures`
--
-- --------------------------------------------------------
--
-- Structure de la table `modele`
--
Exercice 3
70
Exercice 4
-- --------------------------------------------------------
--
-- Structure de la table `modele`
--
CREATE TABLE `modele` (
`id_modele` varchar(10) NOT NULL default '',
`modele` varchar(30) NOT NULL default '',
`carburant` enum('essence','diesel','gpl','électrique') NOT NULL
default 'essence',
PRIMARY KEY (`id_modele`)
) TYPE=MyISAM;
-- --------------------------------------------------------
--
-- Structure de la table `proprietaire`
--
CREATE TABLE `proprietaire` (
Exercice 5
Exercice 6
Exercice 7
72
Créer un fichier Excel ou OpenOffice contenant une liste de
modèles de voitures avec autant de données par ligne que de
colonnes dans la table modele. L’enregistrer au format CSV et
insérer les données dans la base.
Exercice 8
Exercice 9
Requête SQL :
SELECT id_article, designation, prix
FROM article
WHERE prix <1500
Requête SQL :
SELECT id_article, designation, prix
FROM article
WHERE prix
BETWEEN 100
AND 500
Exercice 11
Requête SQL :
SELECT id_article, designation, prix
FROM article
WHERE designation LIKE '%Nikon%'
Exercice 12
Requête SQL :
SELECT id_article, designation, prix
FROM article
WHERE designation LIKE '%caméscope%'
Exercice 13
Requête SQL :
SELECT id_article, designation, prix
FROM article
WHERE categorie = 'informatique '
ORDER BY prix DESC
Exercice 14
74
Requête SQL :
SELECT nom, prenom, age, ville
FROM CLIENT WHERE age <40
ORDER BY ville ASC
Exercice 15
Requête SQL :
SELECT avg( prix )
FROM article
Exercice 16
Requête SQL :
SELECT count( DISTINCT mail) FROM client
Exercice 17
Requête SQL :
SELECT nom,prenom,adresse,ville,mail FROM client WHERE adresse='75
Bd Hochimin' AND ville='Lille'
Exercice 18
Requête SQL :
SELECT nom,prenom,article.id_article,designation
FROM `client` ,commande,article,ligne
WHERE client.id_client=commande.id_client
AND ligne.id_comm=commande.id_comm
AND ligne.id_article=article.id_article
ORDER BY nom
Requête SQL :
SELECT nom,prenom, ligne.id_comm, sum(prixunit*quantite) AS 'total'
FROM client,ligne,commande
WHERE ligne.id_comm=commande.id_comm
AND commande.id_client=client.id_client
GROUP BY ligne.id_comm
HAVING sum(prixunit*quantite)>1500
Exercice 20
Requête SQL :
SELECT client.id_client, ligne.id_comm, sum(prixunit*quantite)
FROM client,ligne,commande
WHERE ligne.id_comm=commande.id_comm
AND commande.id_client=client.id_client
GROUP BY client.id_client
HAVING sum(prixunit*quantite)>5000
Exercice 21
Exercice 22
76
AND voiture.id_modele=modele.id_modele
AND cartegrise.immat=voiture.immat
AND proprietaire.id_pers=cartegrise.id_pers
Exercice 23
Requête SQL :
SELECT cartegrise.immat FROM cartegrise
GROUP BY immat
HAVING count(*) >1
Exercices du chapitre 15
Tous les exercices ci-dessous portent sur la base de données
voitures créée aux chapitres 13 et 14.
Exercice 1
Exercice 2
<tr>
<td><input type="reset" value=" Effacer "></td>
<td><input type="submit" value=" Envoyer "></td>
</tr>
</table>
</fieldset>
78
</form>
<?php
include('connex.inc.php');
if(!empty($_POST['id_modele'])&& !empty($_POST['modele'])&&
!empty($_POST['carburant']))
{
$id_modele=mysql_escape_string($_POST['id_modele']);
$modele=mysql_escape_string($_POST['modele']);
$carburant=mysql_escape_string($_POST['carburant']);
//Requète SQL
$requete="INSERT INTO modele
VALUES('$id_modele','$modele','$carburant')";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
if(!$result)
{
echo mysql_errno();
echo mysql_error();
echo "<script type=\"text/javascript\">
alert('Erreur : ".mysql_error()."')</script>";
}
else
{
echo "<script type=\"text/javascript\">";
echo "alert('Le modèle est enregistré ')</script>";
}
}
else {echo "<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercice 3
80
<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('connex.inc.php');
if(isset($_POST['enreg']))
{
//Récupération des valeurs du formulaire
$id_modele=mysql_escape_string($_POST['id_modele']);
$carburant=mysql_escape_string($_POST['carburant']);
$immat=mysql_escape_string($_POST['immat']);
$couleur=mysql_escape_string($_POST['couleur']);
$datevoiture=mysql_escape_string($_POST['datevoiture']);
$datecarte=mysql_escape_string($_POST['datecarte']);
$nom=mysql_escape_string($_POST['nom']);
$prenom=mysql_escape_string($_POST['prenom']);
$adresse=mysql_escape_string($_POST['adresse']);
$ville=mysql_escape_string($_POST['ville']);
$codepostal=mysql_escape_string($_POST['codepostal']);
//Connexion
$idcom=connex('voitures','myparam');
//Requète SQL: insertions dans la table voiture
$requete="INSERT INTO voiture
VALUES('$immat','$id_modele','$couleur','$datevoiture')";
$result1=mysql_query($requete,$idcom);
//Requète SQL: insertions dans la table proprietaire
$requete="INSERT INTO proprietaire
VALUES('','$nom','$prenom','$adresse','$ville','$codepostal')";
$result2=mysql_query($requete,$idcom);
$id_pers=mysql_insert_id($idcom);
//Requète SQL: insertions dans la table cartegrise
$requete="INSERT INTO cartegrise
VALUES('$id_pers','$immat','$datecarte')";
$result3=mysql_query($requete,$idcom);
Exercice 4
82
cartegrise.immat=voiture.immat AND
proprietaire.id_pers=cartegrise.id_pers";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo "<table border=\"1\" >";
while($ligne=mysql_fetch_array($result,MYSQL_NUM))
{
echo " <tr><td>$ligne[0]</td><td> $ligne[1]</td>";
}
echo "</table>";
}
else {"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercice 5
Exercice 6
84
<fieldset>
<legend><b>Coordonnées de la personne</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('connex.inc.php');
$nom=mysql_escape_string($_POST['nom']);
$prenom=mysql_escape_string($_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";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo "<h3>Liste des véhicules de $prenom $nom </h3>";
echo "<table border=\"1\" >";
while($ligne=mysql_fetch_object($result))Ín
{
echo " <tr><td> ",$ligne->immat," 75 </td><td> ",
$ligne->modele," </td>";Ío
}
echo "</table>";
}
else {"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercices du chapitre 16
Le but de ces exercices est de réaliser avec SQLite la même
application que celle réalisée avec MySQL au cours des exercices
du chapitre 14.
Exercice 1
86
Le code SQL de création de la table :
CREATE TABLE voiture (
immat VARCHAR(6) NOT NULL PRIMARY KEY,
id_modele VARCHAR(10) NOT NULL,
couleur VARCHAR(10) NOT NULL,
datevoiture DATE NOT NULL
);
Exercice 2
Exercice 3
88
echo "</table>";
}
?>
</body>
</html>
Exercice 4
Exercice 5
90
<h2>METHODE OBJET</h2>
<form method="post" action="ch16exo5.php">
<fieldset>
<legend>Liste des modèles</legend>
<select name=\"modeles\">
<?php
if($db=new
SQLiteDatabase("C:/wamp/www/sqlitemanager/voitures",0666,$erreur))
{
//Requète SQL
$requete="SELECT id_modele,modele FROM modele ORDER BY modele
ASC";
$result=$db->query($requete);
while($ligne=$result->fetchObject())
{
echo "<option value=\"$ligne->id_modele\">$ligne-
>modele</option>";
}
}
?>
</select>
<input type="submit" value="Choisir" />
</fieldset>
</form>
</body>
</html>
92
<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</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
if(isset($_POST['enreg']))
{
//Récupération des valeurs du formulaire
$id_modele=$_POST['modele'];
$carburant=sqlite_escape_string($_POST['carburant']);
$immat=sqlite_escape_string($_POST['immat']);
$couleur=sqlite_escape_string($_POST['couleur']);
$datevoiture=sqlite_escape_string($_POST['datevoiture']);
$datecarte=sqlite_escape_string($_POST['datecarte']);
$nom=sqlite_escape_string($_POST['nom']);
$prenom=sqlite_escape_string($_POST['prenom']);
$adresse=sqlite_escape_string($_POST['adresse']);
$ville=sqlite_escape_string($_POST['ville']);
$codepostal=(integer) $_POST['codepostal'];
$id_base=
sqlite_open("C:/wamp/www/sqlitemanager/voitures",0666,$erreur);
//Requète SQL
$requete="BEGIN;";
//Requète SQL: insertions dans la table proprietaire
$requete.="INSERT INTO proprietaire
VALUES(NULL,'$nom','$prenom','$adresse','$ville','$codepostal');";
94
while($ligne=$result->fetchObject())//Íp
{
echo "<option value=\"$ligne->id_modele\">$ligne-
>modele</option>";
}
}
?>
</select></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</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
if(isset($_POST['enreg']))
{
//Récupération des valeurs du formulaire
$id_modele=$_POST['modele'];
$carburant=sqlite_escape_string($_POST['carburant']);
$immat=sqlite_escape_string($_POST['immat']);
$couleur=sqlite_escape_string($_POST['couleur']);
$datevoiture=sqlite_escape_string($_POST['datevoiture']);
$datecarte=sqlite_escape_string($_POST['datecarte']);
$nom=sqlite_escape_string($_POST['nom']);
$prenom=sqlite_escape_string($_POST['prenom']);
$adresse=sqlite_escape_string($_POST['adresse']);
Exercice 7
96
$result=sqlite_query($id_base,$requete);
while($ligne=sqlite_fetch_object($result))
{
echo "<option value=\"$ligne->id_modele\">$ligne->modele</option>";
}
sqlite_close($idbase);
}
?>
</select>
</tr>
<tr>
<td><input type="reset" value=" Effacer " /></td>
<td><input type="submit" value="CHERCHER" name="cherche" /></td>
</tr>
</table>
</fieldset>
</form>
<?php
if(isset($_POST['idmodele']))
{
//Récupération des valeurs du formulaire
$idmodele=$_POST['idmodele'];
//Requète SQL
$requete="SELECT proprietaire.nom, proprietaire.prenom,
voiture.immat, modele.modele
FROM voiture, modele, proprietaire, cartegrise
WHERE voiture.id_modele= '$idmodele'
AND voiture.id_modele=modele.id_modele
AND cartegrise.immat=voiture.immat
AND proprietaire.id_pers=cartegrise.id_pers";
$id_base=sqlite_open("C:/wamp/www/sqlitemanager/voitures",0666,$err
eur);
$result=sqlite_query($id_base,$requete);
echo "<table border=\"1\">";
while($ligne=sqlite_fetch_array($result))
{
echo "<tr><td>$ligne[0] </td><td>$ligne[1] </td><td>$ligne[2]
</td>";
}
echo "</table>";
sqlite_close($id_base);
}
else echo "PROBLEME !!";
?>
</body>
</html>
98
</uv>
</etudiant>
<etudiant id="567" nom="Lebeau">
<uv>
<nom>Programmation PHP 5</nom>
<durée>5 semaines</durée>
<note>17</note>
</uv>
<uv>
<nom>MySQL</nom>
<durée>6 semaines</durée>
<note>13</note>
</uv>
</etudiant>
</iut>
Exercice 2
Exercice 3
100
<tr colspan=2><th>UV 1</th></tr>
<tr>
<td>Nom de l'UV 1 : </td>
<td><input type="text" name="nomuv1" /></td>
</tr>
<tr>
<td>Durée de l'UV 1 : </td>
<td><input type="text" name="duree1" /></td>
</tr>
<tr>
<td> Note de l'UV 1</td>
<td><input type="text" name="note1" /></td>
</tr>
<tr colspan=2><th>UV 2</th></tr>
<tr>
<td>Nom de l'UV 2 : </td>
<td><input type="text" name="nomuv2" /></td>
</tr>
<tr>
<td>Durée de l'UV 2 : </td>
<td><input type="text" name="duree2" /></td>
</tr>
<tr>
<td> Note de l'UV 2</td>
<td><input type="text" name="note2" /></td>
</tr>
<tr>
<td>
<input type="submit" name="envoi" value="Enregistrer"/>
<a href="ch17exo2.php"><button type="button"> VOIR </button></a>
</td>
</tr>
</tbody></table>
</fieldset>
</form>
</body>
</html>
<?php
//Enregistrement d'un étudiant
if(isset($_POST['envoi'])&& !empty($_POST['id'])&&
!empty($_POST['nomet']))
{
$id= htmlspecialchars($_POST['id']);
$nomet= htmlspecialchars($_POST['nomet']);
$xml=simplexml_load_file("iut.xml");
$chxml = $xml->asxml();
$chxml = str_replace("</iut>", "", $chxml);
$chxml.= "<etudiant id=\"$id\" nom=\"$nomet\">\n";
//Enregistrement de l'UV 1
if(!empty($_POST['nomuv1'])&& !empty($_POST['duree1']) &&
!empty($_POST['note1']))
{
$nomuv1= htmlspecialchars($_POST['nomuv1']);
$duree1= htmlspecialchars($_POST['duree1']);
Exercice 4
102
<?php
if(isset($_POST['envoi']))
{
$choix= $_POST['choix'];
$xml=simplexml_load_file("iut.xml");
$result= $xml->xpath($choix);
//Eliminer les doublons
$result=array_unique($result);
echo "<h3>Résultats de la recherche</h3>";
//Affichage sous forme de liste
echo "<ol>";
foreach($result as $valeur)
{
echo "<li> $valeur </li>";
}
echo "</ol>";
}
?>
Exercice 5
<!--
- Base de données: `voitures`
-->
<voitures>
<!-- Table cartegrise -->
<cartegrise>
<id_pers>1</id_pers>
<immat>178ZRX</immat>
<datecarte>2004-05-15</datecarte>
</cartegrise>
<cartegrise>
<id_pers>2</id_pers>
104
<immat>187ZRX</immat>
<datecarte>2004-05-25</datecarte>
</cartegrise>
<cartegrise>
<id_pers>9</id_pers>
<immat>200XJR</immat>
<datecarte>2004-11-23</datecarte>
</cartegrise>
<!-- Table modele -->
<modele>
<id_modele>17C92853AZ</id_modele>
<modele>Citroën C5</modele>
<carburant>diesel</carburant>
</modele>
<modele>
<id_modele>178524ER45</id_modele>
<modele>Citroën Picasso</modele>
<carburant>essence</carburant>
</modele>
<modele>
<id_modele>7499RF5679</id_modele>
<modele>Renault Mégane Scénic</modele>
<carburant>diesel</carburant>
</modele>
<modele>
<id_modele>33356677PO</id_modele>
<modele>Peugeot 206</modele>
<carburant>électrique</carburant>
</modele>
<modele>
<id_modele>563339GH56</id_modele>
<modele>Citroën C3</modele>
<carburant>essence</carburant>
</modele>
<modele>
<id_modele>83321TY455</id_modele>
<modele>Renault Espace</modele>
<carburant>diesel</carburant>
</modele>
<modele>
<id_modele>AZER67455T</id_modele>
<modele>Peugeot 307</modele>
<carburant>essence</carburant>
</modele>
<modele>
<id_modele>FHT55432GH</id_modele>
<modele>Renault Twingo</modele>
<carburant>essence</carburant>
</modele>
<modele>
<id_modele>DSQS455674</id_modele>
<modele>Renault Adventime</modele>
<carburant>diesel</carburant>
</modele>
106
</proprietaire>
<proprietaire>
<id_pers>6</id_pers>
<nom>Duval</nom>
<prenom>Emilie</prenom>
<adresse>543 avenue Foché</adresse>
<ville>Paris</ville>
<codepostal>75016</codepostal>
</proprietaire>
<proprietaire>
<id_pers>7</id_pers>
<nom>Zouk</nom>
<prenom>Julia</prenom>
<adresse>56 Boulevard Nez</adresse>
<ville>Paris</ville>
<codepostal>75011</codepostal>
</proprietaire>
<proprietaire>
<id_pers>8</id_pers>
<nom>Val</nom>
<prenom>Phil</prenom>
<adresse>34 rue des Champs</adresse>
<ville>Paris</ville>
<codepostal>75017</codepostal>
</proprietaire>
<proprietaire>
<id_pers>9</id_pers>
<nom>Zébulon</nom>
<prenom>Alfred</prenom>
<adresse>Place de la Concorde</adresse>
<ville>Paris</ville>
<codepostal>75008</codepostal>
</proprietaire>
<!-- Table voiture -->
<voiture>
<immat>200XJR</immat>
<id_modele>17C92853AZ</id_modele>
<couleur>foncée</couleur>
<datevoiture>2003-03-19</datevoiture>
</voiture>
<voiture>
<immat>178ZRX</immat>
<id_modele>17C92853AZ</id_modele>
<couleur>claire</couleur>
<datevoiture>2002-09-15</datevoiture>
</voiture>
<voiture>
<immat>179ZRX</immat>
<id_modele>178524ER45</id_modele>
<couleur>foncée</couleur>
<datevoiture>2004-05-17</datevoiture>
</voiture>
<voiture>
<immat>188ZRX</immat>
108
<couleur>claire</couleur>
<datevoiture>2004-05-28</datevoiture>
</voiture>
</voitures>
$chxml.= "</proprietaire>\n";
}
//Table cartegrise
$result2=mysql_query($requete,$idcom);
while($ligne=mysql_fetch_array($result2,MYSQL_ASSOC))
{
$chxml.="<cartegrise id_pers=\"{$ligne['id_pers']}\"
immat=\"{$ligne['immat']}\">\n";
$chxml.=" <datecarte>{$ligne['datecarte']} </datecarte>\n";
$chxml.= "</cartegrise>\n";
}
//Table voiture
$result3=mysql_query($requete,$idcom);
while($ligne=mysql_fetch_array($result3,MYSQL_ASSOC))
{
$chxml.="<voiture immat=\"{$ligne['immat']}\">\n
id_modele=\"{$ligne['id_modele']}\" ";
$chxml.=" <couleur>{$ligne['datecarte']} </couleur>\n";
$chxml.=" <datevoiture>{$ligne['datecarte']} </datevoiture>\n";
$chxml.= "</voiture>\n";
}
Exercice 6
Note :
Si nous voulmions respecter les régles énoncées au chapitre 13, il serait
grandement préférable de définir un MCD comprenant une entité
« etudiant », une entité « uv » et une association « passe » reliant
ces entités. Le MLD correspondant aménerait à la création de trois tables.
110
$duree1=$xml->etudiant[$i]->uv[0]->duree;
$note1=$xml->etudiant[$i]->uv[0]->note;
$uv2=$xml->etudiant[$i]->uv[1]->nom;
$duree2=$xml->etudiant[$i]->uv[1]->duree;
$note2=$xml->etudiant[$i]->uv[1]->note;
Exercices du chapitre 18
TP n° 1. Un site de rencontres
Ce premier thème, déjà ébauché au chapitre 16, est le plus simple.
L’interface
L’interface comprend trois pages, la page d’accueil, la page
d’inscription et la page de recherche, chacune dotée de
fonctionnalités spécifiques.
La page d’accueil
Nommée index.php, la page d’accueil contient les éléments
suivants :
• En-tête commun.
112
if(isset($_COOKIE['nom']))
{
$nom=$_COOKIE['nom'];
$prenom=$_COOKIE['prenom'];
$message= "<h3>Bonjour $prenom $nom </h3>";
$lien1="<a href=\"recherche.php\" title=\"Recherche\"><button
type=\"button\">Rechercher des partenaires </button></a>";
$lien2="<a href=\"ajout.php\" title=\"S'inscrire\"><button
type=\"button\">S'inscrire pour un sport </button></a>";
}
if(isset($_POST['mail']))
{
//Récupération du mail
$mail=strtolower($_POST['mail']);
//Ouverture de la base
$id_base=sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur);
$requete="SELECT id_personne,nom,prenom FROM personne WHERE
mail='$mail'";
$result=sqlite_query($id_base,$requete);
$ligne=sqlite_fetch_array($result,SQLITE_NUM);
if(!empty($ligne))
{
$message= "<h3>Bonjour $ligne[2] $ligne[1] </h3>";
$lien1="<a href=\"recherche.php\" title=\"Recherche\"><button
type=\"button\">Rechercher des partenaires </button></a>";
$lien2="<a href=\"ajout.php\" title=\"S'inscrire\"><button
type=\"button\">S'inscrire pour un sport </button></a>";
//Création des cookies
setcookie('nom',$ligne[1],time()+30*24*3600);
setcookie('prenom',$ligne[2],time()+30*24*3600);
}
sqlite_close($id_base);
}
include_once('entete.htm');
$id_base=sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur);
//Lecture de la table sport
$tabresult = sqlite_array_query($id_base,'SELECT design FROM sport
ORDER BY design ASC',SQLITE_NUM);
echo "<div style=\" position:absolute;
left:0px;width:20%;background-color:#CCFF66\">";
echo "<b> Liste des sports existants</b><br /><br />";
sqlite_close($id_base);
foreach ($tabresult as $valeur)
{
echo ucfirst($valeur[0]),"<br />";
}
?>
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<fieldset>
<legend> Identification </legend>
<label>Votre mail :
<input type="text" name="mail" />
</label>
La page d’inscription
Nommée ajout.php, la page d’inscription contient les éléments
suivants :
• En-tête commun.
114
La page d’inscription : le fichier ajout.php.
<?php
include_once('entete.htm');
?>
<form method="post" action="ajout.php" >
<!-- Premier groupe -->
<fieldset>
<legend>Vos coordonnées </legend>
<table>
<tbody>
<tr>
<td>Nom : </td>
<td><input type="text" name="nom" size="30" /> </td>
</tr>
<tr>
<td>Prénom : </td>
<td><input type="text" name="prenom" size="30" /> </td>
</tr>
<tr>
<td>Département : </td>
<td><input type="text" name="depart" size="30" /> </td>
</tr>
<tr>
<td>Mail : </td>
<td><input type="text" name="mail" size="30" /> </td>
</tr>
</tbody>
</table>
</fieldset>
<!-- Deuxième groupe -->
<fieldset>
<legend>Vos pratiques sportives </legend>
<table>
<tbody>
<!-- Sélection des sports -->
<tr>
<td>Sport pratiqué : </td>
<td>
<select name="design">
<option value="NULL">Choisissez!</option> ";
<?php
//Création dynamique de la liste de sélection
// Connexion
$id_base=sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur);
//Lecture de la table sport
$tabresult = sqlite_array_query($id_base,'SELECT id_sport,design
FROM sport ORDER BY design',SQLITE_ASSOC);
foreach ($tabresult as $valeur)
{
echo "<option value=\"",$valeur["id_sport"],"\" >",
$valeur["design"] ,"</option>";
}
//Fermeture
116
//AJOUT DE SPORT
if(isset($_POST["ajout"]) )
{
$req_sport="INSERT INTO sport (id_sport,design) VALUES (NULL,
'".$_POST['nomsport']."')";
if(sqlite_query($id_base,$req_sport))
{
echo "DONNEES INSEREES dans sport";
echo "<script type=\"text/javascript\"> window.location.href=
\"ajout.php\" </script>";
}
}
sqlite_close($id_base);
?>
</body>
</html>
La page de recherche
Nommée recherche.php, la page de recherche contient les
éléments suivants :
• En-tête commun.
<td>
<select name="design">
<option value="NULL">Choisissez!</option> ";
<?php
//Création dynamique de la liste de sélection
// Connexion
$id_base=sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur);
//Lecture de la table sport
$tabresult = sqlite_array_query($id_base,'select id_sport,design
from sport',SQLITE_ASSOC);
foreach ($tabresult as $valeur)
{
echo "<option value=\"",$valeur["id_sport"],"\" >",
$valeur["design"] ,"</option>";
}
//Fermeture
sqlite_close($id_base);
?>
</select>
</td>
</tr>
<!-- Ligne 2 -->
<tr>
<td>Niveau : </td>
<td>
<select name="niveau">
<option value="1">Débutant</option>
<option value="2">Confirmé</option>
<option value="3">Pro</option>
<option value="4">Supporter</option>
</select>
</td>
</tr>
<!-- Ligne 3 -->
<tr>
<td>Département : </td>
<td>
<select name="depart">
<option value="NULL">Choisissez!</option>
<?php
//Création dynamique de la liste de sélection des départements
// Connexion
$id_base=sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur);
118
//Lecture de la table personne
$result=sqlite_query($id_base,'select depart from
personne',SQLITE_NUM);
//Création du tableau des départements existants
for($i=0;$i<sqlite_num_rows($result);$i++)
{
$tabdepart[$i]=sqlite_fetch_single($result);
}
//Elimination des doublons
$tabdepart=array_unique($tabdepart);
//Tri des départements
sort($tabdepart);
//Création de la liste d'options
for($i=0;$i<count($tabdepart);$i++)
{
echo "<option value=\"",$tabdepart[$i],"\" >", $tabdepart[$i]
,"</option>\n";
}
//Fermeture
sqlite_close($id_base);
?>
</select>
</td>
</tr>
<tr>
<td><input type="submit" name="envoi" value=" Recherche "/> </td>
<td><input type="reset" name="efface" value=" Effacer "/> </td>
</tr>
</tbody>
</table>
</fieldset>
</form>
<!-- CODE PHP RECHERCHE-->
<?php
// Connexion
if(isset($_POST["envoi"]))
{
if(!$id_base=@sqlite_open('C:/wamp/www/sqlitemanager/sportifs',
0666,$erreur)) {echo "ERREUR : $erreur <br />";}
else
{
$requete="SELECT nom,prenom,mail,design FROM
personne,pratique,sport WHERE
personne.id_personne=pratique.id_personne AND
sport.id_sport=pratique.id_sport AND pratique.niveau='".
$_POST['niveau']."' AND sport.id_sport='".$_POST['design']."' AND
personne.depart='".$_POST['depart']."'";
$result=sqlite_query($requete,$id_base);
while($ligne=sqlite_fetch_array($result,SQLITE_ASSOC))
{
Figure 18-3
Le modèle conceptuel de données de la base
120
primaire des tables qu’elle associe. Elle a de plus un attribut
niveau.
Figure 18-4
Le modèle logique de données (MLD) de la base
TP n° 2. Dictionnaire de
citations interactif
Ce TP est une première mise en œuvre simple d’une base de
données MySQL. Le projet consiste à créer un dictionnaire de
citations littéraires interactif en ligne. Il ne s’agit pas donc d’une
banque de données statique mise en consultation. Chaque visiteur
peut en enrichir le contenu avec ses citations préférées, qui sont
ensuite rendues accessibles à tous. Le concept du site se rapproche
de celui d’un forum puisque les données ne sont pas figées.
L’interface
Pour créer une unité dans le site, chaque page doit incorporer les
mêmes en-tête et pied de page. L’interface comprend trois pages, la
page d’accueil, la page d’affichage des résultats et la page
d’insertion.
La page d’accueil
Nommée index.php, la page d’accueil comporte, outre les
éléments décoratifs laissés à votre libre choix, les éléments
suivants :
122
echo "<hr />";
?>
<form action="affichecit.php" method="post">
<fieldset>
<legend><b>Rechercher une citation</legend>
<table width="100%" border="1" align="left" bordercolor="#800000"
summary="Recherche">
<tr>
<td colspan="2" align="center"><h2>Recherche de citations</h2></td>
</tr>
<tr>
<td>Mot-clé </td>
<td><input type="text" name="motcle" size="40" maxlength="256">
</td>
</tr>
<tr>
<td>Auteur</td>
<td>
<?php
$idcom=connex("dico","myparam");
$requete = "SELECT nom FROM auteurs ORDER BY nom ASC";
$result = mysql_query($requete,$idcom);
echo "<select name=\"auteur\" size=\"1\" >";
echo "<option value=\"tous\"> Tous</option>";
while($tab = mysql_fetch_assoc($result))
{
echo "<option value=\"".$tab["nom"]."\" >".
$tab["nom"]."</option>";
//echo $tab["nom"],"<br />";
}
echo "</select>";
mysql_close($idcom);
?>
</td>
</tr>
<tr>
<td>Siècle</td>
<td>
<select name="siecle" size="1">
<option value=""> Tous</option>
<option value="16"> 16ème siècle</option>
<option value="17"> 17ème siècle</option>
<option value="18"> 18ème siècle</option>
<option value="19"> 19ème siècle</option>
<option value="20"> 20ème siècle</option>
<option value="21"> 21ème siècle</option>
</select>
</td>
</tr>
<tr>
<td colspan="2">Trier par : auteur <input type="radio" name="tri"
value="nom" checked="checked" />
siècle : <input type="radio" name="tri" value="siecle" /></td>
</tr>
<tr>
124
$query .= " 1 " ; }
//si auteur différent de 'tous'
if($auteur !="tous")
{$query .= "AND nom= '$auteur' ";}
else{ $query .= "";}
//si siecle
if($siecle){$query .= " AND siecle = '$siecle' ";}
$query .= " AND A.idauteur= C.idauteur";
$query.=" ORDER BY $tri ASC";
//***************************
//connexion au serveur MySQL
//***************************
include_once("connex.inc.php");
$idcom=connex("dico","myparam");
//Envoi de la requète
$result = mysql_query($query,$idcom)or die("ERREUR RESULTAT");
//Affiche résultats
if(!$result) echo "<h2> Pas de réponse </h2>";
else
{
echo "<h2> Liste des citations : $motcle</h2> <hr>";
while($tab = mysql_fetch_assoc($result))
{
echo "<h4>",nl2br($tab["texte"]),"<br />";
echo "<cite>",$tab["prenom"]," ", $tab["nom"] ," ( ",
$tab["siecle"],"<sup>ème</sup> siècle) </cite></h4><hr />";
}
}
include_once('pied.htm');
?>
La page d’insertion
Nommée saisiecit.php la page d’insertion comprend les
éléments suivants :
Figure 18-5
Le formulaire d’insertion
126
</select>
</td>
</tr>
<tr>
<td colspan="2"> Ecrivez votre citation ici: <br />
<textarea name="texte" cols="70" rows="7"></textarea> </td>
</tr>
<tr>
<td colspan="2">
<input type="reset" value="Effacer">
<input type="submit" value="Enregistrer">
</td>
</tr>
</tbody>
</table>
</fieldset>
</form>
<?php
if($_POST["nom"])
{
//******************************************
//Récupération des valeurs
//******************************************
$nom= $_POST["nom"];
$prenom= $_POST["prenom"];
$siecle= $_POST["siecle"];
$texte= $_POST["texte"];
//***************************
//connexion au serveur MySQL
//***************************
include_once("connex.inc.php");
$idcom=connex("dico","myparam");
//*************************************************************
//Recherche de l'idauteur et du siècle si l'auteur existe déjà
//dans la table auteurs
//*************************************************************
$queryaut = "SELECT idauteur,siecle FROM auteurs WHERE
nom='$nom'";
$result = mysql_query($queryaut,$idcom)or die("ERREUR RESULTAT");
$tabid = mysql_fetch_row($result);
//Si l'auteur existe
if($tabid)
{
$idauteur= $tabid[0];
$siecle= $tabid[1];
//echo "IL Y A UNE REPONSE idauteur : $idauteur , $siecle,$texte ";
$query = "INSERT INTO citation (texte,idauteur) VALUES
('$texte','$idauteur')";
mysql_query($query,$idcom)or die("ERREUR D'INSERTION".$nom);
}
//si l'auteur n'existe pas encore
else
{
$queryins="INSERT INTO auteurs (nom,prenom,siecle) VALUES
('$nom','$prenom',$siecle) ";
• Une citation donnée ne peut être l’œuvre que d’un seul auteur.
Figure 18-6
Le modèle conceptuel de données de la base dico
Figure 18-7
Le modèle logique de données de la base dico
128
Structure de la table auteurs
CREATE TABLE `auteurs` (
`idauteur` int(11) NOT NULL auto_increment,
`nom` varchar(30) NOT NULL default '',
`prenom` varchar(30) default '',
`siecle` tinyint(2) default NULL,
PRIMARY KEY (`idauteur`)
)
TP n° 3. Commerce en ligne
Ce troisième et dernier thème constitue la partie la plus difficile de
votre travail puisqu’il a pour but de vous placer dans une situation
professionnelle.
Fonctionnement du site
La solution proposée comporte sept fichiers :
130
{
//Récupération des saisies
$motcle= $_POST['motcle'];
$categorie= $_POST['categorie'];
$tri= $_POST['tri'];
//Création de la requête
$requete = "SELECT id_article,design,prix FROM article WHERE ";
if($motcle) $requete.=" design LIKE '%$motcle%' ";
if($categorie !="") $requete.=" AND categorie='$categorie' ";
$requete.=" ORDER BY $tri";
$result=mysql_query($requete,$idcom);
$nbart=mysql_num_rows($result);
echo "<h3>Il y a $nbart articles répondant à votre recherche</h3>";
while($tab = mysql_fetch_assoc($result))
{
echo"<form action=\"panier.php\" method=\"post\">";
echo "<div class=\"bord\"><b>",$tab['design'] ,"</b><br /> Prix
unitaire : ",$tab['prix'] ," € <br /> Référence :
",$tab['id_article']," <br /> Choisir la quantité : <input
type=\"text\" name=\"quantite\" size=\"2\" maxlength=\"2\"
value=\"0\"/> <input type=\"submit\" value=\"Commander\" /> <input
type=\"hidden\" name=\"id_article\"
value=\"",$tab['id_article'],"\" /> <input type=\"hidden\"
name=\"prix_unit\" value=\"",$tab['prix'],"\" /><input
type=\"hidden\" name=\"design\" value=\"",$tab['design'],"\"
/></div>";
echo"</form>";
}
}
?>
</div>
</div>
<?php
include_once('pied.htm');
?>
132
<td> <input type="password" name="code" size="10" maxlength="8"
:><br />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Vérifier" name="envoi" />
</td>
</tr>
</tbody>
</table>
</fieldset>
<h4>Vous n'êtes pas encore client</h4>
<fieldset>
<legend><b>Vos coordonnées </b></legend>
<table>
<tbody>
<tr>
<td>Nom :
</td>
<td> <input type="text" name="nom" size="40" maxlength="40" /><br
/>
</td>
</tr>
<tr>
<td>Prénom : </td>
<td> <input type="text" name="prenom" size="40" maxlength="40"
/><br />
</td>
</tr>
<tr>
<td>Age : </td>
<td> <input type="text" name="age" size="10" maxlength="2" /><br />
</td>
</tr>
<tr>
<td>Adresse : </td>
<td> <input type="text" name="adresse" /><br />
</td>
</tr>
<tr>
<td>Ville : </td>
<td> <input type="text" name="ville" />
<br />
</td>
</tr>
<tr>
<td>Mail : </td>
<td> <input type="text" name="mail2" size="60" maxlength="60" /><br
/>
</td>
</tr>
<tr>
<td>Code personnel <br>(8 caractères maxi) </td>
if($_POST["nom"]&&$_POST["prenom"]&&$_POST["adresse"]&&$_POST["vill
e"]&&$_POST["mail"]&&$_POST["code"])
{
//Récupération des valeurs du formulaire
$nom= $_POST["nom"];
$prenom= $_POST["prenom"];
$age= $_POST["age"];
$adresse= $_POST["adresse"];
$ville= $_POST["ville"];
134
$mail= $_POST["mail"];
$code= $_POST["code"];
//Sessions
$_SESSION['nom']=$nom;
$_SESSION['prenom']=$prenom;
$_SESSION['age']=$age;
$_SESSION['adresse']=$adresse;
$_SESSION['ville']=$ville;
$_SESSION['mail']=$mail;
$_SESSION['code']=$code;
$_SESSION['nouveau']=TRUE;
//Redirection vers la page de paiement
echo "<script type=\"text/javascript\">
window.location='paiement.php' </script>";
}
else echo "<script type=\"text/javascript\">alert('Erreur de
saisie'); </script>";
}
include_once('pied.htm');
?>
136
$objet="Votre commande";
$texte="Bonjour ".$_SESSION['prenom']."
".$_SESSION['nom']."\n";
$texte.=$_SESSION['adresse']."\n";
$texte.=$_SESSION['ville']."\n";
$texte.="Nous vous confirmons la commande de :\n";
$total=0;
for($i=0;$i<count($_SESSION['id_article']);$i++)
{
$texte.=$_SESSION['quantite'][$i]."
".$_SESSION['design'][$i]."au prix de
:".$_SESSION['prix_unit'][$i]." soit : ".
$_SESSION['quantite'][$i]*$_SESSION['prix_unit'][$i]."\n";
$quant=(double) $_SESSION['quantite'][$i];
$prixunit=(double) $_SESSION['prix_unit'][$i];
$total+=$quant*$prixunit;
}
$texte.="Montant total de la commande =". $total."\n";
echo "<h4>$texte</h4>";
mail($dest,$objet,$texte);
session_destroy();
}
else "Carte bancaire non valable";
}
include_once('pied.htm');
?>
http://www.funhtml.com/php5/