TP-PHP-mysql
Nous allons dans ce TP créer une base de données, la remplir via un formulaire et faire afficher des recherches avec des requêtes (tout un programme...)
Lorsque l'on ouvre une page web, notre navigateur interprète le code html pour afficher du texte, des images des liens etc.
Pour un formulaire par exemple, les calculs, les enregistrements etc. sont écrits en php et c'est le serveur qui est chargé de le faire.
Quant au requêtes SQL, c'est le SGBD du serveur de base de données qui s'en occupe...
Voici le TP : TP_php_mysql.pdf
Voici la ligne de requête de l'étape 4 :
1
$sql = 'INSERT INTO BD VALUES("","'.$genre.'","'.$auteur.'","'.$annee.'","'.$nombre_tome.'","'.$titre.'","'.$commentaire.'")';
Voilà le code à copier-coller de l'étape 6 :
1
2
include("fonctions.php");
3
4
5
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
6
<head>
7
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
8
<title>Informations </title>
9
<link href="style.css" rel="stylesheet" media="all" type="text/css">
10
</head>
11
<body>
12
<h1 align=center>TP-Base de données</h1><br>
13
<section>
14
15
//On se connecte
16
connectMaBase();
17
// On prépare la requête qui va mettre dans un tableau tout ce qui concerne l'auteur Jando
18
$sql = 'SELECT * FROM BD WHERE auteur="Jando"';
19
// On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas (or die)
20
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
21
22
//on organise $req en tableau associatif $data['champ']
23
//en scannant chaque enregistrement récupéré
24
//on en profite pour gérer l'affichage
25
//titre de la section avant la boucle
26
echo'<h2>Fiche de : Jando </h2>';
27
28
//boucle
29
while ($data = mysql_fetch_array($req)) {
30
// on affiche les résultats
31
echo 'Titre :<strong>'.$data['titre'].'</strong><br/>';
32
echo 'Référencé sous le n° : <strong>'.$data['id'].'</strong><br/>';
33
echo 'Genre :'.$data['genre'].'<br/>';
34
echo 'Année :'.$data['annee'].'<br/>';
35
echo 'Nombre de tome :'.$data['nombre_tome'].'<br/>';
36
echo 'Commentaire :'.$data['commentaire'].'<br/><br/><br/>';
37
38
}
39
//On libère la mémoire mobilisée pour cette requête dans sql
40
//$data de PHP lui est toujours accessible !
41
mysql_free_result ($req);
42
43
//On ferme sql
44
mysql_close ();
45
46
</section>
47
</body>
48
</html>
49
Voici le code à copier-coller de l'étape 7 :
1
<h2>Choisissez le champ qui vous intéresse et entrez manuellement un critère</h2>
2
<h4>Une absence de critères vous montre toutes les données du champ</h4>
3
<!--
4
Commentaires HTML
5
On construit une liste déroulante ( un select et plusieurs options)
6
Chaque option sera remplie par une donnée SQL récupérée par notre requête PHP
7
-->
8
<form method="post" action="recherche.php">
9
<select name="champ">
10
11
//On se connecte
12
connectMaBase();
13
//On prépare la requête SQL qui récupère les champs
14
$sql = 'Show fields from BD';
15
/* On lance la requête (mysql_query)
16
et on impose un message d'erreur si la requête ne passe pas (or die) */
17
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
18
//On scanne le résultat et on construit chaque option avec
19
while($data = mysql_fetch_array($req)){
20
// on affiche chaque champ
21
echo '<option name="'.$data['Field'].'">'.$data['Field'].'</option>';
22
}
23
//On libère mysql de cette première requête
24
mysql_free_result ($req);
25
//On ferme le select
26
27
</select>
28
Entrez votre critère de sélection sur ce champ : <input type="text" name="critere"/>
29
<input type="submit" name="Valider" value="OK"/>
30
</form>
31
<!--
32
On ferme le formulaire
33
-->
34
35
//On traite le formulaire
36
if(isset($_POST['Valider'])){
37
$champ=$_POST['champ'];
38
$critere=$_POST['critere'];
39
40
// On prépare la requête
41
//requête différente selon qu'on veut tout le champ
42
//ou un champ avec une condition
43
if(($critere=='')||($critere==NULL)){
44
$sql='SELECT '.$champ.' FROM BD';
45
}
46
else{
47
$sql = 'SELECT * FROM BD WHERE '.$champ.'="'.$critere.'"';
48
}
49
/* On lance la requête (mysql_query)
50
et on impose un message d'erreur si la requête ne passe pas (or die)*/
51
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
52
53
//Affichage du résultat
54
echo'<h2>Résultat</h2>';
55
56
//On scanne chaque résultat et affiche
57
while($data = mysql_fetch_array($req)){
58
/* on affiche les résultats
59
C'est pas très propre mais la fonction print_r vous permet de tout voir sur votre objet tableau :
60
Quand vous êtes complètement perdu sur ce que votre tableau est censé comporter :
61
Tapez cette commande print_r($tableau),
62
vous retrouverez facilement la structure du tableau (index et valeurs)*/
63
64
print_r($data);
65
echo'<br/><br/><br/>';
66
}
67
//On libère la mémoire mobilisée pour cette seconde requête dans SQL
68
mysql_free_result ($req);
69
70
//On ferme sql
71
mysql_close ();
72
}
73
74