Balises PHP Variables, formatage des données
Transcription
Balises PHP Variables, formatage des données
O. Auzende Ingénierie Web PHP PHP est un langage destiné à l’écriture de scripts dans une page Web dont l’extension est alors .PHP. Le code des scripts est exécuté par le serveur à chaque affichage de la page. Les scripts sont alors remplacés par le résultat de leur exécution. Pour faire exécuter des pages PHP, il faut disposer d’Apache (sous Linux) ou de easyPHP (sous Windows). A noter : easyPHP est un serveur de développement, pas un serveur de déploiement. On place les pages dans un sous-dossier de C:\Program Files\easyPHP…\www L’appel se fait par http://localhost/nom-du-dossier/page.php. Balises PHP Le code PHP est encadré par des balises PHP. Il y a différents styles de balise PHP : <?php ... Code PHP ... ?> o Les balises par défaut : o Les balises d’ouverture courtes 1 : <? ... Code PHP ... ?> o Les balises <script>: <SCRIPT LANGUAGE="php">...Code PHP ...</SCRIPT> Quand l’interpréteur PHP rencontre la balise d’ouverture, il interprète tous les caractères rencontrés jusqu’à ce qu’il trouve la balise de fermeture. Le script est alors exécuté et remplacé par le résultat qu’il produit. Un affichage est provoqué par la commande echo. Variables, formatage des données o Les variables du langage sont représentées par un identificateur précédé du signe $, quel que soit le type de la variable : nombre (valeur numérique), chaîne de caractères, tableau, objet composite. o Pour créer des variables avec PHP, il suffit d’en faire usage. Il est donc inutile de les déclarer. <html> <body> <?php $a = 58 ; $b = 97 ; $som = $a+$b; $prod = $a*$b ; echo "a = $a"; echo "<br />"; echo "b = $b"; echo "<br />"; echo "La somme est : $som"; echo "<br />"; echo "Le produit est : $prod "; ?> </body> </html> Les chaînes de formatage utilisées avec la fonction printf permettent de simplifier les affichages : <html> <body> <?php $a = 58 ; $b = 97 ; $som = $a+$b; $prod = $a*$b ; printf("a = %s<br />b = %s<br />La somme est : %s<br />Le produit est : %s", $a, $b, $som, $prod); ?> </body> </html> 1 Attention : le serveur Apache doit être configuré pour accepter les balises courtes. Dans le doute, utiliser les balises par défaut. 1 o Si la variable $x représente un tableau avec un index numérique, on accède aux éléments individuels par la spécification $x[0], $x[1], etc. Les indices commencent à 0 ou à 1 (au choix). o Si la variable $x représente un tableau avec un index associatif (un type énuméré tel que ("lundi", "mardi", "mercredi", etc.), on accède aux éléments individuels par la spécification $x["lundi"], $x["mardi"], etc. o Les tableaux PHP peuvent avoir un index mixte (associatif et numérique). Ainsi, les éléments $x["lundi"] et $x[1] peuvent appartenir au même tableau. Exemple : $tab[1]="lundi"; $tab[2]="mardi"; $tab[3]="mercredi"; $tab[4]="jeudi"; $tab[5]="vendredi"; $tab[6]="samedi"; $tab[7]="dimanche"; $tab["lundi"]="monday"; $tab["mardi"]="tuesday"; $tab["mercredi"]="wednesday"; $tab["jeudi"]="thursday"; $tab["vendredi"]="friday"; $tab["samedi"]="saturday"; $tab["dimanche"]="sunday"; Structures de contrôle Les structures de contrôle sont les mêmes qu’en C, C++, javaScript, java : Boucle for : for (initialisation ; test ; incrémentation) { ... } Page jours.php <html> <head><title>utilisation de tableau en PHP</title></head> <body> <p>Jours de la semaine en français et en anglais</p> <?php $tab[1]="lundi"; $tab[2]="mardi"; $tab[3]="mercredi"; $tab[4]="jeudi"; $tab[5]="vendredi"; $tab[6]="samedi"; $tab[7]="dimanche"; $tab["lundi"]="monday"; $tab["mardi"]="tuesday"; $tab["mercredi"]="wednesday"; $tab["jeudi"]="thursday"; $tab["vendredi"]="friday"; $tab["samedi"]="saturday"; $tab["dimanche"]="sunday"; echo "<table border='1'>\n"; for ($i = 1; $i < 8 ; $i++) { echo "<tr><td>",$tab[$i],"</td><td>",$tab[$tab[$i]],"</td></tr>"; } echo "</table>"; ?> </body> </html> Page jours2.php <html> <head><title>utilisation de tableau en PHP</title></head> <body> <p>Jours de la semaine en français et en anglais</p> <?php $tab[1]="lundi"; $tab[2]="mardi"; $tab[3]="mercredi"; $tab[4]="jeudi"; $tab[5]="vendredi"; $tab[6]="samedi"; $tab[7]="dimanche"; $tab["lundi"]="monday"; $tab["mardi"]="tuesday"; $tab["mercredi"]="wednesday"; $tab["jeudi"]="thursday"; $tab["vendredi"]="friday"; $tab["samedi"]="saturday"; $tab["dimanche"]="sunday"; echo "<table border='1'>\n"; for ($i = 1; $i < 8 ; $i++) { printf("<tr><td>%s</td><td>%s</td></tr>",$tab[$i],$tab[$tab[$i]]); } echo "</table>"; ?> </body> </html> 2 O. Auzende Ingénierie Web Test : if (test) { ... } else { ...} Page comptes.php <html> <head><title>Entiers aleatoires</title></head> <body> <p>Je tire 100 entiers au hasard entre 1 et 100.<p> <?php $compteur1 = 0 ; $compteur2 = 0 ; srand(); for ($i=0; $i<100; $i++) { $randval = rand(1,100); if ($randval > 50) { $compteur1++ ; } else { $compteur2++; } } printf("Sur 100 tirages, il y a : <br />- %d entiers supérieurs à 50 <br />- %d entiers inférieurs ou egaux à 50.", $compteur1, $compteur2); ?> </body> </html> Boucle tant que : while (test) { ... } Boucle faire … tant que : do { ... } while (test); <html> <head><title>Entiers aléatoires</title></head> <body> <p>Je remplis un tableau de 30 entiers au hasard entre 1 et 100</p> <?php srand(); for ($i = 0 ; $i < 30 ; $i++){ $tab[$i] = rand(1,100); } ?> <p>Je les affiche tous : </p> <?php for ($i = 0 ; $i < 30 ; $i++){ echo "$tab[$i] * "; } ?> <p>Je les affiche tant qu'ils sont plus petits que 70 :</p> <?php $i = 0 ; while (($i < 30) && ($tab[$i] < 70)) { echo "$tab[$i] * "; $i++ ; } ?> <p>J'affiche le premier puis les suivants tant qu'ils sont plus petits que le premier :</p> <?php $i = 0 ; do { echo "$tab[$i] * "; $i++ ; } while (($i < 30) && ($tab[$i] < $tab[0] )); ?> </body> </html> 3 Fonctions PHP Page carres.php <html> <head><title>fonctions</title></head> <body> <?php function carre ($num) { return $num * $num; } function cube($num) { return $num * $num * $num ; } ?> <p>Carrés et cubes des nombres entiers de 1 à 10</p> <?php echo "<table border='1'>"; for ($i=1;$i<=10;$i++){ printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>", $i, carre($i), cube($i)) ; } echo "</table>"; ?> </body> </html> Les fonctions sont généralement déclarées dans un fichier externe que l’on inclut dans des pages PHP par un script : <?php include "fichier.php" ; ?> L’avantage est qu’il suffit d’ajouter la ligne <?php include "fichier.php" ; ?> dans une page PHP quelconque pour pouvoir utiliser toutes les fonctions figurant dans « fichier.php ». Exercices 1) Ecrire une page PHP qui remplit un tableau $tab avec 50 entiers aléatoires compris entre 1 et 100 et fait afficher ces 50 entiers, séparés par des tirets. 2) Ajouter ensuite le calcul de la somme des éléments du tableau, puis de leur moyenne, puis la recherche du plus grand élément et celle du plus petit élément du tableau. Variables provenant d'un formulaire Page formulaire2.html <html> <head> <title>Variables de formulaire</title> </head> <body> <form action="valeurs.php" method="get"> <table> <tr><td>Nom :</td><td><input type="text" name="nom"></td></tr> <tr><td>Prenom : </td><td><input type="text" name="prenom"></td></tr> <tr><td>Ordinateur : </td> <td><select name="ordinateur"> <option value="pc">PC</option> <option value="mac">MAC</option> <option value="sun">Station Sun</option> <option value="autre">Autre</option> </select></td></tr> </table> <input type="submit" value="Valider"> </form> </body> </html> 4 O. Auzende Ingénierie Web Page valeurs.php <html> <head><title>Récupération des valeurs des variables</title></head> <body> <p>Vous avez donné comme renseignements :</p> <table> <?php $nom=$_GET["nom"]; echo "<tr><td>Nom : </td><td>$nom</td></tr>" ; $prenom=$_GET["prenom"]; echo "<tr><td>Prénom :</td><td>$prenom</td></tr>" ; $ordinateur=$_GET["ordinateur"]; echo "<tr><td>Ordinateur : </td><td>$ordinateur</td></tr>"; ?> </table> </body> </html> On récupère les valeurs des variables par $_GET["nom"] ou $_POST["nom"] selon la méthode de transmission des arguments employée. Exercices 1) Ecrire une page requete.html comportant un formulaire demandant le nom de l’utilisateur, son mail et le support de cours souhaité (proposé par une liste de sélection comportant « Mathématiques », « Histoire », « Géographie », « Philosophie »). Un seul support pourra être demandé à chaque requête. La méthode sera POST, la page réponse sera reception.php. 2) Ecrire une page reception.php toute simple accusant réception de la commande, rappelant le nom du demandeur, son mail, ainsi que l’intitulé du support demandé. 5