Liste d'exercices PHP - BIO30 - année 2011-2012


lien vers les projets proposés



PHP: les premiers pas

Obtenir PHP et Apache chez vous: Deux sites importants:

Ces premiers exercices sont cruciaux pour la compréhension du fonctionnement de PHP; veillez à les faire avec soin !

Un script PHP "écrit" de l'html, qui est passé au serveur web, qui l'envoie au client; le script suivant illustre la fonction PHP la plus importante, qui permet d'écrire quelque chose: echo
Il montre également la communication entre le client et le serveur.
Nous allons décrypter ensemble ce premier exemple, qui illustre les principaux éléments html/PHP:

Comment faire afficher la date et l'heure ?

un premier script [code du script php]

La fonction echo permet d'affichier quelque chose à l'écran: une chaîne de caractères (qui doit être entre guillemets), ou le contenu d'une variable. Elle permet également d'afficher plusieurs éléments à la suite, que l'on "colle ensemble" (on dit concatène) à l'aide du point .

Rajoutez les lignes suivantes au début du script:
$nom="Bond";
$prenom="James";
echo "Bonjour, ".$prenom." ".$nom."<br/>"
et exécutez le script, puis affichez le code source du résultat.
Modifiez le script pour qu'il n'y ait qu'une seule fonction echo, qui affiche l'ensemble des informations: le bonjour, le nom et prénom, la date et l'heure.


Formulaire et variables

Nous allons essentiellement utiliser PHP pour traiter des données issues d'un formulaire soumis par l'utilisateur.
Nous distinguerons
  1. le fichier qui permet d'afficher le formulaire: c'est un fichier html
  2. le script qui permet de récupérer les données du formulaire, les traiter, et renvoyer les résultats au client: c'est un fichier php.
Pour simplifier les choses, nous donnerons le même nom au fichier de formulaire (blabla.html) et au script de traitement (blabla.php).

Un tout premier formulaire pour comprendre le fonctionnement

mon premier formulaire [code du script php]

Le formulaire et le script de traitement doivent pouvoir communiquer; le script doit pouvoir récupérer les valeurs entrées dans le formulaire. Dans cet exemple, le formulaire envoie les données au script en les ajoutant dans l'URL. Ce n'est pas toujours une bonne méthode, si on veut par exemple envoyer beaucoup de données ou des données confidentielles !!

Comment envoyer les données du formulaire au script ?

Dans le fichier html, remplacez method="get" par method="post"; dans le script de traitement remplacez $_GET par $_POST; relancez le formulaire. Quelle est la différence (regardez l'URL une fois que vous avez soumis, dans un cas comme dans l'autre)?

Comment afficher les éléments d'un formulaire basique ?

Le but de cet exercice est de créer un formulaire permettant la réservation d'un voyage avec ses options, et un script PHP permettant d'afficher à l'utilisateur le récapitulatif de ses choix.
Rappelez vous que chaque élément d'un formulaire doit avoir un nom qui lui est propre, indiqué par name=XXX à l'intérieur de la balise <input ...>.
Utilisez le pense-bête html/PHP pour voir comment insérer les différents élements composant un formulaire..

  1. sauvegarder le code html du formulaire welcome.html et le script PHP welcome.php dans votre répertoire web si ce n'est pas déjà fait; renommez les 2 en reservation.html et reservation.php;
  2. complétez le formulaire html de manière à créer un formulaire de réservation de voyage (essayez d'utiliser tous les différents éléments disponibles!)
  3. . Dans ce formulaire, l'utilisateur devra
    1. entrer son nom et prénom (boîte texte)
    2. choisir entre train, avion ou bateau (menu déroulant ou boutons radio)
    3. entrer une destination souhaitée (boîte texte ou menu déroulant, au choix)
    4. indiquer s'il veut une assurance annulation et/ou une assurance rapatriement (boutons à choix multiples)
    5. indiquer des dates de voyage (menu déroulant ou boîte texte)
  4. modifiez le script PHP reservation.php pour afficher un récapitulatif des options de réservation en utilisant la commande echo

Ajout de fonctions plus avancées

Jusqu'ici, nous avons vu une seule fonction: la fonction echo , qui permet d'afficher quelque chose à l'écran. Il existe beaucoup d'autres fonctions, permettant notamment de manipuler des chaînes de caractères (cf. pense-bête PHP).

Comment manipuler des chaînes de caractères ?

Utilisez les fonctions de manipulation de chaînes de caractères pour Pensez à consulter ce site si vous trouvez la fonction adaptée, ou consultez la référence PHP!.

Nous verrons plus tard une manière très puissante de traiter et d'analyser des chaines de caractères, en utilisant des expressions régulières; elles permettent par exemple de tester de manière très simple si une chaîne de caractères rentrée dans un champ de formulaire ressemble à une adresse mail: xxx@yyy.zzz


Solution: formulaire html | script php


Les instructions conditionnelles

l'instruction if ...else

Elles permettent de faire une action ou une autre en fonction d'une condition.
if (condition)
{
liste des instructions
à effectuer si la condition
est remplie
}
else
{
liste des instructions
à effectuer si la condition
N'EST PAS remplie
on peut également introduire des conditions du genre: si ... sinon si ... sinon si ... en utilisant
if ... else if ... else if ...

Instruction conditionnelle pour traiter un formulaire

Créez un formulaire html monsieurmadame.html permettant à l'utilisateur d'indiquer s'il est un homme ou une femme; créez le script php (monsieurmadame.php) qui répond "Bonjour monsieur" ou "Bonjour madame"

On peut les combiner les conditions par des mots logiques: AND ou OR:
if ( ( (condition 1) or (condition 2) ) and (condition 3) )
Attention aux parenthèses dans ce cas!

Comment combiner les conditions?

premier exercice
Reprenez le formulaire précédent; rajouter une question sur le statut marié/célibataire de la personne (bouton radio); modifiez le script php monsieurmadame.php pour qu'il réponde en fonction du statut: Le script sera constitué d'une série de if (condition1)... else if (consition2) ... else if (condition3) ... et chaque condition testera une combinaison des réponses fournies.
Solution formulaire html | script php

Second exercice
Reprenez le formulaire de réservation; ajoutez un élément demandant le nombre d'enfants (de 0 à 7, menu déroulant); dans le script php ajoutez un test sur le nombre d'enfants; si ce nombre est supérieur ou égal à 3, indiquez dans le récapitulatif que l'utilisateur peut bénéficier d'une réduction famille nombreuse.

la vérification de formulaire

Vérifier le formulaire
Dans les scripts de traitement de formulaires PHP, il est très important de vérifier que l'utlilisateur a bien rempli les champs avant de soumettre le formulaire. Il sera en effet difficile de traiter le formulaire si les valeurs sont inexistantes... On utilise pour cela les 2 instructions suivantes, en combinaison avec un if...else...
- empty($variable): vérifie si la variable est vide
- isset($variable): vérifie si la variable existe

Comment vérifier les différents champs d'un formulaire ?

Solution: Formulaire | Script PHP


les boucles

Elles permettent des actions répétitives
- afficher tous les éléments d'une liste
- afficher tous les éléments d'un tableau
- répéter 100 fois la même opération
- ...
Il existe plusieurs types de boucles différentes:
- les boucles for
- les boucles foreach qui permettent par exemple d'afficher tous les éléments d'un tableau

les boucles for...: la base

Les boucles for

tableaux et tableaux indicés

Une variable "normale" ne peut contenir qu'une seule valeur. Si on lui affecte une nouvelle valeur, cette nouvelle valeur écrasera la valeur précédente. Parfois, on a besoin de mettre plusieurs informations dans une variable; par exemple, dans le cas de choix multiples dans un questionnaire, on voudrait pouvoir stocker tous les choix de l'utilisateur dans une même variable (ex: tous ses choix d'assurances pour un voyage). On peut résoudre cela en utilisant un nouveau type de variable, les tableaux. Un tableau est une variable contenant plusieurs cases; chaque case peut contenir une valeur (chiffre, chaîne de caractères, ...).
Il y a deux manière de créer et de remplir un tableau en PHP:
  1. $tableau = array ("rouge","vert","bleu")
  2. $tableau = array ("rouge" => "red", "vert" => "green", "bleu" => "blue")
Dans le premier cas, chaque chaîne de caractère 'rouge, vert, bleu) est stockée dans une case du tableu, et cette case est numérotée par un chiffre entier (ici: O pour rouge, 1 pour vert et 2 pour bleu).
Dans le second cas (appelé tableau associatif), chaque case du tableau est référencée par une clé ou indice (ici rouge, vert et bleu), et contient une chaîne de caractères (red, green, blue)

Utiliser un tableau pour stocker des informations

La boucle foreach ... pour afficher les valeurs d'un tableau

Pour afficher toutes les valeurs contenues dans un tableau, on peut utiliser une boucle très simple (donc une opération répétitive): si le tableau se nomme $tableau, on affiche toutes ses valeurs de la manière suivante:
foreach ($tableau as $element)
{
echo $element;
}

Comment afficher toutes les valeurs contenues dans un tableau ?

  1. Créez un formulaire sur 4 lignes permettant de rentrer le nom de 4 personnes ainsi que leur note (quelque chose comme ça); créer un script de traitement qui remplit un tableau note contenant les 4 notes, et affichez toutes les notes;
  2. même chose que précédemment, mais en utilisant un tableau indicé, dont l'indice est le nom de la personne, et affichez les notes ainsi que les noms.
  3. modifiez votre script PHP pour afficher en vert le nom des étudiants ayant une note supérieure à la moyenne, et en rouge les autres
  4. enfin, calculez la moyenne des notes et affichez le résultat.
Solution: formulaire html | script php

Comment utiliser les tableaux et les checkbox ?

Utilisez des tableaux pour traiter les checbox (boutons à choix multiples) dans les formulaires; pour cela, dans name, il faut faire suivre le nom de l'élément par des crochets [] pour indiquer à PHP que la variable est un tableau.
Modifiez votre formulaire de réservation, et vérifiez que vous arrivez à imprimer toutes les options choisies dans le récapitulatif en utilisant une boucle foreach.

Application: Afficher le prix de la réservation

Vous pouvez utiliser un tableau pour stocker les prix des différents voyages possibles, et des options proposées; modifiez votre script reservation.php de manière à créer un tel tableau, et de manière à afficher le prix du voyage y compris les options choisies.

Nous avons maintenant passé en revue les principaux points du langage PHP; d'autres seront abordés au cas par cas, selon les besoins de vos projets. L'exercice suivant se veut un récapitulatif de ces différents points.

Application: comptage de la fréquence des lettres d'un texte

Dans ce formulaire, l'utilisateur peut rentrer un texte quelconque; le but est d'écrire un script qui détermine la fréquence de chaque lettre de l'alphabet dans ce texte.
Indications:
  • le script consistera en une boucle for qui parcourt toute la longueur du texte (il faut donc déterminer la longueur du texte à l'aide de la fonction strlen
  • à chaque tour de boucle, on extrait une lettre du texte à l'aide de la fonction substr
  • on utilise un tableau indicé $frequence, qui contient pour chaque lettre le nombre de fois où elle a été rencontrée dans le texte. A chaque tour de boucle, la fréquence de la lettre rencontrée est augmentée de 1
  • Solution: formulaire html | script php


    les graphiques avec RGraph

    Nous allons maintenant voir comment créer des graphiques en PHP, permettant de représenter des données. Ces données sont généralement stockées dans un tableau (par exemple, les températures moyennes des mois de l'année, les moyennes d'un groupe d'étudiants, etc...
    Pour cela, nous allons utiliser une librairie graphique, qui contient des fonctions prédéfinies permettant de réaliser ces graphiques de manière très simple. Cette librairie est RGraph, qui repose sur les standards de HTML5, la nouvelle spécification du langage HTML.
    Pour le détail, c'est une librairie écrite en javascript, qui est un langage qui contrairement à PHP s'exécute côté client (donc dans votre navigateur web), et non pas côté serveur. Donc, c'est votre navigateur qui crée l'image en direct, plutôt que de recevoir une image toute faite par le serveur.

    Le premier exercice consiste simplement à aller sur la page des exemples de RGraph, afin de voir les différents types de graphiques que l'on peut réaliser à l'aide de cette librairie.
    Choisissez l'un des exemples, et affichez le code source de la page (généralement avec Control U); est-ce qu'il y a du PHP dans ces exemples ?

    installer la librairie

    Pour utiliser RGraph, il faut installer la librairie dans votre répertoire web public_html; allez sur la page de téléchargement de RGraph, et téléchargez le .zip de la version stable. Dézippez le dans votre répertoire public_html; vous devriez maintenant avoir un sous-répertoire RGraph.

    quelques exemples simples

    Chaque type de graphique correspond à une fonction particulière de la librairie; pour chaque type de graphique, il y a de nombreux paramètres que l'on peut régler: couleur du graphique, du fond, titre, etc ...

    Dans chacun des 3 cas suivant, je vous demande d'expérimenter les différents paramètres permettant de modifier l'apparence du grahique; pour cela, copiez le code source dans un fichier dans votre répertoire public_html, puis modifiez les paramètres.

    et le PHP dans tout ça ... ?

    Les exemples précédents ne contiennent que de l'html et du javascript, mais pas de code PHP ... Nous allons maintenant voir un exemple qui combine un formulaire HTML, un script php et un graphique

    formulaire à remplir | code php du script

    Cela commence à être sophistiqué ! Remarquez que le code php contient de l'html, du php et du javascript !