TP Corrige S PHP [PDF]

  • Author / Uploaded
  • sara
  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

IUT de Villetaneuse

TP2 : PHP (Corrigé) Exercice 1 : Premiers pas en PHP

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20



Voici un exemple de code PHP.



< title >

Mes premiers pas en PHP

Mais cela a l’air intéressant



Encore quelques paragraphes

echo ’

Avant dernier paragraphe

’;

Voilà, c’est terminé!



� Répondre aux questions suivantes :





1. Donner dans ce fichier les parties correspondant à du code PHP et à du code XHTML. 2. Si ce fichier s’appelle exo1.php, et s’il est stocké sur le site Web www.exemple.org dans le répertoire PremierTP, comment "exécuter" ce fichier ? Que donne son exécution ? Ceci est-il valide ? Pourquoi ? Corriger alors le problème. 3. Remplacer les trois instructions echo de la ligne 10 par une seule. Correction : 1. XHMTL : lignes 1-4, balises ouvrantes et fermantes title de la ligne 5, lignes 6-9, début et fin de la ligne 11, lignes 16-20. Le reste est du PHP. 2. Avec un navigateur, taper l’url http://www.exemple.org/PremierTP/exo1.php. L’interprétation du code PHP produit du code XHTML. Le résultat de l’interprétation de ce code donne 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15





< title > Premiers pas en PHP

Mes premiers pas en PHP

Je débute depuis 2 heures...

Mais cela a l’air intéressant !

Vive le PHP

Les pages vont pouvoir être dynamiques!

Encore quelques paragraphes

echo ’

Avant dernier paragraphe

’;

Voilà, c’est terminé!



Mathieu LACROIX

� � �76 �

Introduction Web, 1ère année



Département informatique

16 17





Le code XHTML généré n’est pas valide car il contient du texte (echo ’ et ’;) qui n’est contenue dans aucune balise de type block. Pour corriger cela, il faut ajouter à la fin de cette même ligne.

3. echo ’

Je débute depuis ’. $temps . ’ heures...

’;





Exercice 2 : Inclusion d’en-tête et pied de page

Le langage PHP permet d’inclure des fichiers dans d’autres. Ceci permet alors de décomposer un code XHTML ou PHP en plusieurs parties logiques et d’insérer ensuite ces différentes parties dans un fichier PHP. Utiliser l’inclusion de fichiers pour séparer, dans le fichier précédent, le corps du document du reste. Quel est l’intérêt d’une telle décomposition ? Correction :









Fichier debut.php :

1 2 3 4 5 6 7 8



< title > Premiers pas en PHP







Fichier fin.php :

1 2











Fichier exo2.php :

1 2 3 4 5 6 7 8 9

Mes premiers pas en PHP

Je débute depuis 2 heures...

Mais cela a l’air intéressant !

Vive le PHP

Les pages vont pouvoir être dynamiques!

Encore quelques paragraphes

echo ’

Avant dernier paragraphe

’;

Voilà, c’est terminé!





Intérêts : clarification du code, décomposition en parties logiques, les parties d’un site Web qui ne bougent pas et sont présentes dans toutes les pages Web du site peuvent être écrites une seule fois.



Exercice 3 : Affichage des carrés de tous les nombres entre 1 et 30*

Créer une page PHP permettant d’afficher, sous forme de liste non ordonnée, les carrés des nombres de 1 à 30 selon le format : • 12 = 1 • 22 = 4 ... • 302 = 900 Utiliser d’abord l’instruction echo avec des apostrophes puis avec des guillemets. Remarque : Pour mettre du texte en exposant en XHTML, il est possible d’utiliser la balise sup.

Introduction Web, 1ère année

� � �77 �

Mathieu LACROIX



IUT de Villetaneuse

1 2 3 4 5 6 7 8 9

Créer ensuite une fonction prenant en paramètre un nombre n et retournant la chaîne de caractères n2 = m. Utiliser cette fonction pour produire la même page Web. Correction : � �

Suite de carrés




� �

� �

Instruction echo avec des guillemets : echo "
  • $i 2 =". $i*$i . "
  • \n";.

    1 2



    � �

    Exercice 4 : Table de multiplication*

    Créer un script PHP permettant d’afficher la table de multiplication donnée par la figure 3.3.

    Figure 3.3 – Table de multiplication L’opérateur modulo (symbole %) permet de donner le reste de la division entière. Pour déterminer si une ligne est paire ou impaire, il suffit alors de regarder la valeur du numéro de ligne modulo 2. Mathieu LACROIX

    � � �78 �

    Introduction Web, 1ère année

    Département informatique

    1 2

    < table >











    CSS :

    1 2

    table {

    3 4

    border- collapse : collapse ;

    }

    5 6 7

    th,td {

    8 9 10 11 12

    border : 1px solid black; width : 40px; height : 40px; text - align : center;

    }

    13 14 15

    th {

    16 17

    background-color : #D48030;

    }

    18 19 20

    .impair {

    21 22

    background-color : #BEA58E;

    }

    23 24 25

    . pair { Introduction Web, 1ère année

    � � �79 �

    Mathieu LACROIX

    IUT de Villetaneuse

    26 27



    background-color : #EBD9C8;

    }





    Exercice 5 : Initiation aux tableaux

    1 2 3

    Créer un tableau ayant pour valeur les noms des douze mois de l’année. Quelles sont alors les clés ? Parcourir ensuite le tableau pour afficher les mois de l’année sous forme de liste ordonnée. Correction : � �



    Les clés sont les entiers 0,1,...,11. (Attention, les indices attribués automatiquement commencent à 0 !)

    1 2 3





    Créer un tableau associant à chaque mois de l’année le nombre de jours du mois. (On supposera que l’année n’est pas bissextile.) Quelles sont alors les clés ? Les valeurs ? Afficher, sous forme de tableau, le nombre de jours de chaque mois. Correction : � � $jourMois = array(’janvier’=>31, ’février’ => 28, ’mars’ =>31, ’avril’ => 30, ’mai’ => 31, ’juin’ => 30, ’juillet’ => 31, ’août’ => 31, ’septembre’ => 30, ’octobre’ => 31, ’novembre’ => 30, ’décembre’ => 31);

    4 5 6 7 8

    echo ’’."\n"; foreach ($jourMois as $m => $nbJ) echo ’\n"; echo ’
    Mois Nombre de jours
    ’ . $m . ’ ’. $nbJ . "
    ’;



    Les clés sont les noms des mois de l’année et les valeurs les nombres de jours par mois.



    Exercice 6 : Tableau à deux dimensions

    1 2 3 4 5 6 7 8







    On définit le tableau suivant :

    $personnes = array( ’mdupond’=> array(’prenom’ => ’Martin’, ’nom’ => ’Dupond’, ’age’ => 25, ’ville’ => ’Paris’), ’jm’=> array(’prenom’ => ’Jean’, ’nom’ => ’Martin’, ’age’ => 20, ’ville’ => ’Villetaneuse’), ’toto’=> array(’prenom’ => ’Tom’, ’nom’ => ’Tonge’, ’age’ => 18, ’ville’ => ’Epinay’), ’arn’=> array (’prenom’ => ’Arnaud’, ’nom’ => ’Dupond’, ’age’ => 33, ’ville’ => ’Paris’), ’email’=> array(’prenom’=>’Emilie’, ’nom’=>’Ailta’, ’age’=>46, ’ville’=>’Villetaneuse’), ’dask’ => array(’prenom’=>’Damien’, ’nom’=>’Askier’,’age’=>7,’ville’=>’Villetaneuse’) );



    Question 6.1 : Quelles sont les clés du tableau $personnes et leur type ? De quel type sont les valeurs de ce tableau ? Quelle est la valeur associée à ’toto’ ?

    Question 6.2 : Comment accéder à la valeur 33 dans le tableau ? À la valeur ’Epinay’ ? Au tableau contenant les valeurs ’Damien’, ’Askier’, 7, ’Villetaneuse’ ? Mathieu LACROIX

    � � �80 �

    Introduction Web, 1ère année



    Département informatique

    Question 6.3 : Écrire une fonction permettant d’afficher le tableau dans son ensemble. Ajouter une première ligne contenant les clés ’prenom’, ’nom’, ’age’ et ’ville’. Ajouter ensuite un fichier CSS afin d’obtenir le tableau donné par la figure 3.4.

    Figure 3.4 – Tableau d’informations de personnes Question 6.4 : Écrire une fonction permettant d’afficher sous forme de tableau (en utilisant toujours le CSS), les informations des personnes habitant dans une ville donnée en paramètre. Par exemple, si la fonction est appelée avec le tableau $personnes défini précédemment et la ville ’Epinay’, le tableau affiché doit alors contenir uniquement la ligne relative à toto. Correction : Les clés sont de type chaînes de caractères et les différentes valeurs de clés sont : ’mdupond’, ’jm’, ’toto’, ’arn’, ’email’ et ’dask’. Les valeurs du tableau sont de type tableau. La valeur associée à ’toto’ est le tableau : array(’prenom’ => ’Tom’, ’nom’ => ’Tonge’, ’age’ => 18, ’ville’ => ’Epinay’). Pour accéder à la valeur 33, écrire : $personnes[’arn’][’age’]. Pour accéder à Epinay, écrire : $personnes[’toto’][’ville’]. Pour accéder au tableau $personnes[’dask’].

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

    1





    � �

    � �

    function affichageTableau ($personnes) { echo ’’."\n"; $ligne = 0; foreach ($personnes as $pseudo => $info) { if($ligne==0) { echo ’’."\n"; foreach ($info as $c => $v) echo ’’ ; echo ’’."\n"; $ligne ++; } if($ligne%2==1) $class = ’impair’; else $class = ’pair’; echo ’’."\n"; foreach ($info as $v) echo ’’ ; echo ’’."\n"; $ligne ++; } echo ’
    ’ . $c . ’
    ’ . $v . ’
    ’."\n"; } function

    affichageHabitantsVille ($personnes, $ville )

    Introduction Web, 1ère année

    � � �81 �

    Mathieu LACROIX

    IUT de Villetaneuse

    2

    {

    3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24



    echo ’’."\n"; $entete = true; foreach ($personnes as $pseudo => $info) { if($entete) { echo ’’."\n"; foreach ($info as $c => $v) echo ’’ ; echo ’’."\n"; $entete = false ; } if($info[’ville’]==$ville) { echo ’’."\n"; foreach ($info as $v) echo ’’ ; echo ’’."\n"; } } echo ’
    ’ . $c . ’
    ’ . $v . ’
    ’."\n";

    }

    La deuxième fonction peut être modifiée pour ajouter les class pair et impair. Le code CSS associé au tableau est équivalent à celui donné pour la table de multiplication. Pour les étudiants en avance, on peut également leur demander de faire une fonction affichant les informations de la personne la plus âgée (ou la plus jeune).





    Exercice 7 : Paramètres dans l’url Question 7.1 : Appeler une page PHP en passant dans l’url un paramètre de nom pseudo et ayant pour valeur un des pseudonymes du tableau $personnes. Faire en sorte que la page affiche le pseudo et les informations associées contenues dans le tableau $personnes. Améliorer le script pour que ce dernier affiche Désolé, votre pseudonyme n’apparaît pas dans la liste si le pseudonyme n’est pas une clé du tableau $personnes. Correction :



    Exemple d’appel : http://aquanux/~001/TP2/exo7.php?pseudo=toto

    1 2

    Question 7.2 : Créer un formulaire permettant à l’utilisateur de saisir le pseudonyme à rechercher afin de faciliter la saisie pour l’utilisateur. Mettre ensuite directement le formulaire dans le script PHP créé précédemment afin de pouvoir effectuer facilement plusieurs recherches. Faire en sorte que le champ de saisie du pseudonyme contienne la dernière valeur saisie. Correction : � � Veuillez saisir un pseudonyme :

    Pseudonyme :