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

Prochaine révision
Révision précédente
clubinfo:php [2017/11/26 07:52]
127.0.0.1 modification externe
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. 
-===== Sites de référence ===== + 
-  * [[wpfr>PHP|PHP]] sur "Wikipédia" +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. 
-  [[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" +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://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysqlCours PHP et MySQL]] sur "OpenClassrooms"+ 
 +{{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
  
 ===== Connaissances de base ===== ===== Connaissances de base =====
-  * 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. 
-  * Chaque instruction 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. 
-  * 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. 
  
-<file php ma_page.php>+====Les fichiers PHP==== 
 +<WRAP round tip> 
 +  * Les instructions PHP peuvent être placées entre des instructions HTML et rendre dynamique une partie de la page web. 
 +  * Elles sont placées entre les balises "**<?php**" (ouvrante) et "**?>**" (fermante)Chaque instruction PHP doit se terminer 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. 
 +  * 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 /* ... */. 
 +  * 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> 
 + 
 +<code php>
 <?php <?php
   instruction1; // Ceci est une instruction   instruction1; // Ceci est une instruction
Ligne 24: Ligne 33:
   ...   ...
 ?> ?>
-</file>+</code>
  
 ==== Les variables ==== ==== Les variables ====
-  * En PHP, le nom des variables commence par le signe '$'. Une variable peut contenir n'importe quel type de donnée.  +Elles permettent de stocker des informations ou des listes d'informations utiles. 
-<code php>$nom = "mon nom";  +<WRAP round tip> 
-$age = 14;</code> +  * 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 ...). 
-<code php>$identite["nom"] = "mon nom";  +  * Le **symbole d'affectation est =** (donner un contenu à une variable) 
-$identite["age"] = 14;</code> +  * On peut faire les opérations de base (addition, soustraction, multiplication et division) avec les symboles **+, -, * et / **.  
-  Il existe un tableau de variable particulier qui permet de transmettre toutes les variables d'un formulaire $_POST[] +  * 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. 
-  * Le symbole d'affectation (donner un contenu à une variable est '='+  * La concaténation (addition) de 2 textes est possible avec le symbole "**.**"
-  * On peut faire les opérations de base (addition, soustraction, multiplication et divisionavec les symboles (+, -, * et /) <code php>$aniversaire = $age + 1;</code>+</WRAP> 
 + 
 +<code php> 
 +// Variables 
 +$nom = "Dupond";  
 +$age = 14; 
 +// Tableau (liste de variables 
 +$identite[0]["nom"] = "Durand";  
 +$identite[0]["age"] = 16; 
 +$identite[1]["nom"] = "Martin";  
 +$identite[1]["age"] = 13; 
 +// Calculs 
 +$différence_age = $identite[0]["age"] - $identite[1]["age"]; 
 +$age++; // L'age est augmenté de 1 ans 
 +$age *= 2; // L'age est multiplié par 2 
 +</code> 
 + 
 +====Les boucles==== 
 +Pour répéter des instructions plusieurs fois ou sur une liste.  
 +<WRAP round tip> 
 +Il existe plusieurs types de boucles : 
 +  * 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 bornées : **for (début; fin; progressioninstructions;** (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> 
 +  
 +<code php> 
 +  // Répéter tant-que la condition est vraie (compteur de 0 à 9) 
 +  $0; 
 +  while ($x < 10) echo $x++; 
 +   
 +  // Répéter un certain nombre de fois (exemple compteur de 5 à 25 par nombre impair) 
 +  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>
  
 ==== Les choix ==== ==== Les choix ====
-  * Un choix ne peut avoir que 2 résultats "if" et "else". La partie "else" n'est pas obligatoire. +Pour décider le traitement à effectuer en fonction d'un contenu de variable. 
-<code php>if (condition) instruction; ou {bloc instruction} +<WRAP round tip> 
-else instruction; ou {bloc instruction}</code> +  * Un choix ne peut avoir que 2 résultats (vrai/faux) **if (condition) instructions-si-vrai; else instructions si faux;** 
-  * 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 >=.+  * 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 >=** 
 +  * L'instruction **switch (variable) case valeur: instructions;** est une autre façon d'enchaîner des choix (variable = valeur du case). 
 +</WRAP> 
 + 
 +<code php> 
 +// if else 
 +  if ($sexe == "M") echo "Masculin";  
 +  else if ($sexe == "F") echo "Féminin";  
 +  else echo "Indéterminé"; 
 +   
 +// switch case 
 +  switch ($sexe) { 
 +    case "M": echo "Masculin"; break; 
 +    case "F": echo "Féminin"; break; 
 +    default: echo "Indéterminé";  
 +  } 
 +</code>
  
 ==== Les fonctions ==== ==== Les fonctions ====
-  * 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.+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> 
 +  * 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> 
 <code php> <code php>
 <?php <?php
Ligne 54: Ligne 120:
   function mon_addition (a, b) {   function mon_addition (a, b) {
     echo "Calcul de a + b <br/>";     echo "Calcul de a + b <br/>";
-    $= $a + $b; +    $= $a + $b; 
-    return $c;+    return $x;
   }   }
      
Ligne 61: Ligne 127:
   $a = 2; echo "a = " . $a . "<br/>";   $a = 2; echo "a = " . $a . "<br/>";
   $b = 5; echo "b = " . $b . "<br/>";   $b = 5; echo "b = " . $b . "<br/>";
-  $= mon_addition ($a, $b); +  $= mon_addition ($a, $b); 
-  echo "Le résultat est " . $. "<br/>":+  echo "Le résultat est " . $. "<br/>":
  ?>  ?>
 </code> </code>
  
 ==== L'affichage des résultats ==== ==== L'affichage des résultats ====
-  * Pour afficher un texte ou des résultats dans le navigateur, il faut les transformer en HTML avec l'instruction echo +<WRAP round tip> 
-  ** On peut mélanger du texte et des variables avec le symbole de concaténation "."  +Pour afficher un texte ou des résultats dans le navigateur, il faut les transformer en HTML : 
-<code php>echo "Votre age est "; echo $age; +  * **echo** résultat; (L'instruction peut mélanger du texte et des variables avec le symbole de concaténation **.**) 
-echo "Votre age est " . $age;</code>+  * **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é===== 
 +  * [[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) 
 +  * Affichage d'un pont en base de donnée (nécessite de connaître le SQL)
  
-===== Exemple ===== 
-Pour traiter les données envoyées par le visiteur à l'aide de la page "[[html:formulaires]]" en HTML. 
-<file php reponse.php> 
-<?php 
-if ($_POST["sexe1"] == "M") $sexe = "Monsieur"; 
-else if ($_POST["sexe1"] == "F") $sexe = "Madame"; 
-else $sexe = "?"; 
-echo "Bonjour " . $sexe . " " . $_POST["prenom"] . " " . $_POST["nom"]; 
-?> 
-</file> 
clubinfo/php.1511679165.txt.gz · Dernière modification: 2017/11/26 07:52 de 127.0.0.1