Exercices Exercice 1 : Un AND et un OR étranges. a) Montrer que le AND (respectivement OR) a un fonctionnement différent du && (resp. ). Pour cela, faire un combinatoire sur tous les cas en affichant le résultat de $c=$a and $b ; Interpréter les résultats en faisant intervenir les priorités entre opérateurs. Essayer avec des parenthèses. b) Même question avec le OR qui a un fonctionnement différent du (touche Alt Gr + 6). Exercice 2 : Standardisation de la présentation d'un site a) Tester les fonctions include() et require() qui permettent d'inclure un fichier. b) Réaliser une présentation standardisée de plusieurs pages en incluant un logo en haut et une zone de liens à deux endroits différents par exemple au dessus et en dessous de la partie contenue texte+images. c) Améliorer la présentation en employant un tableau pour la zone de liens. d) Afficher le contenu des variables $PHP_SELF et $DOCUMENT_ROOT qui permettent de localiser le fichier actuellement vu. e) En déduire un moyen pour personnaliser l'affichage de la zone de liens afin que l'utilisateur puisse savoir la page affichée en regardant seulement cette zone. Le lien correspondant à la page en cours se transformera en simple texte en gras, le fond de la cellule correspondante change de couleur,... Exercice 3 : tableaux en deux dimensions Créer un tableau à deux dimensions avec les animaux ci-dessous. Afficher pour chaque catégorie d'animaux poissons,serpents et oiseaux, les animaux correspondants avec un while. Puis un for. Enfin afficher le nombre d'animaux par catégorie. On pourra utiliser each(), list() et count(). "poissons" : "sole", "merlan", "colin", "sardine" "serpents" : "vipère", "couleuvre" "oiseaux" :"merle", "serin", "pie" Exercice 4 : quelques fonctions sur les tableaux ( différence, intersection) Soit un tableaux contenant une liste d'éléments quelconques (animaux, noms de personnes, objets,...). Définir une nouvelle table contenant une partie des éléments du premier tableau mais également des nouveaux. Ces listes sont donc différentes mais présentes une intersection. a) Afficher ces listes. On pourra utiliser each() et list(). b) A l'aide des fonctions ci-dessous, déterminer : 1
- les éléments nouveaux - les éléments anciens disparus dans le nouveau tableau - les éléments communs array_diff() Cette fonction admet deux arguments, tous deux des tableaux. Elle crée un nouveau tableau qui renferme tous les éléments du premier tableau qui ne se trouvent pas dans le second. array_intersect() Cette fonction crée un tableau contenant les éléments communs à deux tableaux passés en arguments. diff-commun.php Exercice 5 : quelques fonctions sur les tableaux ( conversion en tableau, nombre d'éléments identiques, trie,...) Soit un texte quelconque de quelques lignes. Le mettre dans une chaîne de caractères. Calculer un "coefficient d'originalité" d'un texte, qui est ici, le rapport du nombre total d'occurrences multiples des mots dans ce texte au nombre total de mots contenus dans le texte. explode () Elle reçoit deux arguments : un séparateur et la chaîne à analyser. Elle retourne un tableau dont chaque élément est une sous-chaîne comprise entre deux instances du séparateur. Par exemple : $resultat = explode ("et", "un et deux et trois" ) ; produit un tableau possédant trois éléments "un", "deux" et enfin "trois". array_count_values() Cette fonction compte le nombre d'éléments identiques ou doublons présents dans le tableau qui lui est passé en argument. asort () Trie un tableau en ordre normal en maintenant les associations avec les clés. count () La fonction count donne le nombre d'éléments dans un tableau 2
Exercice 6 : Pages dynamiques et passages d'informations entre pages. a. Affichage de chaînes de caractères (formulaire) Réalisez un formulaire qui demande de choisir (balise SELECT) entre plusieurs choix d'équipes sportives (ou entre différents produits commercialisés). Lorsque l'utilisateur clique sur le bouton Soumettre, le navigateur envoie les informations sur une autre page (page de réception) qui affiche un message de soutien ( ou qui affiche le produit commandé). On remarquera qu'il est possible avec GET de tester directement le comportement de la page de réception en tapant directement les éléments nécessaires. b. Affichage d'images (formulaire) Même exercice que précédemment mais on demande l'affichage d'une image sélectionnée, dans une page de réception. La balise de sélection sera du type RADIO. Essayez un nom d'image avec un guillemet simple et notez la transformation que subit ce guillemet simple dans la zone adresse puis la source HTML. c. Affichage d'images (auto-appel de page formulaire+réception) Les deux fichiers précédents sont maintenant fusionnés en une seule page qui s'auto-appelle : le formulaire et son résultat qui est l'image choisie, apparaissent dans une seule et même page. La première fois que la page est affichée, aucune image n'apparaît. d. Affichage de descriptifs. (inclusion de fichiers par les ancres externes) Cette technique permet de standardiser la présentation d'un site. La page présente initialement une liste de produits manufacturés (une liste d'équipes sportives). Si on clique sur un produit quelconque, son descriptif détaillé (la composition de l'équipe) apparaît en bas de page. Chaque descriptif est stocké dans un fichier correspondant. Un fichier exercice.php peut s'auto-appeler comme pour les formulaire mais en utilisant les ancres externes du type : <A HREF="exercice.php?Name=bandeau">bandeau</A> Si l'utilisateur clique sur le lien, la variable Name avec pour contenu bandeau est alors auto-envoyée donc à exercice.php. if ($Name<>"") { include ("$Name.php") ;} 3
Exercice 7 : Structure des enregistrements de session (PHP4) Préalable : cours sur les tableaux et sur les fonctions systèmes. a) Créez différentes variables auxquelles sont affectés des booléens, des chaînes de caractères, des entiers et décimaux. Enregistrez les variables avec leur contenu au cours d'une session. Avec EasyPhp, l'enregistrement se présente sous la forme d'un fichier qui se place dans le répertoire C:/program files/easyphp/tmp/. Vérifiez cette information. Affichez le nom du fichier grâce à l'identificateur de session$phpsessid. b) Lisez son contenu par programme et mettre le résultat dans une variable de type chaîne de caractères. Reconnaissez vos variables avec le type, le contenu, éventuellement le nombre de caractères. Identifiez la structure générale. c) Pour chaque variable, affichez successivement le type (en toutes lettres), le nom de la variable et son contenu. Chaque constituant de variable sera éclaté dans un tableau $tab à l'aide par exemple, de la fonction split() en indiquant un séparateur (également explode()) : $tab = split("+", $entree) substr renvoie une sous-chaîne de la zone spécifiée. strlen() renvoie la longueur de la chaîne. Exercice 8 : analyse d'expressions rationnelles En plus ce ceux donnés dans le cours, voici des motifs sensés tester des e-mails et trouvés dans la littérature. Testez les théoriquement et par programme. Motif 1 : [-_a-za-z0-9.]+@[-_a-za-z0-9.]+ Motif 2 : ^([a-z0-9_] - \.)+@(([a-z0-9_] -)+\.)+[a-z]{2,4}$ Motif 3 : ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ Exercice 9 : conception d'un motif La réalisation de la gestion de la base de donnée de films d'une importante société de production exige l'entrée de tous les réalisateurs dont les e-mails présentent une forme particulière : prénom suivi éventuellement d'un point et d'un nom, puis obligatoirement par un point et le nom de la société multi-nationale "univers" propriétaire de la société de production puis @ puis un nom de domaine puis l'extension ". fr" ou ".uk" ou ".ru". Chaque caractère du prénom et du nom peuvent être soit du type lettre soit un moins (-) soit souligné (_) ou soit numérique. Chaque caractère du domaine est du type lettre. Donnez le motif permettant de tester les e-mails selon le format imposé. 4
Exercice 10 : Recherche et remplacement On demande l'affichage de données entrées par un formulaire qui doit saisir le prénom, le nom, l'adresse URL et une description. Tous les champs sauf la zone description sont à remplir obligatoirement sinon le formulaire est re-proposé. L'utilisateur peut entrer éventuellement dans l'url, la chaîne "http://". Il doit entrer l'adresse URL valide précédée éventuellement d'espaces blancs. N'importe quelle combinaison de lettres, chiffres et caractères.,_?/&=- est acceptée. Après acceptation des données du formulaire, on affichera celles-ci. On devra effectuer la mise en forme de l'url sous forme d'un lien actif qui ouvrira une nouvelle fenêtre si on clique dessus. 5