PHP
PHP
Le langage PHP s'écrit au milieu du HTML entre les balise <?PHP et ?> dans un fichier qui a l'extension .php
Il est finalement assez proche du langage C avec quelques différences qui le rende facile à prendre en main :
Pas besoin de déclarer les variables. On les utilise et c'est tout. Le type d'une variable dépend de son utilisation. Il peut même changer au cours du temps.
Pour s'en sortir d'une telle facilité (et découvrir les variables au fur et à mesure qu'elles apparaissent dans le code) PHP a besoin d'un truc. Le nom de toutes les variables commence par le signe $
Les fonctions ne peuvent ni ne doivent pas déclarer de type de retour (ni void ni int, ni rien). Pour distinguer le début d'une fonction dans le code PHP a besoin qu'elle commencent par le mot function
exemple :
<?php function transformeJSON ($nomJSON){ $jsonString = file_get_contents($nomJSON.".json"); $data = json_decode($jsonString, true); $data["activity_name"] = "TENNIS"; $newJsonString = json_encode($data); file_put_contents($nomJSON."2.json", $newJsonString); } ?>
Ici il n'y a pas de HTML et la fonction transformeJSON n'est n'est jamais appelée donc il ne se passe rien. Par ailleurs PHP peut bien sur transformer un fichier JSON mais son plus grand interêt est de produire quelque chose sous forme de texte avec les fonction print() ou echo
Principalement PHP produira du HTML ou du JSON.
Un exemple de HTML qui affiche une table de multiplication :
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Titre de la page</title> </head> <body> <h1>Exemple</h1> <table border="1"> <?php for ($j=1; $j<10; $j++){ print("<tr>"); for ($i=1; $i<10; $i++){ if ($i==1 or $j==1) print("<th>".($i*$j)."</th>"); else print("<td>".($i*$j)."</td>"); } print("</tr>"); } ?> </table> </body> </html>
Dans cet exemple on voit bien la partie PHP (avec un fond jaune) au milieu du HTML. Lorsque le navigateur demande le fichier PHP, PHP est exécuté sur le serveur est c'est le HTML suivant qui est envoyé au client :
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Titre de la page</title> </head> <body> <h1>Exemple</h1> <table border="1"> <tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr><tr><th>2</th><td>4</td><td>6</td><td>8</td><td>10</td><td>12</td><td>14</td><td>16</td><td>18</td></tr><tr><th>3</th><td>6</td><td>9</td><td>12</td><td>15</td><td>18</td><td>21</td><td>24</td><td>27</td></tr><tr><th>4</th><td>8</td><td>12</td><td>16</td><td>20</td><td>24</td><td>28</td><td>32</td><td>36</td></tr><tr><th>5</th><td>10</td><td>15</td><td>20</td><td>25</td><td>30</td><td>35</td><td>40</td><td>45</td></tr><tr><th>6</th><td>12</td><td>18</td><td>24</td><td>30</td><td>36</td><td>42</td><td>48</td><td>54</td></tr><tr><th>7</th><td>14</td><td>21</td><td>28</td><td>35</td><td>42</td><td>49</td><td>56</td><td>63</td></tr><tr><th>8</th><td>16</td><td>24</td><td>32</td><td>40</td><td>48</td><td>56</td><td>64</td><td>72</td></tr><tr><th>9</th><td>18</td><td>27</td><td>36</td><td>45</td><td>54</td><td>63</td><td>72</td><td>81</td></tr> </table> </body> </html>
Le tableau n'est pas bien indenté mais il s'affiche correctement comme cela dans le navigateur :
Titre de la pageExemple
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
Si l'intérêt de PHP est de sortir du texte, son autre intérêt est aussi d'avoir des entrées. Comme du code PHP est inséré dans une page HTML , ses entrées seront dans l'URL que le navigateur utilise pour charger la page : par exemple
http://localhost:8888/COVIDWeb/untitled.php?lignes=13&colonnes=5
qui donne 2 variables d'entrée au code PHP : la variable lignes qui vaut 13 et la variable colonnes qui vaut 5. Mais comment récupérer cela dans PHP. Il n'y a pas de variable $lignes ou $colonnes mais par contre un tableau associatif $_GET dans le quel on retrouvera ces variables. Si vous aviez envie d'avoir des variables e $lignes ou $colonnes, vloia ce qu'il faut rajouter :
<?php $lignes = $_GET["lignes"]; $colonnes = $_GET["colonnes"]; // la suite ici ... ?>
Mais bien sûr rien ne garantie qu'il y a bien les variables lignes et colonnes dans l'url et si elles n'y sont pas le script PHP va planter. On pensera donc à solidifier son code en rajoutant une valeur par défaut :
<?php if (array_key_exists('lignes', $_GET)) $lignes = $_GET["lignes"]; else $lignes = 10; // la suite ici ... ?>
Mais au fait c'est quoi un tableau associatif comme $_GET ? C'est un super truc comme un tableau qui associe des valeurs à des clés (qui ne sont pas des numéros qui se suivent comme dans un tableau classique mais des chaînes de caractères). Comme toute variable en PHP, pas besoin de le déclarer mais il faut savoir
- que le tableau peut contenir toutes sortes de valeurs (nombre, chaine , booleén, etc. )
- que le tableau peut avoir des indices en chiffres mais c'est derniers sont convertis en nombre
- on peut afficher un tableau "tout d'un coup" avec print_r
<?php $toto["cherche"] = "oui"; $toto["valeur"] = 15; $toto["trouve"] = false; $toto[15] = "c'est ce qu'on cherche"; $toto["15"] = 5; print_r($toto); ?>
qui affiche en plein milieu de ma page web en construction ...
Exemple
Array ( [cherche] => oui [valeur] => 15 [trouve] => [15] => 5 )1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 |
3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 |
4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 |
5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 |
6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 | 66 | 72 |
7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 | 77 | 84 |
8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 88 | 96 |
9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 | 99 | 108 |
Les tableaux associatifs sont omniprésents en PHP mais on les retrouvera en particulier quand on décodera du JSON puisque les objets seront convertis en tableau associatif.
PS: les tableaux associatifs (comme les tableaux standards) peuvent vraiment avoir n'importe quelle valeur ... y compris un tableau associatif. Cela fait donc un tableau associatif de tableau associatif !
et voilà l'exemple au complet
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Titre de la page</title> </head> <body> <h1>Exemple</h1> <table border="1"> <?php if (array_key_exists('lignes', $_GET)) $lignes = $_GET["lignes"]; else $lignes = 10; if (array_key_exists('colonnes', $_GET)) $colonnes = $_GET["colonnes"]; else $colonnes = 10; $toto["cherche"] = "oui"; $toto["valeur"] = 20; $toto["trouve"] = false; $toto[20] = "c'est ce qu'on cherche"; $toto["20"] = 0; // cette valeur remplace la précedente print_r($toto); $colonnes = $_GET["colonnes"]; for ($j=1; $j<$lignes; $j++){ print(" <tr>"); for ($i=1; $i<$colonnes; $i++){ if (($i*$j)==$toto["valeur"]){ print("<th>".($i*$j)."</th>"); $toto["trouve"] = true; $toto[$toto["valeur"]] ++; } else print("<td>".($i*$j)."</td>"); } print("</tr>\n"); } ?> </table> <?php echo $toto["valeur"] . " a été trouvé ".$toto[$toto["valeur"]]." fois" ; // ca affiche 3 fois pour http://localhost:8888/COVIDWeb/untitled.php?colonnes=13&lignes=8 ?> </body> </html>
Que faut-il apprendre de PHP en priorité ?
Comme PHP doit surtout "cracher" du texte (JSON ou HTML) il est important de savoir se débrouiller avec les fonctions de manipulation de chaînes de caractères. Comme nous ne verrons pas les bases de données (objets d'un autre cours) nous utiliserons des fichiers textes pour partager/rendre persistante l'information. Il est donc tres utile de connaitre file_get_contents et file_put_contents et de garder un oeil sur toutes les fonctions de manipulation de fichiers