Les exercices suivants sont des exercices supplémentaires pour réviser le premier chapitre de cours. Ils viennent en complément du TP1 qui doit être terminé avant de faire ces exercices. Ces exercices sont optionnels mais permettent de revoir les principales notions du chapitre 1.
Exercice 1 : Table de multiplication
-
Écrire la table de multiplication de 7 (de 1 à 10) sous forme d’une liste non ordonnée. Les items de la liste devront être générés avec une boucle PHP.
-
Modifier le script PHP pour afficher la table de multiplication sous la forme d’une table HTML (définie par les balises
<table>
,<tr>
,<td>
).
Exercice 2 : Initiation aux tableaux
Voici un tableau contenant les différents mois de l’année :
$mois = [
"janvier",
"février",
"mars",
"avril",
"mai",
"juin",
"juillet",
"août",
"septembre",
"octobre",
"novembre",
"décembre"
];
- Quelles sont les clés ? Parcourir ce tableau pour afficher les mois de l’année sous la forme d’une liste ordonnée.
On considère maintenant le tableau suivant donnant pour chaque mois de l’année, le nombre de jours qu’il contient (On suppose que l’année n’est pas bissextile.) :
$mois = [
"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
];
-
Quelles sont les clés du tableau ? Les valeurs ? Parcourir ce tableau pour afficher les mois de l’année sous la forme d’une liste ordonnée (comme dans la question précédente).
-
Modifier le code pour afficher dans la liste après le nom de chaque mois le nombre de jours qu’il contient.
Exercice 3 : Parcours de tableaux
Le tableau suivant donne les noms des étudiants et leur note en PHP.
$tabE1 = [
'Frédérique' => 12,
'Silvia' => 3,
'Julien' => 19,
'Lionel' => 12,
'Mario' => 12,
'Andrea' => 9,
'Gérard' => 3
];
-
Afficher sous forme d’une liste ordonnée les noms des différents étudiants.
-
Afficher sous forme d’une table HTML les noms et les notes des étudiants.
-
On suppose maintenant que les données sont stockées dans le tableau suivant où les clés sont les notes et les valeurs des tableaux contenant les prénoms des personnes ayant cette note.
$tabE2 = [ 3 => ['Silvia', 'Gérard'], 9 => ['Andrea'], 12 => ['Frédérique', 'Lionel', 'Mario'], 19 => ['Julien'] ];
Refaire les deux premières questions avec le tableau
$tabE2
.
Exercice 4 : Fonctions sur les tableaux
Considérons le tableau suivant.
$anneeScolaire = [
"Rentrée" => [2,9,2019],
"Vacances Toussaint" => [
"début" => [19,10,2019],
"fin" => [4,11,2019]
],
"Vacances Noël" => [
"début" => [21,12,2019],
"fin" => [6,1,2020]
],
"Vacances d'hiver" => [
"début" => [8,2,2020],
"fin" => [24,2,2020]
],
"Vacances de printemps" => [
"début" => [4,4,2020],
"fin" => [20,4,2020]
],
"Fin des cours" => [4,7,2020]
];
Écrire le code permettant d’obtenir l’affichage suivant.
- Rentrée : 2/9/2019
- Vacances Toussaint : du 19/10/2019 au 4/11/2019
- Vacances Noël : du 21/12/2019 au 6/1/2020
- Vacances d’hiver : du 8/2/2020 au 24/2/2020
- Vacances de printemps : du 4/4/2020 au 20/4/2020
- Fin des cours : 4/7/2020
Remarque : Une seule boucle foreach
est nécessaire, ainsi que les fonctions count
et implode
.
Exercice 5 : Fonctions
Considérons le tableau suivant.
$joueurs = [
['nom' => 'Mehwish', 'score' => 150],
['nom' => 'Laurent', 'score' => 120],
['nom' => 'Ines', 'score' => 98],
['nom' => 'Sondes', 'score' => 153],
['nom' => 'Davide', 'score' => 118]
];
Écrire une fonction meilleur_joueur
prenant en paramètre un tableau ayant la même structure que le tableau $joueurs
et retournant un tableau contenant le nom et le score du meilleur joueur.
Exercice 6 : Objets
- Définir une classe
Compte
représentant un compte bancaire. Cette classe contiendra :- deux attributs privés,
montant
etinteret
(annuel), - un constructeur prenant en paramètre un montant initial et un intérêt,
- une méthode
get_montant
retournant le montant du compte, - une méthode
un_an
modifiant le montant du compte au bout d’un an en fonction de l’intérêt.
Remarque : le nouveau montant après un an d’intérêt est égal à
m * (1 + i / 100)
oùm
est le montant actuel eti
est l’intéret en pourcentage. Par exemple, 150 € avec un intérêt de 10% correspondent à 165 € après un an et à 181.5 € après deux ans. - deux attributs privés,
- Créer deux comptes, un d’un montant de 200 € à 20% et l’autre d’un montant de 1000 € à 2%. Afficher le montant de chaque compte au bout de 10 ans.
Exercice 7 : Paramètres dans l’url
On suppose que le script PHP contient le tableau suivant :
$personnes = [
'mdupond' => ['Prénom' => 'Martin', 'Nom' => 'Dupond', 'Age' => 25, 'Ville' => 'Paris' ],
'jm' => ['Prénom' => 'Jean' , 'Nom' => 'Martin', 'Age' => 20, 'Ville' => 'Villetaneuse'],
'toto' => ['Prénom' => 'Tom' , 'Nom' => 'Tonge' , 'Age' => 18, 'Ville' => 'Epinay' ],
'arn' => ['Prénom' => 'Arnaud', 'Nom' => 'Dupond', 'Age' => 33, 'Ville' => 'Paris' ],
'email' => ['Prénom' => 'Emilie', 'Nom' => 'Ailta' , 'Age' => 46, 'Ville' => 'Villetaneuse'],
'dask' => ['Prénom' => 'Damien', 'Nom' => 'Askier', 'Age' => 7 , 'Ville' => 'Villetaneuse']
];
-
Modifier le script de manière à ce qu’il vérifie s’il existe dans l’url un paramètre de nom
pseudo
. Si c’est le cas, le script devra vérifier si la valeur du paramètre correspond à un pseudonyme (c’est-à-dire une clé) du tableau$personnes
. Si oui, le script affichera le pseudo et les informations associées contenues dans le tableau$personnes
. Il affichera sinon le messageDésolé, votre pseudonyme n'apparaît pas dans la liste
. -
Ajouter dans ce script un formulaire permettant à l’utilisateur de saisir le pseudonyme à rechercher afin de faciliter la saisie pour l’utilisateur. Faire en sorte que le champ de saisie du pseudonyme contienne la dernière valeur saisie (lorsque plusieurs recherches sont faites).
-
Créer un deuxième formulaire demandant un pseudonyme, un prénom, un nom, un âge et une ville, et ajoutant dans le tableau
$personnes
une nouvelle personne dont les valeurs sont celles données par le formulaire. Ajouter plusieurs personnes et expliquer alors le problème. (Afficher le tableau en entier pour mieux voir le problème.) Comment remédier à ceci (réponse sans code car les connaissances nécessaires à la réponse n’ont pas encore été vues en cours) ?
Exercice 8 : Contenu HTML protégé par mot de passe
Le but de cet exercice est de créer du contenu protégé par un mot de passe (cet exercice provient du site openclassroom).
-
On suppose dans un premier temps qu’il n’y a qu’une seule page Web dont le contenu est protégé. Pour cela, choisir un mot de passe (par exemple : kangourou). Créer un formulaire permettant de saisir un mot de passe. Le contenu protégé doit alors s’afficher uniquement si le mot de passe est correct. Dans le cas contraire, le formulaire doit de nouveau s’afficher.
-
On suppose maintenant qu’il y a plusieurs pages (site Web) dont le contenu doit être protégé par un mot de passe. Télécharger l’archive. Les 3 fichiers de cette archive doivent être protégés par un mot de passe. De plus, l’utilisateur doit se connecter une seule fois. Dès qu’il est connecté, il peut avoir accès à toutes les pages.
Indication : Il est nécessaire d’utiliser les sessions. Créer le fichier
securite.php
et l’inclure en début de chaque fichier à protéger. Le fichiersecurite.php
doit activer les sessions. Il doit ensuite tester si la variable$_SESSION
contient une cléconnecte
. Si ce n’est pas le cas, le formulaire doit être affiché puis le script terminé. Dans le cas contraire, la page doit s’afficher normalement. Le fichiersecurite.php
doit également tester si le formulaire a été soumis avec le bon mot de passe pour mettre à jour la variable$_SESSION
.Notes :
- Pour terminer un script, il est possible d’utiliser la fonction
exit
. - La variable
$_SERVER["PHP_SELF"]
contient le nom du fichier appelé dans l’url. Il peut être utilisé comme valeur du paramètreaction
de la baliseform
pour que le même fichier soit appelé lors de la soumission du formulaire.
- Pour terminer un script, il est possible d’utiliser la fonction
-
Donner la possibilité à l’utilisateur de se déconnecter sur n’importe quelle page. Pour cela, créer un fichier
deconnexion.php
. Ce script affchera un lien hypertexte sur le fichier appelé avec le paramètreaction
de valeurdeconnexion
. Inclure ce fichier danspage1.php
,page2.php
etpage3.php
. Dans le fichiersecurite.php
, faire en sorte que lors d’un clic sur ce lien hypertexte, l’utilisateur soit déconnecté (il doit saisir à nouveau son mot de passe).
Exercice 9 : Questionnaire à choix multiples
-
Le but de cet exercice est de faire une première page Web contenant des énigmes ou questions avec plusieurs réponses possibles (une seule d’entre elles étant correcte). L’utilisateur doit alors répondre aux différentes questions et le site affiche alors le score obtenu par l’utilisateur.
-
Ajouter sur la page d’accueil un formulaire pour que l’utilisateur puisse saisir son nom. Cette donnée sera utilisée par la suite pour personnaliser l’affichage du site.
-
Stocker, à l’aide d’un cookie le meilleur score obtenu par l’utilisateur. Dans la page du score, afficher ce meilleur score en plus du score obtenu à l’instant par l’utilisateur.