DM

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
<?php
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
        <?php
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
                <?php
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
        <?php
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
PrécédentPrécédentFin
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)