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

  1. É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.

  2. 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"
];
  1. 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
];
  1. 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).

  2. 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
];
  1. Afficher sous forme d’une liste ordonnée les noms des différents étudiants.

  2. Afficher sous forme d’une table HTML les noms et les notes des étudiants.

  3. 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

  1. Définir une classe Compte représentant un compte bancaire. Cette classe contiendra :
    • deux attributs privés, montant et interet (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)m est le montant actuel et i 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.

  2. 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']
];
  1. 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 message Désolé, votre pseudonyme n'apparaît pas dans la liste.

  2. 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).

  3. 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).

  1. 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.

  2. 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 fichier securite.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 fichier securite.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ètre action de la balise form pour que le même fichier soit appelé lors de la soumission du formulaire.
  3. 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ètre action de valeur deconnexion. Inclure ce fichier dans page1.php, page2.php et page3.php. Dans le fichier securite.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

  1. 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.

  2. 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.

  3. 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.