====== PHP ======
===== Présentation =====
Parmi les nombreux langages qui permettent de construire des pages web dynamiquement en fonction d’un contexte et des demandes de l’utilisateur, le langage PHP a bénéficié de son association avec le principal serveur Web (Apache) et un système de gestion de base de données qui, en quelques années, a évolué jusqu’à devenir un outil professionnel relativement complet et performant (MySQL).
Il ne s’agit pas de présenter ici toutes les options du langage, des sites et livres le font de manière exhaustive, mais de décrire les grands principes de ce langage et les utilisations les plus courantes pour gérer :
* L’intégration de PHP avec le HTML
* La récupération de données depuis un formulaire
* La relation avec une base de données
* La gestion des informations tout au long de la navigation de l’utilisateur grâce aux variables de session
* La réutilisation de code à plusieurs endroits (plusieurs pages ou plusieurs endroits dans une page)
===== I Quelques principes =====
__Exécution du PHP__
Comme tout langage de script, la partie PHP est traitée uniquement du côté serveur, et l’utilisateur final ne reçoit que le résultat au format HTML du traitement de ce code.
__Syntaxe__
PHP est un langage assez permissif : les variables n’ont pas besoin d’être déclarées, on peut les utiliser à tout moment, changer leur type en cours de code, etc. Cela peut être un souci car une erreur de frappe (par exemple une variable $text que l’on tape accidentellement $texte) ne créera pas d’erreur d’exécution, mais peut empêcher le fonctionnement du programme. Il est donc impératif d’être extrêmement rigoureux.
__Erreurs__
Les messages d’erreur générés par le serveur d’exécution de PHP sont relativement explicites. Cependant, il peut parfois pointer sur une ligne qui n’est pas la bonne du fait de l’oubli d’un ; ou une mauvaise fermeture d’accolade ou de guillemet. L’utilisation d’un éditeur à colorisation syntaxique permet de limiter ce genre d’oubli.
__Débogage__
Quelques environnements d’exécution permettent de tester et de dépanner du code PHP grâce à une exécution pas à pas, la pose d’espions (affichage du contenu d’une variable en cours d’exécution) ou de points d’arrêt (l’exécution s’arrête sur une ligne indiquée et permet le suivi pas à pas) : ZendStudio est un exemple d’outil offrant ces possibilités, de même que les fonction de débogage ou d'exploration des navigateurs.
Pour les producteurs de code « à la main », le débogage (recherche de la cause d’une exécution erronée) passe par des affichages (commande echo pour un champ, var_dump pour une objet structuré) du contenu des informations ou de messages pour vérifier le passage à l’intérieur d’une boucle par exemple.
__Version__
Les versions de PHP sont mises à jour régulièrement. Elles rendent obsolètes certaines commandes (qui restent utilisables mais non conseillées : par exemple, les commandes **//mysql_//** sont remplacées par **//mysqli_//** depuis la version PHP5, encore supportées par PHP5 mais plus par PHP7) ou en suppriment certaines et, évidemment, en ajoutent de nouvelles. Le terme pour une fonction obsolète est **//deprecated//**.
On peut connaître la version de PHP installée sur une machine avec la commande :
php -version
===== II L’intégration de PHP avec le HTML =====
Il est possible de créer des pages utilisant uniquement du PHP (pour vérifier la validité d’informations, pour réaliser des insertions dans une base, etc), mais on aura souvent recours simultanément à ce langage de script et à du HTML pour produire une page à destination de l’utilisateur.
Dès lors, le PHP va déterminer quelle partie du HTML sera renvoyée à l’utilisateur final, et permettra de renseigner certains éléments en puisant depuis une base de données ou en réutilisant les données fournies plusieurs pages auparavant grâce aux variables de session.
Il y a deux approches pour réaliser l’intégration des deux langages : par le PHP seul ou en combinant HTML et PHP au moment où on en a besoin.
=== PHP seul ===
La page PHP sera intégralement constituée par du code compris entre .
Tout élément qui doit être renvoyé vers l’utilisateur (donc au format HTML) devra être affiché par le biais de la commande echo.
L’avantage de cette solution est de ne pas avoir à gérer les ouverture et fermeture de . L’inconvénient est la difficulté à distinguer ce qui est véritablement du code à exécuter côté serveur des éléments renvoyés vers l’utilisateur qui se trouvent noyés dans les parenthèses.
__Illustration__
Accueil") ; //entête HTML de la page résultat
echo("") ;
echo("Bienvenue sur le site") ; //affichage de texte
echo("
Aujourd’hui nous sommes le : ") ; //affichage de HTML et de texte
echo(date("d/m/Y")."
Merci de votre visite
");//affichage d’un résultat php suivi de HTML et texte
echo("