Ignorer la navigation

Exercices de révision

 

Quelques exercices de révisions et d'entrainement:

 

Partie 1 : révision des requêtes MySql

Soit la table 'zoo' de la base de donnée suivante (gestion d'un zoo) :

Nom dans la base de données

id

type

arrive

depart

naissance

poids

nom

sexe

désignation

Type d'animal

Date d'arrivée

Date de départ

Date de naissance

poids

nom

sexe

1

lion

15-4-1978

12-3-1976

12,5

king2

M

2

panthère

23-4-1996

23-4-1996

8,9

T'Challa

M

3

python

7-5-1974

6-3-1973

1,6

F

4

lion

26-1-1968

17-4-2001

24-2-1965

10,4

king

M

5

bufflon

31-1-1987

12-11-1986

23,2

Ulysse

M

6

biche

12-10-1986

12-10-1986

18,5

F

7

éléphant

28-5-1999

21-6-1995

1534

babar

F

8

girafe

15-8-2012

10-7-2009

657

Camela

F

9

panthère

19-5-2001

10-4-1999

24

Panthera

F

10

lion

9-6-1979

4-11-1976

18,6

queen

F

11

python

7-5-1974

23-4-1974

1,9

F

12

éléphant

30-6-1999

21-6-1996

1350

Bengal

M

13

guépard

7-4-1995

12-6-1994

13,1

F

14

...

...

….

...

...

...

...

1. Donnez la requête MySQL pour afficher (sélectionner) tous les éléments de la table
2. Que fait la requête suivante : SELECT * FROM zoo where nom='king'
3. Donnez la requête MySQL pour afficher (sélectionner) les 3 premiers éléments de la table
4. Donnez la requête MySQL pour afficher (sélectionner) de Camela à Bengal
5. Donnez la requête MySQL pour afficher tous les lions
6. Donnez la requête MySQL pour afficher tous les éléphants en les classant par âge (du plus vieux au plus jeune)
7. Donnez la requête MySQL pour afficher tous les animaux par ordre d'arrivée (du plus récent au plus ancien)
8. Donnez la requête MySQL pour afficher tous les animaux femelles (en les groupant par type d'animal)
9. Donnez la requête MySQL pour insérer un nouvel animal : tigre, arrivé le 9/3/2017, pas parti, né le 13-12-2011, de poids 14,5kgs, il n'a pas de nom et c'est un mâle (les dates se rentrent sous la forme : année-mois-jour)
10. Que fait la requête suivante : UPDATE zoo SET depart= '2017-02-07' WHERE nom = 'Bengal' (donner le résultat sur la table de la base de données)

  

  

Partie 2 : révision PHP + MySQL

 

Exercice N°1 : nous disposons de la page « index_zoo.php » suivante :

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>zoo LaMachef</title>
        <meta http-equiv="refresh" content="60"/>
        <link rel="stylesheet" href="style.css" />
    </head>
 
    <body>
       <h1 class="donnee">Zoo LaMache</h1>
        <br/>
        <h2 class="donnee">Pour rentrer un nouvel animal:</h2>
        <form action="donnee_post.php" method="post">
        <p>
        
    <label for="type">type</label>: <input type="text" name="type" id="type" size="30"/><br />
    <label for="arrive">date d'arrivée (année-mois-jour)</label> :  <input type="date" name="arrive" id="arrive" placeholder="Ex: 1981-05-25" /><br />
    <label for="depart">date de départ (année-mois-jour)</label> :  <input type="date" name="depart" id="depart" placeholder="Ex: 1981-05-25" /><br />
    <label for="naissance">date de naissance (année-mois-jour)</label> :  <input type="date" name="naissance" id="naissance" placeholder="Ex: 1981-05-25" /><br />
<label for="poids">poids</label>: <input type="text" name="poids" id="poids" size="30"/><br />
<label for="nom">nom</label> : <input type="text" name="nom" id="nom" size="30" /><br />
<label for="sexe">sexe</label>: <input type="text" name="sexe" id="sexe" size="1"/><br />
        <input type="submit" value="Envoyer" />
        </p>
        </form>
        <br />
       <h2 class="titre_tab">Les animaux:</h2>

<?php

 // connection à la base de données
try
{ // On se connecte à MySQL
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{ // En cas d'erreur, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
}

// affichage des donnees
$reponse = $bdd->query('SELECT * FROM zoo'); //requête base de donnees
While ($donnees = $reponse->fetch()) // rend les valeurs utilisables et les affiche
{
    echo ' ' .$donnees['id']. ' '. $donnees['type']. ' arrivé le ' .$donnees['arrive']. '  parti le '.$donnees['depart']. '  né le '.$donnees['naissance']. ' poids : '.$donnees['poids']. 'Kgs   nom: '.$donnees['nom'].'   sexe : '.$donnees['sexe']. '<br/>';
}
$reponse->closeCursor();  // termine le traitement de la requête

?>
</body>
</html>



Ainsi que du fichier «donnee_post.php »
<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

echo ($_POST['type']);
echo ($_POST['arrive']);
echo ($_POST['depart']);
echo ($_POST['naissance']);
echo ($_POST['poids']);
echo ($_POST['nom']);
echo ($_POST['sexe']);

// Insertion du message à l'aide d'une requête préparée
if ($_POST['type'] !='')
{
$req = $bdd->prepare('INSERT INTO zoo (id, type, arrive, depart, naissance, poids, nom, sexe) VALUES(NULL, ?, ?, ?, ?, ?, ?, ? )');
$req->execute(array($_POST['type'], $_POST['arrive'], $_POST['depart'], $_POST['naissance'], $_POST['poids'], $_POST['nom'], $_POST['sexe']));
}
header ('Location: index_zoo.php');
?>


Quand on lit la page index_zoo.php on obtient (ici la table de la base de donnée est encore vide) :


1. Donnez la requête MySQL présente dans la page « index_zoo.php »
2. Quelle est son rôle ?
3. Quelle est l'instruction PHP (methode PDO) qui permet d'exécuter la requête MySQL précédente ?
4. Quelle est l'instruction PHP qui permet de se connceter à la base de données?
5. Expliquez comment fonctionne la page et notamment comment les données sont écrites dans la table 'zoo' de la base de données.
6. Donnez la requête MySQL qui permet ici d'écrire dans la base de donnée

  


Exercice N°2 :

Nous voulons introduire un nouvel animal dans notre table 'zoo'. La requête MySql est :
INSERT INTO `test`.`zoo` (`id`, `type`, `arrive`, `depart`, `naissance`, `poids`, `nom`, `sexe`) VALUES (NULL, 'tigre', '2017-03-01', '', '2015-08-03', '21', 'hobes', 'M');

Voici la page php qui va réaliser ceci :
<?php
 // connection à la base de données
try      // On essaie de se connecter à MySQL
{
         $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)     // En cas d'erreur, on affiche un message et on arrête tout
{
        die('Erreur : '.$e->getMessage());
}

// écriture dans la table
$bdd->exec('INSERT INTO zoo (id, type, arrive, depart, naissance, poids, nom, sexe) VALUES(NULL, \'tigre\', \'2017-03-01\', '', \'2015-08-03\', \'21\', \'hobes\', \'M\')');
echo ('donnee  ecrite!');
?>


1. Expliquez et justifiez les différences entre la requête d'origine et celle utilisée dans la page.

  

Sur certains systèmes, l'instruction PHP (PDO) est : exec("  requête MySQL   "). Ainsi on aurait pu écrire aussi cette ligne là :
$bdd→exec( "INSERT INTO zoo (id, type, arrive, depart, naissance, poids, nom, sexe) VALUES(NULL, 'tigre', '2017-03-01', '', '2015-08-03', '21', 'hobes', 'M')");
2. Justifiez et expliquez la différence avec la question précédente.

   

    

Partie 3 : révision PHP

 

Exercice N°1 :

soit les 2 pages suivantes : (la méthode de transmission des informations est POST)

Page  « index.html » :

<!DOCTYPE html>
<html xml:lang="fr" lang="fr">
    <head>
        <title>variables</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" href="style.css" />
    </head>
    <body>
        <h2 class="donnee">Bonjour ... veuillez rentrer les renseignements suivant:</h2>
        <form action = "traitement.php" method="post">
        Votre nom : <input type = "text" name = "nom"><br />
        Votre âge : <input type = "number" min="1" max="99" name = "age"><br />
    <input type = "submit" value = "Envoyer">
    </form>
    </body>
</html>

  

Page « traitement.php » :

<html>
  <head>
    <title>Ma page de traitement</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <h2 class="donnee">
    <?
    // on teste la déclaration de nos variables
    if (isset($_POST['nom']) && isset($_POST['age'])) // test si les variables existent
    {
        // on affiche nos résultats
        $age=$_POST['age'];
        if ($age <= 18)
        {
            echo "Salut gamin !, je sais que tu as ";
            echo $age;
            echo " ans";
            echo "<br />" ;
            echo "tu es trop jeune pour ce site!";
        }
        if ($age > 18 && $age<50)
        {
            echo "Bonjour jeune homme !, je sais que tu as ";
            echo $age;
            echo " ans";
            echo "<br />";
            echo "bienvenu";
        }
        if ($age >= 50)
        {
            echo "Bonjour !, je sais que tu as ";
            echo $age;
            echo " ans";
            echo "<br />";
            echo "n'es-tu pas trop vieux pour ce site?";
        }
    }
    else
    {
        echo "données non rentrées";
    }
    ?>
    </h2>
  </body>
</html>


1. Surlignez, de couleur différentes, les parties HTML et PHP de la page « traitement.php » ?
2. Quelles sont les 2 variables transmises (méthode POST) par la page « index.html » à la page « traitement.php »?
3. Comment sont-elles récupérées (sous quelle forme) par la page « traitement.php » ?
4. Quel est la variable PHP (non issue de la transmission POST) utilisée dans la page « traitement.php » ?
5.  Expliquez ce que va faire la page « index.html » puis la page « traitement.php »  et écrivez ce que la page va afficher dans les différents cas (11, 40 et 62 ans).

   

  

Exercice N°2 :

Notre site internet est structuré en 7 fichiers: « presentation.php », « entete.php», « pied_page.php» «index.php », «erreur.php», « page1.php »et « page2.php ». La transmissions des informations de fait par la méthode GET (informations transmises dans l'URL).

Voici la page « index.php » :


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <META HTTP-EQUIV="Content-Language" CONTENT="fr-FX">
       <title>site de la seciotn STI 2D SIN du lycée LaMache</title>
    </head>
    
    <body>
        <div id="bloc_page">
            <?php
        include("entete.php"); // inclusion de l'entête
            ?>
                        
            <section>    <!-- partie principale -->
                <article class="centrer">
        <?php
        
        if (isset($_GET['page'])) // test si la variable page existe
        {
            $_GET['page'] = (int) $_GET['page']; // force le type entier pour la variable page
            $page=$_GET['page'] ;

            if ($page == 0)
            {
                include("presentation.php");
            }
            else
            {
                if ($page == 1)
                {
                    include("page1.php");
                }
                else
                {
                    if ($page == 2)
                    {
                        include("page2.php");
                    }
                    else
                    {
                        include("erreur.php");
                    }
                }
            }
        }
        else    // si la variable n'existe pas (index.php seul par exemple)
        {
            include("presentation.php");
        }
        ?>    
        </article>
            </section>
            <?php
        include("pied_page.php"); // inclusion du pied de page
            ?>     
        </div>  <!-- div du body -->
    </body>
</html>


La page « entete.php » :

 <header>
                <div>
                          <p>STI 2D – SIN – Lycée LaMache</p>
                 </div>
                <nav>
                    <ul>
                        <li><a href="index.php?page=0" class="texte_nav" >Accueil</a></li>
                  <li><a href="index.php?page=1" class="texte_nav">Programme de 1ère</a></li>
                        <li><a href="index.php?page=2" class="texte_nav">Programme de terminale</a></li>
                    </ul>
                </nav>
  </header>


1. Surlignez, de couleurs différentes, les parties HTML et PHP de la page « index.php » ?
2. Quelle est la variable PHP présente dans la page « index.php » ?
3. Dessinez la structure de notre site internet

exemple de structure:




4. Expliquez le fonctionnement de la page « index.php »
5. Combien y-a-t-il de pages accessibles à l'utilisateur ?
6. Écrivez l'URL visible dans le navigateur internet et permettant d'accéder à la page1
7. Écrivez l'URL visible dans le navigateur internet et permettant d'accéder à la page de présentation
8. Que se passe-t-il si l'url est : index.php
9. Que se passe-t-il si l'url est : index.php?page=5
10. Modifiez la page « index.php » en remplaçant les "if" sur l'affichage des pages par la fonction Switch