Formation au langage PHP & MYSQL
...
A.1 Introduction
Ce premier chapitre est un rappel thérapeutique sur le langage HTML, il n'a nullement la prétention d'être un cours sur le HTML, mais permet simplement de comprendre les rudiments du langage HTML et de voir les fonctions de base de ce langage.
Le HTML ("HyperText Markup Language") est un langage à balise de présentation de données utilisé sur le World Wide Web.
Il permet notamment la lecture de documents à partir de machines différentes grâce au protocole HTTP, permettant d'accéder via le réseau à des documents repérés par une adresse unique, appelée URL.
Faut-il le rappeler, on accède au web à l'aide de navigateurs internet dont les plus connus sont Internet Explorer, Mozilla Firefox et Safari.
A.2 Historique
Le langage HTML a été mis au point par Tim Berners-Lee, chercheur au CERN qui en est à l'origine. C'est à partir de 1993 que l'on considère l'état du HTML suffisamment avancé pour parler de langage (HTML est alors baptisée symboliquement HTML 1.0). Le navigateur internet utilisé à l'époque était nommé NCSA Mosaïc.
En décembre 1997, le HTML 4.0 a été publié. La dernière version, HTML 4.01 apportant des modifications mineures est apparue fin 1999, elle est la dernière encore aujourd'hui puisque les développements de HTML sont arrêtés depuis.
A.3 HTML : Un langage â balises
Les balises HTML sont généralement présentes par paire afin d'agir sur les éléments qu'elles encadrent. La première est appelée "balise d'ouverture" et la seconde "balise de fermeture". La balise de fermeture est précédé du caractère /) :
Ainsi les balises <b> et </b> permettent de mettre en gras le texte qu'elles encadrent :
Les balises HTML ont la particularité de pouvoir être imbriquées de manière hiérarchique afin de permettre le cumul de leurs propriétés, cependant le chevauchement n'est pas correct, comme dans l'exemple ci-dessous :
A.4 Les attributs
Un attribut est un élément, présent au sein de la balise ouvrante, permettant de définir des propriétés supplémentaires à la balise à laquelle il appartient.
Voici un exemple d'attribut pour la balise <p> (balise définissant un paragraphe) permettant de spécifier que le texte doit être aligné sur la droite :
Chaque balise peut comporter un ou plusieurs attributs, chacun pouvant avoir aucune, une ou plusieurs valeurs.
A.5 Les commentaires
Des balises spéciales permettent d'insérer des commentaires dans le code HTML
A.6 Notion de document HTML
Une page HTML est un simple fichier texte contenant des balises HTML. Par convention l'extension donnée à une page HTML est .htm ou .html mais une page web peut potentiellement porter n'importe quelle extension notamment .php, .php3 ou .php4 pour une page générée dynamiquement en PHP.
A.7 La page HTML minimum
Une page HTML est un fichier texte commençant par la balise <HTML> et finissant par la balise </HTML>. Elle contient également un en-tête décrivant le titre de la page, puis un corps dans lequel se trouve le contenu de la page.
L'en-tête est délimité par les balises <HEAD> et </HEAD>. Le corps est délimité par les balises <BODY> et </BODY>.
Ainsi la page HTML minimum peut être représentée comme suit :
<HTML>
<HEAD>
<TITLE> Le titre </TITLE>
</HEAD>
<BODY>
Contenu de la page
</BODY>
</HTML>
La ligne suivante doit également être ajoutée en prologue pour indiquer le type de document.
Elle fait ainsi référence à la norme HTML, afin de spécifier le standard et la version utilisée pour le codage de la page en HTML.
A.8 Codage des caractères spéciaux
Par défaut la norme HTML code les caractères au format UTF-8 sur 7 bits, ce qui donne un alphabet assez pauvre, puisque par défaut les caractères accentués ne sont pas possible.
Il existe alors deux méthodes pour rendre accessible depuis tous les pays et tous les navigateurs les caractères spéciaux dont raffole par exemple la langue française.
La plus simple et celle recommandé, consiste à étendre le jeu de caractère en ajoutant dans le header du fichier HTML les informations de contenu suivantes :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
ISO 8859-1 étant le code ISO de la française, il devient alors possible d'utiliser normalement notre alphabet, qui sera alors codés sur 8 bits.
La seconde consiste à remplacer les caractères spéciaux par leur équivalant en code HTM., voici donc quelques caractères que l'on rencontre fréquemment :
. Caractère Code ISO Code HTML
" ft#34; ftquot;
ft ft#38; ftamp;
‹ ft#139; ftlt;
› ft#155; ftgt;
espace ft#160; ftnbsp;
ç ft#231; ftccedil;
è ft#232; ftegrave;
é ft#233; fteacute;
ê ft#234; ftecirc;
A.9 Présentation des données
HTML étant conformément à sa définition un langage de présentation de données, il dispose de nombreuses balises permettant de mettre en valeur les informations, les principales sont :
Balise de style Effet Visuel
<I> Italique
<B> Met la police en gras
<H1><H2>......<H6> Niveau de titre (du plus grand au plus petit)
Il existe beaucoup d'autres balises permettant mettre en exposant, en indice,....
Les balises <Hx> peuvent être complétées par des attributs d'alignement par exemple (LEFT,
RIGHT, CENTER, JUSTIFY, ....).
Ainsi pour faire un beau titre de page on peut par exemple écrire :
<H1 ALIGN=JUSTIFY> Texte justifié </H1>
A l'intérieur d'un paragraphe, les espaces, tabulations et retours chariot comptent pour un seul espace.
La mise en page par blocs de texte est réalisée par l'intermédiaire de la paire de balises <p> et </p>
Le retour chariot (retour à la ligne simple) est réalisé grâce à la balise <br>
A.10 Les tableaux
Les tableaux sont encadrés par les balises <TABLE> et </TABLE>
Le titre du tableau est encadré par <CAPTION> </CAPTION>
Les cellules d'en-tête sont encadrées par <TH> </TH> (pour Table Header)
Chaque ligne est encadrée par <TR> </TR> (Table Row)
Les cellules de valeur sont encadrées par <TD> </TD> (Table Data)
Par exemple le tableau:
<TABLE BORDER="1">
<CAPTION> Voici le titre du tableau </CAPTION>
<TR>
<TH> Titre A1 </TH>
<TH> Titre A2 </TH>
<TH> Titre A3 </TH>
<TH> Titre A4 </TH>
</TR>
<TR>
<TH> Titre B1 </TH>
<TD> Valeur B2 </TD>
<TD> Valeur B3 </TD>
<TD> Valeur B4 </TD>
</TR>
</TABLE>
On obtient alors le tableau suivant :
De très nombreux attributs peuvent être ajoutés aux balises de tableaux afin d'aligner (verticalement, et horizontalement) espacer les cellules, mettre en valeur les données du tableau...
A.11 Liens hypertextes
Les liens hypertextes permettent de naviguer:
* vers une autre machine
* vers un fichier HTML situé à un emplacement différent sur la machine qui héberge la page
* vers un autre endroit du document
Dans le cas d'un lien externe on écrira ainsi pour pointer vers l'URL (Universal Ressource Locator) du site web du CNRS
On peut créer un lien vers une page située sur le même ordinateur en remplaçant l'URL par le fichier cible.
<a href="/../index.html">Retourner à l'accueil</a>
Ce lien peut aussi être fait de façon absolue, en écrivant l'adresse du fichier cible de façon locale, ou bien par rapport à la racine du site web.
<a href="/index.html">Retourner à l'accueil</a>
Les signets permettent de marquer un endroit précis d'une page pour s'y rendre par hypertexte.
Cela se fait grâce à l'attribut NAME ou ID.
Par exemple:
<p id="haut"> ... </p>
On l'appellera grâce au lien suivant qui aura pour effet de renvoyer au signe « haut »:
<a href="#haut">Haut de la page</a>
A.12 Les images
Quelques images sur un site Web peuvent le rendre plus attractif et plus convivial !
La balise IMG du langage HTML permet d'insérer des images dans une page.
Seuls les formats d'images suivants sont acceptés en standard dans les spécifications du W3C :
Les attributs disponibles pour une image sont les suivants :
SRC: Indique l'emplacement de l'image (il est obligatoire)
ALIGN: Spécifie l'alignement de l'image par rapport au texte adjacent.
ALT: Permet d'afficher un texte alternatif lorsque l'image ne s'affiche pas (obligatoire).
TITLE: Permet d'afficher une infobulle lors du survol de l'image par le curseur.
WIDTH: Permet de spécifier la largeur de l'image.
HEIGHT: Permet de spécifier la hauteur de l'image.
Soit l'exemple suivant :
<IMG SRC="url_de_l_image"
ALT="Texte remplaçant l'image"
TITLE="Texte à afficher">
A.13 Les formulaires
Les formulaires interactifs permettent aux auteurs de pages Web de dialoguer avec leurs
Le lecteur saisit des informations en remplissant des champs puis appuie sur un bouton de soumission (submit) pour l'envoyer à une URL, c'est-à-dire à un script qui sera exécuté (CGI
Common Gateway Interface) ou interprété (PHP, ASP...)
A.13.1 La balise FORM
Les formulaires sont délimités par la balise <FORM> ... </FORM>, une balise qui permet de regrouper plusieurs éléments de formulaire (boutons, champs de saisie,...) et qui possède les attributs obligatoires suivants :
METHOD indique sous quelle forme seront envoyées les réponses :
ACTION indique l'adresse d'envoi (par exemple une page en php)
La balise FORM possède comme attribut facultatif ENCTYPE qui spécifie le codage des données dans l'URL, qui peut être utilisé pour l'envoi de fichiers.
Cela peut par exemple donner cela :
<FORM method="GET" action="valider_resultats.php">
<!--Description des champs du formulaire voir ci-dessous-->
</FORM>
Il est possible d'insérer n'importe quel élément HTML de base dans une balise FORM (textes, boutons, tableaux, liens,...) mais il est surtout intéressant d'insérer des éléments interactifs.
Ces éléments interactifs sont:
A.13.2 La balise INPUT
La balise INPUT est la balise essentielle des formulaires, car elle permet de créer un bon nombre d'éléments "interactifs". La syntaxe de cette balise est la suivante:
<INPUT type="Nom du champ" value="Valeur par défaut" name="Nom de l'élément">
L'attribut type permet de préciser le type d'élément que représente la balise INPUT, voici les
valeurs que ce champ peut prendre:
unchecked (non coché).
<FORM method="GET" action="valider_resultats.php">
<!--Un champ de texte pour saisir le nom-->
Nom :<INPUT type=text name="nom" maxlength="10"><br>
<!--Deux boutons radios pour saisir le sexe-->
Homme : <INPUT type=radio name="sexe" value="M" checked><br>
Femme : <INPUT type=radio name="sexe" value="F"><br>
<!--Le bouton pour valider le formulaire-->
<INPUT type="submit" value="Envoyer">
</FORM>
Avec le code HTML ci-dessus, on obtient le formulaire suivant :
A.13.3 La balise TEXTAREA
La valeur par défaut de la zone de texte est encartée entre les balises TEXTAREA.
<TEXTAREA rows="3" name="commentaires">
Tapez ici vos commentaires</TEXTAREA>
Ce qui donne le champ de formulaire suivant :
A.13.4 La balise SELECT
La balise SELECT permet de créer une liste déroulante d'éléments (précisés par des balises
OPTION à l'intérieur de celle-ci). Les attributs de cette balise sont:
<SELECT name="type_film">
<OPTION VALUE="comedie" SELECTED>Comidie</OPTION>
<OPTION VALUE="drame">Drame</OPTION>
<OPTION VALUE="erotique">Erotique</OPTION>
</SELECT>
Donne le formulaire à choix multiple suivant :
A.14 Conclusion HTML
Félicitation, vous avez réussi a atteindre la fin de la description succincte du langage HTML, elle est très largement incomplète, cependant, je ne saurais que vous renvoyer vers le site du W3C
(World Wide Web Consortium) sur lequel vous retrouvez la norme HTML4.01 dans son intégralité.
Vous trouverez également sur le site du W3C un moteur vous permettant de vérifier la validité des codes HTML que vous produirez. Si vous respectez la norme vous aurez alors le droit d'apposer le logo du W3C sur votre site.
Le langage PHP
B Introduction au langage PHP
B.1 Introduction
PHP EST UN LANGAGE DE SCRIPT INTERPRÉTÉ LARGEMENT UTILISÉ ET SPÉCIALEMENT ÉTUDIÉ
POUR LES DÉVELOPPEMENTS ORIENTÉS WEB. IL EST EXÉCUTÉ CÔTÉ SERVEUR CONTRAIREMENT À
JAVASCRIPT QUI LUI EST EXÉCUTÉ CÔTÉ CLIENT.
B.2 Historique
En 1995, à la demande des utilisateurs, il publie la première version 1.0 qu'il nomme Personal
Home Page.
Suit rapidement la version 2 nommée PHP/FI et qui gère les formulaires et les bases de données mSQL.
En 1998 apparaît la version 3 réalisée désormais par une équipe de développeurs.
En 2000 sortie de PHP 4 avec apport de la programmation orientée objet, puis en 2004 arrivée de PHP 5 doté du nouveau moteur Zend 2.0 et de nouvelles fonctionnalités (objet principalement).
...
B.4 Avantages et inconvénients de PHP
Ses principaux atouts sont:
Malheureusement, PHP comporte également des inconvénients :
B.5 Mon premier script
L'exemple commenté du code PHP du fichier test.php sera interprété, il a été inséré directement dans le code HTML entre les balises <? et ?>.
<HTML>
<HEAD>
<TITLE>Mon premier script</TITLE>
</HEAD>
<BODY>
<?
//Chouette je peux écrire en PHP maintenant
echo "Hello World";
?>
<BODY>
</HTML>
test.php
Il est également possible de ne pas mélanger code PHP et code HTML, ce qui est judicieux pour ne pas dégrader la lisibilité des programmes.
Toujours sur le même exemple il pourrait être fait :
<?
//On inclut l'en tête HTML
include "header.inc";
echo "Hello World";
// Et le pied de la page include "footer.inc";
?>
test.php
<HTML>
<HEAD>
<TITLE>Mon premier script</TITLE>
</HEAD>
<BODY>
header.inc
<BODY>
</HTML>
footer.inc
NOTA l'extension .inc a été choisie arbitrairement, elle ne sera pas interprétée par le serveur web, le contenu du fichier sera donc juste « collé »
Il est également possible d'intégrer des fichiers php dans une page php grâce aux fonctions require("mon_fichier.php") et require_once("mon_fichier.php")
Ces fichiers peuvent par exemple servir de fichier de configuration, ou bien permettre la description de fonctions.
C Les base du langage PHP
C.1 Pour bien démarrer
Cette partie va définir succinctement les rudiments et les spécificités du langage PHP. Comme vous les verrez, la syntaxe est très proche de celle du C.
Tout d'abord la casse n'intervient pas dans les noms de fonctions
echo "Bonjour";
EcHo "Bonjour";
sont équivalents
En revanche, elle intervient dans les noms de variables
$nom="bonjour";
$NOM="bonjour"; désignent deux variables différentes, par contre les noms de variable ne doivent pas commencer par un chiffre
C.2 Les types de données
Les variables, elle sont précédés d'un $, par contre il n'y a pas de déclaration, l'affectation détermine le type de la variable.
PHP supporte les types de données suivants :
Entre guillemets simples, rien n'est interprété (sauf \' échappement de ' et \\ échappement du caractère \)
$ch1 = 'Bonjour';
Entre guillemets doubles, sont interprétés les variables, les caractères spéciaux \n \r \t \$ \" \\
$ch2 = "Monsieur !\n";
Le . est utilisé pour concaténer des chaînes de caractère
$ch3 = $ch1."Monsieur !\n";
echo"\n"; provoque un saut de ligne dans le code HTML généré mais ne provoque de saut de ligne HTML (il faut utiliser <br>) !
C.2.2 Conversion de chaînes de caractères en valeur numérique
Attention l'absence de déclaration des variables contrairement au C simplifie la vie mais peut conduire à des résultats inattendus :
$i = 1 + "4.5";
// $i vaut 5.5
$i = 1 + "toto + 9";
// $i vaut 1
$i = 1 + "toto + 9";
//$i vaut 1
$i = 1 + "9 + toto";
//$i vaut 10
//La valeur est définie par le premier caractère de la chaîne
//0 si c'est du texte donc 0 pour le t de toto
C.2.3 Tableaux
Les tableaux en PHP sont référencés par des clefs qui peuvent être :
$tab[0] = 1;
$tab[1] = "une chaîne";
$tab["nom"]="Bullock";
$tab["prenom"]="Sandra";
NOTA Les tableaux peuvent être multidimensionnels
Les tableaux peuvent prêtre initialisés implicitement comme ci-dessus ou bien avec la fonction array
$tab = array("1","une chaine",120);
$mes=array("nom"=>"Bullock", "prenom" => "Sandra");
La fonction count($tab) retourne le nombre d'éléments du tableau tab.
C.2.4 Les constantes
Comme en C il est possible de définir des constantes :
define("MAX", 255);
D'autres constantes sont également définis par le système comme
TRUE, FALSE
PHP_OS : système d'exploitation du serveur
PHP_VERSION : version de PHP utilisée
D'autres offrent des informations plus ou moins utiles par exemple sur les clients se connectant au site comme :
$REMOTE_ADDR : adresse IP de la machine client
$REMOTE_USER : nom du client après identification
$HTTP_USER_AGENT : nom du navigateur
La liste n'est pas exhaustive.
C.2.5 Portée des variables
La portée d'une variable dépend du contexte dans lequel la variable est définie. Pour la majorité des variables, la portée concerne la totalité d'un script PHP. Mais, lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction. Par exemple:
<?php
$a = 1; /* portée globale */
function test() {
echo $a; /* portée locale */
}
test();
?>
Le script n'affichera rien à l'écran car la fonction echo utilise la variable locale $a, et celle-ci n'a pas été assignée préalablement dans la fonction. Vous pouvez noter que ce concept diffère un petit peu du langage C dans lequel une variable globale est automatiquement accessible dans les fonctions, à moins d'être redéfinie localement dans la fonction. Cela peut poser des problèmes si vous redéfinissez des variables globales localement. En PHP, une variable globale doit être déclarée à l'intérieur de chaque fonction afin de pouvoir être utilisée dans cette fonction, cette déclaration se fait à l'aide du mot clé global.
<?
$a = 1;
$b = 2;
function somme()
{
global $a, $b;
$b = $a + $b;
}
somme();
echo $b;
?>
Dans cet exemple le résultat affiché sera 3 puisque la fonction somme a additionné $a et $b, variables globales.
Une autre caractéristique importante de la portée des variables est la notion de variable static.
Une variable statique a une portée locale uniquement, mais elle ne perd pas sa valeur lorsque le script rappelle la fonction. Prenons l'exemple suivant:
<?php
function test()
{
static $a = 0;
echo $a;
$a++;
}
?>
Ainsi à chaque nouvel appel de la fonction test, $a sera incrémenté de 1, le contenu de la
C.3 Les opérateurs
Les opérateurs en PHP sont très similaires à ceux en C, les voici de manière synthétique et par
ordre de priorité décroissante
Les opérateurs de calcul
+ addition
- soustraction
* multiplication
/ division
= affectation (de valeur à une variable)
% modulo (reste de la division)
Les opérateurs d'assignation
+= addition deux valeurs et stocke le résultat dans la variable (à gauche)
-= soustrait deux valeurs et stocke le résultat dans la variable
*= multiplie deux valeurs et stocke le résultat dans la variable
/= divise deux valeurs et stocke le résultat dans la variable
%= donne le reste de la division deux valeurs et stocke le résultat dans la variable
|= Effectue un OU logique entre deux valeurs et stocke le résultat dans la variable
^= Effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable
&= Effectue un Et logique entre deux valeurs et stocke le résultat dans la variable
.= Concatène deux chaînes et stocke le résultat dans la variable
Les opérateurs d'incrémentation
++ Incrémentation
-- Décrémentation
Les opérateurs de comparaison