Outils pour utilisateurs

Outils du site


clubinfo:php

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
clubinfo:php [2023/07/24 10:39]
mrcjl [Activité]
clubinfo:php [2024/08/19 17:08] (Version actuelle)
mrcjl [Activité]
Ligne 1: Ligne 1:
-====== PHP : Hypertext Preprocessor ====== +======Découverte du PHP : Hypertext Preprocessor ====== 
-PHP est un langage de programmation très en vogue et très performant pour créer des sites web dynamiques.+PHP est un langage de programmation interprété développé dès 1995 par Rasmus Lerdorf. Son succès tient à son efficacité pour créer des sites web dynamiques. 
 + 
 +En effet, contrairement aux pages HTML statiques (dont le contenu est fixé par le développeur du site), il permet d'écrire des pages dynamiques personnalisées en fonction des interactions avec l'utilisateur. Il a permis de créer un grand nombre de sites web célèbres, comme Facebook et Wikipédia. 
 + 
 +Contrairement au HTML et au CSS, il n'est pas directement exploitable par les navigateurs et nécessite qu'un serveur génère le code HTML à la demande. Nous allons donc, pour le tester, utiliser un serveur web utilisable à partir d'une clé USB qui le supporte, ce sera [[http://www.xgarreau.org/zazouminiwebserver/|Zazou Mini Web Server (ZMWS)]] 
 {{https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/320px-PHP-logo.svg.png?50 |Logo PHP}} {{https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/320px-PHP-logo.svg.png?50 |Logo PHP}}
 Aujourd'hui la référence est PHP7 mais ZMWS ne supporte que PHP5.1.2 Aujourd'hui la référence est PHP7 mais ZMWS ne supporte que PHP5.1.2
-<WRAP round info> +
-===Référence === +
-  * [[wpfr>PHP|PHP]] sur "Wikipédia" +
-  * [[https://secure.php.net/manual/fr/index.php|La référence du langage]] sur "php.net" +
-  * [[https://www.w3schools.com/php/default.asp|Tutoriel PHP]] sur "w3schools" +
-  * [[https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql| Cours PHP et MySQL]] sur "OpenClassrooms" +
-</WRAP>+
 ===== Connaissances de base ===== ===== Connaissances de base =====
  
 ====Les fichiers PHP==== ====Les fichiers PHP====
 <WRAP round tip> <WRAP round tip>
-  * Un fichier PHP (index.php, page1.php ...) ne peut être utilisé qu'a partir d'un serveur+  * Les instructions PHP peuvent être placées entre des instructions HTML et rendre dynamique une partie de la page web
-  * Les instructions PHP doivent être placées entre les balises "<?php" et "?>" à l'intérieur d'une page ayant l'extension (*.php). La page peut aussi contenir du HTML à l'extérieur des balises PHP. +  * Elles sont placées entre les balises "**<?php**(ouvrante) et "**?>**" (fermante). Chaque instruction PHP doit se terminer par le symbole '**;**'. 
-  * Chaque instruction PHP se termine par le symbole ';'.  +  * Une liste d'instruction liées ensembles se place entre accolades "**{ instruction 1; instruction 2 ; }**". On passe généralement à la ligne entre chaque instruction et on se décale (indentation) à l'intérieur des accolades. 
-  * Une liste d'instruction liées ensembles se place entre accolades '{ instruction 1; instruction 2 ; }'. On passe généralement à la ligne entre chaque instruction et on se décale (indentation) à l'intérieur des accolades. +  * Des commentaires peuvent être utilisées pour expliquer ce que font les instructions. Ils débutent par les symboles %%//%% et se terminent à la fin de la ligne ou comprennent plusieurs lignes placées entre /* ... */
-  * Les commentaires ne servent qu'à expliquer ce que l'on fait. Ce ne sont pas des instructions. Ils débutent par les symboles %%//%% et se terminent à la fin de la ligne ou comprennent plusieurs lignes placées entre /* ... */.+  * Pour être interprété, un fichier contenant des instructions PHP doit avoir une extension ".php" (index.php, page1.php ...) et être placé sur un serveur compatible. 
 +  * Les fichiers PHP peuvent sur le serveur être mélangés aux fichiers HTML et CSS. Le serveur les interprétera et remplacera les instructions PHP par du code HTML avant d'envoyer le contenu au navigateur
 </WRAP> </WRAP>
  
-<file php ma_page.php>+<code php>
 <?php <?php
   instruction1; // Ceci est une instruction   instruction1; // Ceci est une instruction
Ligne 33: Ligne 33:
   ...   ...
 ?> ?>
-</file>+</code>
  
 ==== Les variables ==== ==== Les variables ====
 +Elles permettent de stocker des informations ou des listes d'informations utiles.
 <WRAP round tip> <WRAP round tip>
   * En PHP, le nom des variables commence par le signe **$**. Une variable peut contenir n'importe quel type de donnée.    * En PHP, le nom des variables commence par le signe **$**. Une variable peut contenir n'importe quel type de donnée. 
-  * Un tableau est une variable contenant plusieurs autres variables placées entre crochets. +  * Un tableau est une variable permettant d'en gérer plusieurs autres (placées entre crochets) en une seule fois. Il permet de générer des listes de choses définies par plusieurs informations (liste de personnes, d'objets de données ...)
-  * Le symbole d'affectation (donner un contenu à une variable est **=**+  * Le **symbole d'affectation est =** (donner un contenu à une variable) 
-  * On peut faire les opérations de base (addition, soustraction, multiplication et division) avec les symboles **+, -, * et / ** +  * On peut faire les opérations de base (addition, soustraction, multiplication et division) avec les symboles **+, -, * et / **.  
 +  * Des opérateurs spéciaux : (++ ou --) permettent d'incrémenter (+1) ou décrémenter (-1) une variable, (+= -= *= /= ) permettent de modifier le la variable concernée. Ils permettent une écriture plus concise. 
 +  * La concaténation (addition) de 2 textes est possible avec le symbole "**.**".
 </WRAP> </WRAP>
  
 <code php> <code php>
-$nom = "mon nom"; +// Variables 
 +$nom = "Dupond"; 
 $age = 14; $age = 14;
-$identite["nom"] = "mon nom";  +// Tableau (liste de variables 
-$identite["age"] = 14+$identite[0]["nom"] = "Durand";  
-$anniversaire = $age + 1; +$identite[0]["age"] = 16
-</code> +$identite[1]["nom""Martin";  
- +$identite[1]["age"] = 13
-==== L'affichage des résultats ==== +// Calculs 
-<WRAP round tip> +$différence_age = $identite[0]["age"] - $identite[1]["age"]
-  * Pour afficher un texte ou des résultats dans le navigateur, il faut les transformer en HTML avec l'instruction : **echo** +$age++; // L'age est augmenté de 1 ans 
-  * On peut mélanger du texte et des variables avec le symbole de concaténation **.**  +$age *= 2// L'age est multiplié par 2
-</WRAP> +
- +
-<code php> +
-  echo "Votre age est ";  +
-  echo $age; +
-  // ou +
-  echo "Votre age est " . $age;+
 </code> </code>
  
 ====Les boucles==== ====Les boucles====
 +Pour répéter des instructions plusieurs fois ou sur une liste. 
 <WRAP round tip> <WRAP round tip>
 Il existe plusieurs types de boucles : Il existe plusieurs types de boucles :
-  * Boucles conditionnelles : **while (condition) instructions; do instructions while (condition);** +  * Boucles conditionnelles : **while (condition) instructions;** (instructions seulement si la condition est vraie) ou **do instructions while (condition);** (instructions au moins une fois puis tant que la condition est vraie) 
-  * Boucles compteurs : **for (debut; fin; progression) instructions;**+  * Boucles bornées : **for (début; fin; progression) instructions;** (de la valeur de la variable de début à la condition de fin en étape fixées par la progression) 
 +  * Boucles itératives : **foreach (liste as variable) instructions;** (chaque valeur de la liste devient variable et est traité par les instructions)
 </WRAP> </WRAP>
    
 <code php> <code php>
-  // Répéter tant-que la condition est vraie+  // Répéter tant-que la condition est vraie (compteur de 0 à 9)
   $x = 0;   $x = 0;
-  while ($x < 10) +  while ($x < 10) echo $x++;
-    echo $x+
-    $x = $x 1; +
-  }+
      
   // Répéter un certain nombre de fois (exemple compteur de 5 à 25 par nombre impair)   // Répéter un certain nombre de fois (exemple compteur de 5 à 25 par nombre impair)
-  for ($x = 5; $x <= 25; $x = $x + 2) echo $x;+  for ($x = 5; $x <= 25; $x +2) echo $x
 +   
 +  // Répéter pour toutes les personnes (augmenter l'age d'un an) 
 +  foreach ($identite as $personne) $personne["age"] = $personne["age"] + 1
 </code> </code>
  
 ==== Les choix ==== ==== Les choix ====
 +Pour décider le traitement à effectuer en fonction d'un contenu de variable.
 <WRAP round tip> <WRAP round tip>
-  * Un choix ne peut avoir que 2 résultats (vrai/faux) **if (condition) instructions-si-vrai; else instructions si faux;**. La partie "else" n'est pas obligatoire.+  * Un choix ne peut avoir que 2 résultats (vrai/faux) **if (condition) instructions-si-vrai; else instructions si faux;**.  
 +  * La partie "else" n'est pas obligatoire. Plusieurs choix peuvent se succéder avec **else if**
   * Les opérateurs de comparaison pour les conditions sont : **égal ==, différent !=, inférieur <, supérieur >. On peut ajouter un signe égal à inférieur et supérieur <= et >=**   * Les opérateurs de comparaison pour les conditions sont : **égal ==, différent !=, inférieur <, supérieur >. On peut ajouter un signe égal à inférieur et supérieur <= et >=**
 +  * L'instruction **switch (variable) case valeur: instructions;** est une autre façon d'enchaîner des choix (variable = valeur du case).
 </WRAP> </WRAP>
  
 <code php> <code php>
-  if (conditioninstruction+// if else 
-  else instruction; +  if ($sexe == "M"echo "Masculin";  
-// exemple la variable x varie de 0 à 9 indéfiniment +  else if ($sexe == "F") echo "Féminin";  
-  $x = 0+  else echo "Indéterminé"
-  while (true) { +   
-    if ($x == 10) $x = 0+// switch case 
-    else $x = x + 1+  switch ($sexe) { 
-    echo $x;+    case "M": echo "Masculin"; break
 +    case "F": echo "Féminin"; break
 +    default: echo "Indéterminé"
   }   }
 </code> </code>
  
 ==== Les fonctions ==== ==== Les fonctions ====
 +Il existe un très grand nombre de fonctions (voir la [[https://www.php.net/manual/fr/indexes.functions.php|référence du langage]]). Il est possible pour l'utilisateur de créer ses propres fonctions.
 +
 <WRAP round tip> <WRAP round tip>
-  * Il existe un très grand nombre de fonctions (voir la référence du langage). Une fonction a un nom et est suivie de parenthèse.+  * Une fonction a un nom et il est suivi de parenthèse.
   * Il est possible de passer des paramètre à une fonction en les mettant séparé par des virgules dans les parenthèses.   * Il est possible de passer des paramètre à une fonction en les mettant séparé par des virgules dans les parenthèses.
   * Une fonction peut renvoyer un résultat.   * Une fonction peut renvoyer un résultat.
-  * Il est possible de créer ses propres fonctions. 
 </WRAP> </WRAP>
  
Ligne 126: Ligne 131:
  ?>  ?>
 </code> </code>
 +
 +==== L'affichage des résultats ====
 +<WRAP round tip>
 +Pour afficher un texte ou des résultats dans le navigateur, il faut les transformer en HTML :
 +  * **echo** résultat; (L'instruction peut mélanger du texte et des variables avec le symbole de concaténation **.**)
 +  * **printf("chaîne de format", résultat);** (printf est une fonction)
 +</WRAP>
 +
 +<code php>
 +  echo "Votre age est " . $age . " ans."; // Pour écrire à l'écran l'age et passer sur la ligne suivante
 +  printf ("L'age de %s est %d ans.", $nom, $age); // La même chose mais en plus puissant (%s = texte %d = nombre ...)
 +</code>
 +
 +<WRAP round info>
 +Les sorties PHP ne différencient pas les espaces, tabulations (indentation) et saut de ligne. Pour générer un code HTML lisible on peut insérer des caractères spéciaux (\t pour l'indentation et \n pour le saut de ligne).
 +
 +Le code : foreach ($identite as $individu) printf ("L'age de %s est %d ans.", $individu["nom"], $individu["$age"]); donne le résultat suivant : L'age de Durand est 16 ans.L'age de Dupond est 13 ans. (sur une seule ligne)
 +
 +Le code : foreach ($identite as $individu) printf ("L'age de %s est %d ans.\n", $individu["nom"], $individu["$age"]); donne le résultat suivant : \\ L'age de Durand est 16 ans. \\ L'age de Martin est 13 ans. (sur 2 ligne)
 +</WRAP>
 +
 +<WRAP round todo>
 +  * Si besoin, ne pas oublier de mettre dans les sorties PHP les balises HTML utiles.
 +  * Ne pas confondre les caractères spéciaux (\t et \n) pour générer du code HTML lisible par l'utilisateur et les balises <p></p> et <br/> pour les passages à la ligne gérés par le navigateur.
 +</WRAP>
 +
 +=====Compléments=====
 +<WRAP round info>
 +===Référence ===
 +  * [[wpfr>PHP|PHP]] sur "Wikipédia"
 +  * [[https://secure.php.net/manual/fr/index.php|La référence du langage]] sur "php.net"
 +  * [[https://www.w3schools.com/php/default.asp|Tutoriel PHP]] sur "w3schools"
 +  * [[https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql| Cours PHP et MySQL]] sur "OpenClassrooms"
 +</WRAP>
  
 =====Activité===== =====Activité=====
-  * [[clubinfo:Premiere_page_avec_PHP|]] :Génération automatique du sommaire des ponts+  * [[clubinfo:php2|Traitement d'un formulaire]] 
 +  * [[clubinfo:php3|Premiere page avec PHP|]] : Génération automatique du sommaire des ponts
   * Ajout d'un nouveau pont en base de donnée (nécessite de connaître le SQL)   * Ajout d'un nouveau pont en base de donnée (nécessite de connaître le SQL)
   * Affichage d'un pont en base de donnée (nécessite de connaître le SQL)   * Affichage d'un pont en base de donnée (nécessite de connaître le SQL)
  
clubinfo/php.1690187955.txt.gz · Dernière modification: 2023/07/24 10:39 de mrcjl