Valid XHTML     Valid CSS2    

Développement Web avancé L2 (PHP et MySQL)

TP numéro 1

                     gilles.hunault "at" univ-angers.fr

 

Table des matières cliquable

  1. PHP cli : date, heure et numéro de version

  2. PHP cli : conversion pouces/cm

  3. PHP -a et test rapide de fonction

  4. Gestion Web de l'affichage avec \n,<br> et <p>

  5. Combien de tests ?

  6. Affichage XHTML de milles terrestres

  7. Affectations multiples

  8. Une fonction pour <h1>

  9. Occurences du maximum d'un tableau

10. La structure de données "pile" version 1

11. Polynome quand tu nous tiens

 

Il est possible d'afficher toutes les solutions via ?solutions=1.

 

Rappel : vos programmes PHP doivent être transférés sur le serveur forge dans votre répertoire forge_html avant d'être utilisés. Vous pouvez les éditer sous Windows ou sous Linux, mais au final ils doivent être exécutés sur forge. Il faut utiliser ssh -X -Y login@janus.info.univ-angers.fr pour vous connecter ou ssh -X -Y login@forge si vous êtes dans une des salles locales de TP.

 

1. PHP cli : date, heure et numéro de version

Ecrire un programme PHP qui fonctionne en mode CLI (ligne de commande) qui affiche la date et l'heure et le numéro de la version du PHP utilisé sur le serveur.

A quoi sert l'instruction nommée phpinfo() ?

Solution :  

 

2. PHP cli : conversion pouces/cm

Ecrire un programme PHP qui fonctionne en mode CLI qui a besoin de deux paramètres : une valeur numérique et le mot "pouces" ou le mot "cm". On effectuera alors la conversion idoine, sachant qu'un pouce vaut 2,54 cm. Voici un exemple de ce qu'on voudrait comme fonctionnement :


     $gh> php convcminch.php
     
      Désolé, mais je n'ai pas assez d'informations pour convertir.
      Vous devez fournir un nombre et le mot pouces ou le mot cm.
      Par exemple, si vous tapez php convcminch.php 9 pouces, je ferai la conversion en centimètres.
     
     $gh> php convcminch.php 10 pouces
      10 pouces = 25.4 cm.
     
     $gh> php convcminch.php 10 cm
      10 cm = 3.9370078740157 pouces.
     
     # mieux :
     
     $gh> php convcminch.php 10 cm
      10 cm = 3.94 pouces (arrondi).
     
     

Volontairement, on n'utilisera aucune fonction et on ne fera aucun test sur la valeur numérique afin de voir commment PHP se comporte en cas de donnée mal typée.

Y a-t-il une façon standard d'écrire des paramètres sous Linux ?

Ecrire un programme similaire qui fonctionne avec les paramètres val et unit passés en méthode GET dans l'URL. Voir la page convcminch2.php comme exemple. On pourra utiliser les fichiers debutpage.php et finpage.php de l'archive debutfin.zip pour générer le début et la fin de la page.

Ecrire enfin une page XHTML Strict valide basée sur le "squelette" de page sqs.htm avec un formulaire dont l'attribut action est convcminch2.php.

Solution :  

 

3. PHP -a et test rapide de fonction

Quelqu'un vous dit que la fonction ucfirst() fait une «quasi uppérisation» d'une chaine de caractères. Avez-vous besoin d'écrire un programme php pour tester ce que fait cette fonction ?

Solution :  

 

4. Gestion Web de l'affichage avec \n,<br> et <p>

Téléchargez l'archive debutfin.zip et reproduisez le programme suivant que vous nommerez essaipage.php. Où seront les sauts à la ligne dans la page Web ? Et dans le code-source généré de la page Web ? Que se passe-t-il s'il y a une erreur, par exemple si on écrit echi au lieu de echo ? Au passage, rappelez où on peut trouver une liste des entités XHTML.

On en profitera pour installer HTML VALIDATOR de M. Gueury.


     <?php
     
     require "debutpage.php" ;
     
     echo "<h1>Page valide</h1>\n" ;
     
     echo "<p>Bonjour \n à tous " ;
     echo "  et       à " ;
     echo "toutes.<br />A bient&ocirc;t.</p> " ;
     
     require "finpage.php" ;
     
     ?>
     

Il est possible de rapatrier l'archive et de la décompresser en ligne de commandes (dans le bon répertoire !) via :


     > cd ~/forge_html/
     > wget http://forge.info.univ-angers.fr/~gh/internet/debutfin.zip
     > unzip debutfin.zip
     

Solution :  

 

5. Combien de tests ?

Combien de cas faut-il envisager et tester avant d'être convaincu que le programme en ligne de commande convcminch.php est correct et qu'on a «tout prévu» ?

Au passage, quelle est la différence entre développer et programmer ?

Solution :  

 

6. Affichage XHTML de milles terrestres

Reproduire la page mille.php. On utilisera debutpage.php et finpage.php comme précédemment mais aussi std.css afin d'avoir une page XHTML valide et «jolie». On produira le tableau avec une seule boucle pour dont l'indice variera de 1 à 15. Les valeurs seront arrondies et affichées à droite avec deux décimales.

Solution :  

 

7. Affectations multiples

Il parait qu'il est possible de réaliser en PHP des affectations multiples avec list. Est-ce vrai ? A quoi cela peut-il servir ?

Solution :  

 

8. Une fonction pour <h1>

On voudrait implémenter une fonction pour produire des titres de niveau 1 avec <h1>. Ecrire une fonction achin() qui correspond au comportement suivant :


      achin()                     ; # affiche un titre <h1> xhtml vide mais valide
      achin("bonjour")            ; # affiche <h1>bonjour</h1>\n
      achin("oui","grouge","t25") ; # affiche <h1 class='grouge' id='t25'>oui</h1>\n
     
      achin("oui","grouge","t25","onclick='show()'") ;
      # affiche <h1 class='grouge' id='t25' onclick='show()'>oui</h1>\n
     

Quelle serait la syntaxe pour avoir juste une indication de classe ? Et d'id ?

Solution :  

 

9. Occurences du maximum d'un tableau

On voudrait trouver la plus grande valeur d'un tableau et le nombre de fois où elle apparait. Pour cela, on commencera par écrire une fonction valMax($leTableau) qui calcule la plus grande valeur du tableau et on utilisera une deuxième boucle pour compter le nombre d'occurences du maximum.

Recommencer l'exercice en utilisant cette fois une seule boucle pour déterminer à la fois le maximum et son nombre d'occurences. On utilisera les valeurs 1 8 2 8 3 6 8 2 comme jeu d'essai dans un premier temps. Dans un second temps, on utilisera les valeurs "a", "b", "oui", "c", "oui", "d" comme jeu d'essai. On donnera aussi la position de la première et de la dernière occurence du maximum. On pourra se contenter d'une version en ligne de commandes.

Solution :  

 

10. La structure de données "pile" version 1

On voudrait implémenter en ligne de commandes la notion de pile où on ne peut ajouter qu'en haut de pile. Pour cela on utilisera un tableau PHP. Voici un exemple de ce qu'on voudrait pouvoir écrire :


     $p = creerPile()   ; # un simple tableau
     montrerPile($p)    ; # doit afficher "la pile est vide"
     
     $p = empiler(5,$p) ; # la pile ne contient que 5
     $p = empiler(2,$p) ; # la pile contient 5 et, au-dessus, 2
     montrerPile($p)    ; # affiche 5 (bas de la pile) et 2 (haut de la pile)
     
     list($x,$p) = depiler($p) ; # renvoie 2 dans x et modifie p
     echo "on a enlevé $x (du haut) de la pile\n" ;
     list($y,$p) = depiler($p) ; # renvoie 5 dans y et modifie p
     list($x,$p) = depiler($p) ; # afficher "impossible, la pile est vide" ou renvoyer "erreur"  ?
     

Implémenter les fonctions citées en utilisant seulement return(), array(), count(), l'indexation et unset().

Comment dit-on une pile en anglais ? Et empiler ? Et dépiler ? Y a-t-il des fonctions PHP prévues pour cela ?

Solution :  

 

11. Polynome quand tu nous tiens

Contrairement à ce qu'on croit dans les «petites classes», un polynome n'est pas une fonction de x, mais un "objet mathématique" défini par une liste de coefficients. Par exemple la liste

               

correspond à x3 -2 x + 6 avec les puissances décroissantes, et à 1 - 2 x2 + 6 x3 avec les puissances croissantes.

Ecrire un programme PHP qui lit une telle liste et qui affiche le polynome comme ci-dessus.

Pour les plus courageuses et les plus courageux, implémenter la saisie d'un deuxième polynome, puis calculer et afficher leur somme, leur produit, leur polynome équivalent à leur fonction primitive et celui de leur fonction dérivée.

Solution :  

 

Code-source php de cette page ; code javascript utilisé. Retour à la page principale du cours.

 

 

retour gH    Retour à la page principale de   (gH)