Vous êtes sur la page 1sur 17

Prsentation du cours de PHP

Objectifs
Ce cours a pour objectif de prsenter l'intrt de l'utilisation d'un langage dynamique dans la cration et la gestion
d'un site web.
En effet, la plupart des sites Internet (ou Intranet) prsentant de gros volumes d'informations ou proposant de
nombreux services s'appuient sur des langages dynamiques comme le PHP (abrviation de PHP Hypertext
PreProcessor).
Les nombreux avantages de ce langage spcifiquement dvelopp pour le web seront introduits tout au long de ce
cours d'initiation notamment dans son interfaage avec une base de donnes de type MYSQL.
Notons que les grands principes de ce cours peuvent s'appliquer d'autres langages dynamiques comme l'ASP.
Primtre
Cette initiation PHP 5 ne vise ni l'exhaustivit, ni remplacer les excellents et nombreux sites Internet et livres (voir
en bas de page) qui s'attachent notamment documenter les nombreuses fonctions PHP qui existent dans le cadre
de scripts complets.
Afin de mieux apprhender quelques unes des possibilits du langage, nous nous appuierons sur des exemples
concrets de scripts et de dveloppements PHP raliss par l'auteur du cours sur le portail d'information et
communication en environnement & gographie notre-planete.info (http://www.notre-planete.info)
Limites
Des simplifications voire des raccourcis seront oprs afin de nous concentrer sur la dcouverte du PHP/MYSQL et
non d'en lister toutes les composantes. A ce titre, seule l'exploitation d'une base de donnes MYSQL (via l'interface
PHPMYADMIN) sera voque.
De plus, ne seront pas vus :
les sessions
les cookies
la gestion des fichiers
la gestion des e-mails
la programmation PHP objet
Au final, nous nous limiterons aux bases du PHP/MySQL
Pr-requis
Voici les comptences requises pour une bonne comprhension de ce cours :
Niveau de connaissance souhaitable > Notions Bon Expert
Algorithmique X
Architecture Web X
HTML X
CSS X
Javascript X
SQL X
Note aux futurs dveloppeurs
Tous les exemples de code qui sont fournis ici peuvent tre tests soit directement sur les pages de votre site web
(via un accs FTP chez votre hbergeur), soit en local grce notamment l'excellent EasyPHP que je vous laisse le
soin de dcouvrir et qui permet d'installer sur son ordinateur personnel un serveur web (Apache), PHP et MYSQL en
quelques clics !

Sur les pages suivantes, le code apparait avec un fond gris comme suit :
<?php
echo " Cour s d' i ni t i at i on au PHP / MYSQL" ;
?>
Ceci signifie que ce bloc de code peut tre recopi tel quel dans vos fichiers pour tre ensuite excut.
Prsentation de PHP
Rappels sur l'architecture web
Rapelons qu'un site web est l'ensemble de pages et, le cas chant, des logiciels qui les gnrent automatiquement,
hbergs chez un mme serveur et qui constituent le service aux utilisateurs. L'ensemble des pages du site se
trouve gnralement sous un mme nom de domaine. De faon plus prcise il s'agit d'un serveur d'informations
inscrit sur le WEB grce son identifiant (URL) sa prsentation (page HTML) et ses procdures d'accs
(HTTP).
Ainsi, lorsque l'on se connecte Internet notamment pour visualiser des pages web, il faut bien garder l'esprit que
nous ne faisons que lire des pages web au format HTML (via un navigateur de type Internet Exploreur ou Firefox
par exemple) qui viennent d'tre tlcharges d'un serveur distant appel serveur web. Les textes et mdias
associs ont t copis sur notre disque dur dans des rpertoires temporaires et restitus avec une mise en forme
par le navigateur web suivant diffrents standards.

Le serveur web est l'ensemble des matriels, logiciels et liaisons sur lequel sont implments les sites WEB et qui
permettent de les rendre consultables sur le WEB. De faon plus large il s'agit d'un ordinateur contenant des
informations consultables distance par d'autres ordinateurs et sur lequel le webmaster "upload" ses fichiers.

Sans langage dynamique de type PHP, l'architecture est la suivante :

Lorsque le serveur web est coupl avec un interprteur PHP, l'architecture se dcline ainsi :

Dans ce dernier cas qui nous intresse, il existe un intermdiaire entre le serveur web qui rceptionne la requte
HTPP et le renvoi de la page Internet correspondante. En effet, le serveur web stocke alors des pages PHP avec du
code PHP imbriqu dans les balises HTML (de notre cr) qui doit tre interprt la vole par l'interprteur PHP.
Celui-ci restitue alors une page HTML (sans le PHP qui a donc t excut) et dont les rsultats sont visibles dans le
code HTML sous forme de texte et/ou balises HTML exploitables par le navigateur web. C'est l'extension du fichier
(*.php, php3, php5...) qui indique au serveur web que l'interprteur PHP doit travailler.
Ainsi, le PHP permet de gnrer du code HTML la vole en fonction de diverses instructions donnes par le
concepteur et visibles uniquement dans le code source du fichier Ex : affiche moi l'heure en cours, indique moi le
nombre d'articles restant en magasin en interrogeant la base de donnes... On exploite gnralement des bases de
donnes de type MySQL.
L'environnement logiciel de PHP/MySQL
A titre d'exemple, le duo PHP/MySQL peut se retouver dans l'environnement suivant :
systme d'exploitation : Linux serv01 2.4.27
serveur web : apache 1.3.27
gestionnaire MySQL : phpmyadmin 2.6.0-rc2
php : php 4.3.9
MySQL : mysql 4.0.21
Ces diffrentes versions et produits logiciels sont normalement clairement spcifis par votre hbergeur.
Origines et atouts de PHP
Origines de PHP
Vous trouverez sur ce lien, un rcapitulatif historique de PHP et une synthse sur son dploiement actuel.
Nous pouvons retenir que PHP est pass d'un langage de script rudimentaire mais pratique une plate-forme de
dveloppement complte et utilise sur les plus grands sites professionnels.
Atouts de PHP
Il est important de bien connatre les atouts d'un langage avant de se lancer ceci afin de s'assurer qu'il rponde
bien aux besoins du projet web. Voici une liste des caractristiques de PHP qui en font un langage incontournable
et facile d'accs pour le web :
PHP est un langage de scripts. Il est interprt, par consquent il ne ncessite pas d'etre compil pour
obtenir un objet, un excutable avant d'tre utilisable (comme en C par exemple).
PHP est un module support par le serveur web Apache, le plus rpandu dans le monde (plus de 70% des
serveurs web), il est donc dvelopp pour tre facilement utilisable via ce serveur (Il fonctionne
videmment avec d'autres serveurs web comme IPlanet, IIS...).
PHP permet d'exploiter facilement de trs nombreuses bases de donnes comme Oracle, MySQL, dBase,
Sybase, PostgreSQL, MSQL.... et peut se connecter sur n'importe quelle base dote d'un pilote ODBC
(Open Database Connectivity).
PHP peut se connecter avec des systmes de paiement en ligne : Verisign, Cybercash, Crdit Mutuel...
PHP reconnait l'essentiel des protocoles et formats disponibles sur Internet et intranet : TCP, HTTP, SMTP,
LDAP, IMAP, POP, SSl, Soap, XML, PDF...
PHP est gratuit et performant tout comme MySQL, c'est pourquoi le duo PHP/MySql est particulirement
ais mettre en place et propos des prix modestes chez les hbergeurs.
PHP/MySql est trs largement document car de plus en plus rpandu notamment sur les sites
professionnels (Free, Wanadoo, Le Monde, Figaro, Yahoo, TF1...).
PHP est multi plates-formes : Windows, UNIX, LINUX et MAC OS.
PHP (dans sa version 4 et 5) s'xcute rapidement avec une stabilit toute preuve.
Au niveau du dveloppement :
Le code PHP est fortement inspir du C et de Perl, ce qui en facilite l'apprentissage.
Un des gros avantages de PHP sur d'autres langages comme PERL est l'intgration dans la mme page
du code HTML brut et du code PHP. Le code PHP s'imbrique dans le code HTML en tant dlimit
comme tel.
Ainsi, les scripts PHP ne ncessitent pas de rpertoires spciaux comme le fameux "/cgi-bin" pour les CGI.
Vu le fonctionnement de l'architecture web avec un interprteur PHP, le code n'est jamais visible par
l'internaute mme lorsqu'il choisit d'afficher la source vu que le rendu est toujours en HTML. Ce qui
scurise vos scripts et vos sources de programmes.
Grce de nombreuses extensions dynamiques, PHP peut gnrer des fichiers PDF, s'interfacer avec des
serveurs de messagerie, des serveurs LDAP, gnrer des images et graphiques la vole, ou encore
gnrer des animations flash pour ne citer que quelques unes des fonctionnalits les plus
impressionnantes.
Les bases du PHP
Comment intgrer le code PHP
Chez la majorit des hbergeurs, les fichiers contenant des scripts PHP doivent possder l'extension php. Exemple :
"resultat.php". Ceci signifie que le fichier resultat.php contient ou est susceptible de contenir du code PHP devant
tre interprt.
Notons qu'un fichier *.php peut ne pas contenir de code PHP mais uniquement des balises HTML, cela ne pose
aucun problme.

Il faut indiquer par une balise de dbut et une balise de fin le code PHP qui sera interprt. La syntaxe la plus
couramment admise et utilise est la suivante :
<?php
echo " i ci i l y a du code php . . . " ;
?>
la premire ligne correspond l'ouverture de la partie contenant le script en php.
la deuxime ligne contient le code proprement dit.
La troisime ligne indique la fin de la partie contenant le code php.
Avant et aprs vous pouvez insrer du code HTML.
Structure du code PHP
Attention ! Chaque instruction de code php doit tre termine par un point virgule. Son absence entranera
automatiquement une erreur de type "parse error".
Par contre, plusieurs instructions peuvent tre prsentes sur une ligne, tout comme une instruction peut chevaucher
plusieurs lignes. Pour plus de lisibilit, il est prfrable d'viter de mettre plusieurs instructions sur une mme ligne.

Les commentaires, essentiels dans votre code, peuvent tre intgrs de deux faons :
1. sur une ligne vous pouvez le faire prcder par deux slashs // ou par un dise #.
2. sur plusieurs lignes /* pour le dbut et */ pour la fin.
exemple d'une page HTML contenant du code PHP
(copier-coller pour tester)
<ht ml >
<head>
<t i t l e>Ma pr emi r e page en php</ t i t l e>
</ head>
<body bgcol or =" #FFFFFF" >
<f ont si ze=" 3" f ace=" ar i al " >
<?php
echo " Text e gnr par PHP. 1er scr i pt " ; / / comment ai r e : mon pr emi er essai
echo " <br / >Dat e du j our = <f ont col or =\ " r ed\ " ><b>" . dat e( " d/ m/ y -
H: i : s" ) . " </ b></ f ont >" ;
# f i n du comment ai r e sur mon pr emi er essai
/ * ceci est un comment ai r e qui s' t al e
sur pl usi eur s l i gnes. . . */
?>
</ f ont >
</ body>
</ ht ml >
Lorsque l'on visualisera le rsultat via le navigateur web, nous obtiendrons :
Texte gnr par PHP. 1er script
Date du jour =12/12/2004 - 19:26:12
On remarquera que :
1. du HTML a donc t gnr via le code PHP comme l'atteste l'affichage de la source de la page web
2. diffrentes faons de commenter sont employes et les commentaires ne sont pas visibles
3. la commande echo a t utilise pour crire du texte dans la page HTML, sa syntaxe est la suivante :
echo " mon t ext e" ;
echo " <f ont col or =\ " bl ue\ " >" ; / / on despci al i se
ou encore
echo ' mon t ext e' ;
echo ' <f ont col or =" bl ue" >' ; / / i nut i l e de despci al i ser
N'oubliez pas les guillemets ou les guillemets simples qui dlimitent la chane de caractre a crire et le
point virgule final
4. le caractre \ (i.e antislash) a t employ pour dspcialiser les guillemets ncessaires la valeur de
l'attribut font color. En son absence, PHP aurait interprt le guillement comme une fin de chane de
caractre, provoquant une erreur
5. le point (.) est ncessaire pour concatner une chane de caractre au rsultat de la fonction date ou pour
concatner deux chanes de caractres
6. la date peut tre gnre dynamiquement via la fonction date qui requiert certains paramtres suivant les
informations que l'on souhaite afficher
Notes sur la commande echo et l'criture de texte :
On peut utiliser la fonction print ou la commande echo pour crire du texte, mais la premire est une fonction et
retourne donc un rsultat d'o son xcution lgrement plus lente.

la commande echo crit donc du code HTML dans la page qui sera ensuite envoye au navigateur web du client. A
ce titre, il est possible galement d'crire (donc de gnrer) du code J avascript, VbScript...
Enfin, on peut inclure des retours chariots, des sauts de ligne, des tabulations... Qui ne seront visibles dans le
formatage du code source HTML. Voici les principales squences utilisables :
Squence d'chappement Signification
\n nouvelle ligne
\r retour chariot
\ pour dspcialiser
\t tabulation horizontale

Autre exemple
(copier-coller pour tester)
<ht ml >
<head>
<t i t l e>Ma seconde page en php</ t i t l e>
</ head>
<?php
echo " <body bgcol or =\ " #f f 00f f \ " >\ n" ;
echo " <f ont si ze=\ " 2\ " f ace=\ " ar i al \ " >\ n" ;
?>
- - - dat e en cour s - - - <br >
<?php echo " <f ont col or =\ " bl ue\ " ><b>" . dat e( " d/ m/ y - H: i : s" ) . " </ b></ f ont >" ?>
</ f ont >
</ body>
</ ht ml >
Rsultat l'affichage sur le navigateur web :
--- date en cours ---
12/12/2004 - 19:44:12
On remarquera que :
1. le point virgule n'est pas obligatoire lorsque la balise de fermeture du code PHP suit, bien que
recommand
2. on peut mettre sur une seule ligne les balises indiquant l'ouverture du code PHP et sa fermeture.
Pour en savoir plus sur les paramtres de la fonction date, sui vez ce lien
Inclure un fichier
Rcuprer des donnes prsentes dans un fichier vite de les dupliquer sur plusieurs pages. Ceci facilite donc la
gestion du site et renforce la scurit si vos donnes sont sensibles. Pour cela, on utilise la fonction include()
On pourra par exemple inclure dans notre fichier PHP un autre fichier PHP qui contient la structure des pages, ou les
balises meta de dbut de page, ou les constantes du site...
i ncl ude ( $_SERVER[ " DOCUMENT_ROOT" ] . " / f i chi er s/ connect . php" ) ;
Dans l'exemple ci-dessus, on inclut avant un script d'interrogation de base de donnes, le fichier contenant les
paramtres de connexion au serveur MySQL. Ce fichier aura pour extension .php et contiendra les balises
d'ouverture et de fermeture du code PHP afin notamment qu'il ne puisse tre directement lu (le PHP tant interprt).
Nous remarquons l'utilisation de la variable serveur "_SERVER["DOCUMENT_ROOT"]" qui a pour valeur le chemin
d'accs au dossier contenant votre site, ce qui vite l'utilisation des chemins d'accs relatifs modifier lorsque votre
fichier change d'arborescence.
Dclaration des variables
Rappelons que les variables sont des zones mmoires o l'on stocke des valeurs.

En PHP, il n'est pas ncessaire de dclarer au pralable les variables qui seront utilises, ni de prciser leur type qui
est dfini par dfaut et de faon transparente par PHP en fonction de leur valeur.
Ainsi, PHP est un langage dit de "typage faible et dynamique", dynamique car le type de la variable volue en
fonction de la valeur que vous lui assignez.
En PHP, tous les noms de variable commencent obligatoirement par le signe $.
L'affectation d'une valeur une variable s'effectue par le signe = (attention la comparaison s'effectue avec ==).

Exemples d'affectations de valeurs diffrents types de variables :
$t i t r e_ar t i cl e = " Gl obal Land Cover une i mage except i onnel l e de l a vgt at i on
mondi al e" ;
$nb_l ect ur es = 139;
$dat e_ecr i t ur e = " 03/ 12/ 2003" ;
$dat e_act uel l e = dat e( d/ m/ y) ;
$aut eur = " not r e- pl anet e. i nf o" ;
$sour ce = " Commi ssi on eur openne" ;
$l i en = " <a hr ef =\ " ht t p: / / www. not r e- pl anet e. i nf o/ act ual i t es/ act u_272. php\ "
t ar get =\ " _bl ank\ " >" ;
$i nt er et = ( $nb_l ect ur es / 10) ;
$comment ai r e = $_POST[ " comment " ] ;
Note : nous omettons volontairement les balises d'ouverture et de fermeture du code PHP lorsque notre code ne
comprend que du code PHP.

Toute variable qui n'est pas dclare au sein d'une fonction a une porte par dfaut qui s'tend au script, c'est dire
qu'elle conserve sa valeur tout au long de la page uniquement.
Remarques sur les noms de variables :
ils sont obligatoirement des chanes de caractres non numriques et non rserves
les caractres de ponctuaion (. , ; ...) et le caractre - ne sont pas accepts
eviter les caractres accentus
bannir les espaces
le premier caractre ne peut tre un chiffre
prfrer les noms explicites
PHP est sensible la casse !
Les principaux types de variables
PHP supporte trois grands types primitifs de donnes :
Type en franais Plage de valeurs Exemple
integer entier
-2 147 483 648
+2 147 483 647
$var =12;
double rel 1.7E-308 1.7E+308 $var =3.1415957
string chane de caractres caractre alphanumrique $var ="bienvenue"


PHP ne requiert pas de dclaration pralable des types de variables qui seront utilises. Le type est dfini par PHP
en fonction de la valeur de la variable.
Notons que la prsence de l'oprateur "+" convertit automatiquement le type en numrique. Les exemples suivants
nous montrent comment les types sont assigns :
$var = " 0" ; / / $var est une cha ne de car act r es ( code ASCI I 48)
$var ++; / / $var est l a cha ne de car act r es " 1" ( code ASCI I 49)
$var = $var + 1; / / $var est un ent i er et vaut 2
$var += 1. 3; / / $var est de t ype " doubl e" et vaut 3. 3
$var = 2 + " 8 ar br es" ; / / $var est de t ype " i nt eger " et vaut 10
Cependant il est possible de "typer" et de connatre le type d'une variable qui a t dfini grce aux fonctions
gettype() et settype().
le type boolen
Il n'existe pas en PHP de type boolen pour crer une variable qui n'aurait que pour valeur "vrai" ou "faux".
Cependant, les valeurs TRUE et FALSE (ou respectivement tout nombre diffrent de 0 et 0) peuvent tre utilises
dans le cadre d'une variable numrique.
Notons que certaines fonctions retournent false ou true si elles se sont correctement excutes et on peut donc les
tester...
gettype() et settype()
i f ( get t ype( $age) ! = " i nt eger " ) {
set t ype ( $age, " i nt eger " ) ; / / ou encor e $age = ( i nt ) $age;
}
echo " Vous avez $age ans. . . " ;
Les valeurs renvoyes par gettype() sont : "integer", "double", "string", "array" (pour les tableaux), "object" (pour les
objets), "class" (pour les classes) et "unknown type" pour un type inconnu...
Tester le type de la variable
Des fonctions permettent galement de tester le type de la variable. Elles renvoient VRAI (ou 1) si le type est le bon.
is_int(), is_integer(), is_long() r enver r ont VRAI si l e t ype est ent i er
is_double(), is_float(), is_real() r enver r ont VRAI si l e t ype est doubl e ( r el )
is_string(), is_array(), is_object() r enver r ont r espect i vement VRAI si l e t ype
est st r i ng, ar r ay ou obj ect
Les constantes
Une constance est une rfrence une valeur qui ne change pas et qui ne peut tre par la suite modifie. Les
sciences ont ainsi dfinies un certain nombre de constantes comme pi (environ 3,14), le zro absolu (-273,15C) ou
la vitesse de la lumire (300 000 km/s environ).
Voir pour exemple d'autres constantes sur la Terre sur le portail notre-planete.info
Il est par exemple utile, dans un site, de dfinir une constante pour une valeur qui se trouve rpte un certain
nombre de fois. Comme par exemple la dnomination de la socit ditrice du site, du titre du site ou de son auteur
si ces informations sont rcurrentes.
Sur le portail notre-planete.info, le titre "notre-planete.info" est rpt sur un grand nombre de pages. C'est
pourquoi une constante a t dfinie comme suit :
def i ne ( " SI TE" , " <b><f ont col or =\ " #00216a\ " >not r e- pl anet e. i nf o</ f ont ></ b>" ) ;
def i ne ( " PI " , 3. 14) ; / / une const ant e numr i que
On remarquera la prsence du caractre "\" pour despcialiser les guillemets afin qu'ils ne soient pas interprts par
PHP tout en tant prsents pour un code HTML propre. Toutes les constantes sont en majuscule pour s'y retrouver.
On l'appelle ensuite comme ceci :
echo SI TE;
echo " <br >mon si t e s' appel l e " . SI TE;
Nous noterons dans son appel qu'il faut respecter sa casse, ne pas indiquer le $ propre aux variables et que la
commande echo se passe de guillemets.
Ce qui donnera donc :
notre-planete.info
mon si t e s' appel l e notre-planete.info
On peut enfin vrifier la prsence d'une constante avec la fonction defined() qui renvoie 1 si cette premire a t
dclare et 0 dans le cas contraire :
i f ( def i ned( " SI TE" ) ) {
echo SI TE;
}
Les constantes internes
Par dfaut, PHP comprend un certain nombre de constantes utiles au dveloppeur comme :
echo PHP_OS; / / af f i cher a l e syst me d' expl oi t at i on sur l equel PHP est
i nst al l , ex : Li nux
echo PHP_VERSI ON; / / af f i cher a l e n de ver si on de PHP, ex : PHP/ 4. 3. 8;
Une liste des constantes relatives l'environnement dans lequel s'xcute PHP sont disponibles grce la fonction
phpinfo().
L'xcution de la fonction phpinfo() sur le site notre-planete.info donne ce rsultat
Les chanes de caractres
L'interprtation des variables
Nous avons dj utilis la commande echo pour retourner la valeur d'une variable en affichant son contenu.
En effet, la commande echo permet d'interpter une variable pour en afficher la valeur comme en tmoignent les
exemples suivants :
$annee_act u = " 2003" ;
echo " Anne : $annee_act u<br / >" ;
echo ' Anne : $annee_act u<br / >' ;
echo ' Anne : ' . $annee_act u. ' <br / >' ;
echo " La var i abl e \ $annee_act u vaut $annee_act u, l ' empl oi du \ est
i ndi spensabl e pour despci al i ser " ;
Rsultat :
Anne : 2003
Anne : $annee_act u
Anne : 2003
La var i abl e $annee_act u vaut 2003, l ' empl oi du \ est i ndi spensabl e pour
despci al i ser
Nous remarquerons que :
1. la variable peut s'insrer dans du texte dlimit par des guillemets, elle est alors interprte
2. l'utilisation de l'apostrophe la place des guillemets ne permet pas l'interprtation
3. il est possible d'afficher tout caractre normalement interprt en le dspcialisant via un antislash "\"
Afin de simplifier l'criture et la comprhension du code, nous conseillons l'usage des guillemets simples avec la
commande echo, la despcialisation des guillemets doubles utiliss largement en HTML n'est plus alors ncessaire.
Quelques fonctions usuelles
Il existe de nombreuses fonctions qui permettent d'exploiter les chanes de caractres, pour les scinder, en extraire
des parties, les prparer pour l'intgration dans une base de donnes.

Voici les principales :
Fonction Signification Exemple
strlen()
renvoie le nombre de caractres
contenus dans la chane
$nbcar = st r l en( $var ) ;
substr()
extrait un nombre de caractres d'une
chane partir d'une position
$ext r ai t =
subst r ( $var , $pos, $nb) ;
trim()
supprime les espaces avant et aprs la
chane
$var = t r i m( $var ) ;
addslashes()
despcialise les caractres apostrophe
('), double apostrophe (") et le slashe (\)
pour les bases de donnes.
$var bd = addsl ashes( $var ) ;
explode()
renvoie dans un tableau les valeurs
comprises entre un sparateur
$t abl eau =
expl ode( $del i mi t eur , $var ) ;


Consultez toutes les fonctions documentes sur les chanes de caractres
Les tableaux
La gestion des tableaux en PHP est classique. Notons qu'il n'est pas obligatoire de dclarer la taille du tableau.
$moi s[ 1] = " j anvi er " ;
$moi s[ 2] = " f vr i er " ;
$moi s[ 3] = " mar s" ;
$moi s[ ] = " avr i l " ; / / l ' i ndi ce 4 a t aut omat i quement af f ect
Rappelons que les tableaux servent stocker des valeurs multiples dans une mme variable.
Pour manipuler ces diffrentes valeurs, on leur affecte un indice numrique entier not entre crochets. L'exploitation
d'un tableau est rendue possible via les boucles.
Les tableaux sont notamment utiliss dans l'accs aux donnes d'une table issue d'une base de donnes.
En cas d'indice allou automatiquement, il s'agit de l'indice le plus lev dj dclar plus 1.
echo " $moi s[ 4] " ;
Rsultat :
avr i l
Les chanes de caractres sont considres comme des tableaux, c'est dire que chaque caractre qui forme la
chane est un lment du tableau avec un indice qui commence 0 et s'incrmente de 1 pour chaque caractre
droite du premier. Ce qui est fort pratique.
$si t e = " not r e- pl anet e. i nf o" ;
echo " $si t e[ 4] <br / >" ; / / at t ent i on ! l ' i ndi ce de l a pr emi r e l et t r e est 0
echo " $si t e[ 0] <br / >" ;
Rsultat :
e
n
La fonction array permet aussi de dclarer et remplir un tableau comme suit :
$moi s = ar r ay( " j anvi er " , " f vr i er " , " mar s" , " avr i l " ) ;
echo " $moi s[ 1] " ;
Rsultat :
f vr i er
Nous noterons sur cet exemple, qu'aucun indice n'a t ncessaire, l'indexation est automatique, dbute 0 et
s'incrmente de 1 pour chaque nouvelle valeur dclare.

On peut bien sr imaginer des tableaux plusieurs dimensions comme dans un jeu de morpion avec deux indices
(donc deux dimensions) pour chaque case correspondant au croisement de la colonne x (1er indice ici) avec la ligne
y (2me indice ici) :
$case[ 1] [ 1] = " vi de" ;
$case[ 1] [ 2] = " r ond" ;
$case[ 1] [ 3] = " cr oi x" ;
$case[ 2] [ 1] = " r ond" ;
$case[ 2] [ 2] = " cr oi x" ;
$case[ 2] [ 3] = " vi de" ;
$case[ 3] [ 1] = " cr oi x" ;
$case[ 3] [ 2] = " r ond" ;
$case[ 3] [ 3] = " vi de" ;
echo " l a case 3, 1 cont i ent : " . $case[ 3] [ 1] ;
echo " l a case 3, 1 cont i ent : $case[ 3] [ 1] <br / >" ;
echo " l a case 3, 1 cont i ent : {$case[ 3] [ 1] }<br / >" ;
Rsultat :
l a case 3, 1 cont i ent : cr oi x
l a case 3, 1 cont i ent : Ar r ay[ 1]
l a case 3, 1 cont i ent : cr oi x
Nous noterons ici que l'interprtation ne fonctionne pas avec deux indices sauf si place la variable a interprter entre
accolades. On peut galement concatner la valeur de la variable au texte.
le nombre d'lements d'un tableau
La fonction "count" retourne le nombre d'lments contenu dans un tableau. Ce qui peut tre utile pour crer une
boucle de lecture de ses lments. En effet, ainsi nous pouvons spcifier combien d'lments il faut parcourir dans la
lecture.
$moi s[ 0] = " j anvi er " ;
$moi s[ 1] = " f vr i er " ;
$moi s[ 2] = " mar s" ;
$moi s[ 3] = " avr i l " ;
$nb = count ( $moi s) ;
echo " $nb moi s ont t r ensei gns" ;
Rsultat :
4 moi s ont t r ensei gns
Tester les variables
Quelques fonctions nous permettent de vrifier qu'une variable possde une valeur ou au contraire, n'en a pas.
Fonction Signification Exemple
isset() dtermine si une variable possde une valeur i sset ( $var )
unset() dtruit une variable, librant la mmoire qu'elle occupe unset ( $var )
empty() vrifie si une variable n'est pas dfinie, vide ("") ou gale 0 empt y ( $var )

Accder aux bases de donnes avec PHP
Introduction
L'intrt majeur de PHP est son interfaage avec un grand nombre de bases de donnes d'une manire relativement
simple et efficace.
Nous a vons vu en introduction que pratiquement tous les SGBD sont pris en charge, mais PHP s'utilise bien souvent
avec MySQL, un SGBD rapide ( moyenne charge) et qui satisfait la plupart des sites Internet, mme si il n'a pas
encore toutes les potentialits d'autres... Mais rassurons nous, MySQL est exploitable mme pour des bases de
donnes de plusieurs Giga-octets et son moteur est bas sur la norme ANSI SQL 92.
Nous dvelopperons ici les fonctions PHP qui permettent d'exploiter des bases de donnes MySQL.
Pour la visualisation de vos tables et bases de donnes MySQL nous vous conseillons l'emploi de l'excellent
phpMyAdmin qui est une interface en ligne trs simple d'utilisation et redoutable dans ses possibilits.
Primtre et limites
Nous ne passerons pas en revue les diffrentes commandes SQL mais nous privilgierons leurs interactions avec
PHP. Une bonne connaissance pralable des SGBD et des types de donnes que l'on y trouve est donc ncessaire.
De plus, il vous appartient de savoir comment on remplit une base de donnes manuellement pour son exploitation
avec PHP.

Les exemples donns ici s'appuient sur une version de MySQL infrieure 4.1 qui dispose de nouvelles
fonctionnalits et ncessite quelques amnagements. Mais pour le moment et sur pratiquement tous les serveurs,
MySQL est install avec un version antrieure 4.1.
utiliser MySQL avec PHP
L'exploitation de MySQL avec PHP s'effectue en 5 tapes :
1. connexion MySQL
2. slection de la base de donnes
3. requte sur la base de donnes
4. exploitation des rsultats de la requte
5. fermeture de la connexion MySQL
Se connecter une base de donnes MySQL
Avant d'exploiter les donnes qui se trouvent sur notre base, il nous faut ouvrir un canal de communication qui ne
sera ferm qu'une fois toutes nos oprations effectues.
Notre base de donnes se trouve sur un serveur dsign avec un nom de domaine, un adresse IP ou un alias. Pour
nous y connecter, il nous faut un login et un mot de passe. Tous ces paramtres sont fournis par votre hbergeur.
Nous choisirons pour nos exemples les variables suivantes :
$ser veur = " mysql . net al ya. com" ;
$nom_base = " cour sPHP" ;
$l ogi n = " cour s" ;
$mot depasse = " php" ;
Ouvrir une connexion
Prcisons que les informations qui vous sont fournies par votre hbergeur sont confidentielles et ne doivent
en aucun cas tre communiques sous peine de voir vos bases modifies ou dtruites par des personnes
malintentionnes.

Pour se connecter, on utilise la fonction mysql_connect comme ci-dessous :
$ser veur = " mysql . net al ya. com" ;
$nom_base = " cour sPHP" ;
$l ogi n = " cour s" ;
$mot depasse = " php" ;
mysql _connect ( $ser veur , $l ogi n, $pwd) or di e ( ' ERREUR ' . mysql _er r or ( ) ) ;
ici, nous effectuons un test pour savoir si la connexion est effective ou pas avec l'alias die() : en cas d'chec, le code
s'interrompera ici en affichant l'erreur rencontre par MySQL (stocke dans la fonction mysql_error(). On pourrait
galement faire un test plus classique comme ci-dessous :
i f ( mysql _connect ( $ser veur , $l ogi n, $pwd) ) {
echo ' connexi on r ussi e' ;
}
el se {
echo ' connexi on i mpossi bl e. . . ' . mysql _er r or ( ) ;
}
Afin d'viter de dfinir vos identifiants de connexion chaque fois que vous exploiter votre base de donnes, il est
utile de les prciser dans un fichier qui sera appel chaque fois via un include(). Ainsi, vous pourrez facilement les
mettre jour si besoin et renforcerez la scurit de votre site web (en protgeant l'accs ce fichier via un .htaccess
sur les serveurs Apache).
Slectionner une base de donnes
On utilise la fonction mysql_select_db() :
$ser veur = " mysql . net al ya. com" ;
$nom_base = " cour sPHP" ;
$l ogi n = " cour s" ;
$mot depasse = " php" ;
/ / connexi on MySQL
mysql _connect ( $ser veur , $l ogi n, $pwd) or di e ( ' ERREUR ' . mysql _er r or ( ) ) ;
/ / sl ect i on de l a base de donnes
mysql _sel ect _db ( $nom_base) or di e ( ' ERREUR ' . mysql _er r or ( ) ) ;
Une fois que notre connexion est tablie et notre base de donnes slectionne, nous pourrons effectuer des
requtes et passer l'tape 3.
Effectuer des requtes sur la base de donnes MySQL
Fonctionnement : cas de la clause SELECT
Une fois que nous sommes connects MySQL et une base de donnes, nous pouvons effectuer des tches
classiques dans un SGBD : ajouter une table, supprimer un enregistrement, mettre jour un enregistrement, afficher
le rsultat d'une requte...
Toutes ces actions sont directement effectues en SQL via une requte approprie et l'utilisation de la fonction PHP
mysql_query (). Il est donc indispensable d'avoir au pralable une bonne connaissance du langage SQL...
Admettons que nous soyons connects notre base de donnes comme vu prcedemment.
Nous souhaitons par exemple afficher tous les enregistrements de la table nomme 'table' pour lesquels le champ
intitul 'champ_id' est gal 'notre-planete.info' :
$r equet e = " SELECT * FROM t abl e WHERE champ_i d = ' not r e- pl anet e. i nf o' " ;
$r esul t at = mysql _quer y ( $r equet e) ;
Cet exemple suffit pour comprendre comment PHP s'interface avec MySQL : une requte SQL est passe en
argument de la fonction mysql_query (), cette requte est ici dclare avant dans une variable de type chane de
caractres.
De la mme faon, on pourrait effectuer une requte de suppression, d'ajout...
Rcuprer un enregistrement avec la clause SELECT
Notons que le rsultat de la requte se trouve dans la variable nomme $res. Ce rsultat peut ensuite tre exploit
comme en tmoigne l'exemple ci-dessous :
$l i gne = mysql _f et ch_assoc( $r esul t at ) ;
echo ' l e pr emi er enr egi st r ement a pour i d ' . $l i gne[ " i d" ] . ' et pour t ype
' . $l i gne[ " t ype" ] ;
Ce qui donnera :
l e pr emi er enr egi st r ement a pour i d not r e- pl anet e. i nf o et pour t ype si t e
I nt er net
Pour rcuprer les valeurs des champs d'un enregistrement, on utilise donc la fonction mysql_fetch_assoc() qui
retourne l'enregistrement en cours sous la forme d'un tableau associatif.
Exploiter plusiquers enregistrements avec la clause SELECT
En effet, si notre requte retourne plusieurs enregistrements, il suffit d'effectuer une boucle while qui lira tous les
enregistrements jusqu'au dernier pour affichage, exploitation...
Nous prendrons ici l'exemple de l'affichage des 4 premires actualits du portail notre-planete.info prsentes en
page d'accueil du site. Voici le code utilis (en admettant que nous sommes dj connects notre base)
$r equet e = " SELECT * FROM t abl e_act ual i t es ORDER BY champ_dat e DESC LI MI T 4" ;
/ / on l i mi t e 4 l e nombr e d' enr egi st r ement s souhai t
/ / envoi de l a r equt e
$r esul t at = mysql _quer y( $r equet e) or di e ( ' Er r eur ' . $r equet e. '
' . mysql _er r or ( ) ) ;

/ / t ant qu' i l y a un enr egi st r ement , l es i nst r uct i ons dans l a boucl e
s' excut ent
whi l e ( $l i gne = mysql _f et ch_assoc( $r esul t at ) ) {
$dat e = dat e( " d/ m" , st r t ot i me( $l i gne[ ' champ_dat e' ] ) ) ; / / on conver t i t l a
dat e dans un f or mat l i si bl e
$news . = ' <br / ><f ont col or =" #0000f f " ><b>' . $dat e. ' </ b></ f ont > <a
hr ef =" ht t p: / / www. not r e-
pl anet e. i nf o/ act ual i t es/ act ual i t es/ act u_' . $l i gne[ ' champ_numer o' ] . ' . php" >' . $l i gn
e[ ' champ_act u' ] . ' </ a>' ; / / mi se en pl ace d' un l i en sur l e t i t r e et aj out dans
l a var i abl e $news
}

echo $news; / / af f i chage de l a var i abl e $news qui s' est enr i chi e chaque
passage dans l a boucl e d' une act ual i t
Nous constatons que la fonction mysql_fetch_assoc() permet de rcuprer les valeurs de l'enregistrement en cours
tout en passant au suivant une fois la fonction appele. C'est dire qu'il n'est pas utile (comme en ASP par exemple)
d'indiquer que l'on souhaite maintenant lire le prochain enregistrement, ils sont lus squentiellement.
Notons qu'il n'est pas possible de "revenir en arrire", au premier enregistrement lire avec cette mthode. Le
rsultat sera le suivant :
04/02 De l'lectricit partir de la pression atmosphrique
03/02 Leffet de serre la lumire de lhistoire gologique
02/02 Journe mondiale des zones humides
01/02 Les poissons de la Baltique trop toxiques pour tre vendus en Europe
Avec ces quelques fonctions, nous sommes donc capables d'interfacer facilement PHP avec MySQL, les limites
tant celles de vos connaissances en algo et en MySQL ;-)
Les principales fonctions MySQL en PHP
Fonction Description
mysql_close() ferme la connexion MySQL
mysql_connect() ouvre une connexion un serveur MySQL
mysql_error() renvoie l'erreur MySQL rencontre
mysql_fetch_array() retourne une ligne de rsultat sous la forme d'un tableau associatif
mysql_fetch_assoc() lit une ligne de rsultat dans un tableau associatif
mysql_fetch_row() dcoupe une ligne de rsultat en un tableau
mysql_free_result() libre la mmoire du rsultat de la dernire requte
mysql_num_rows()
renvoie le nombre d'enregistrements rsultants d'une requte de type
SELECT
mysql_query() envoie une requte SQL
mysql_select_db() slectionne une base de donnes MySQL


les fonctions ci-dessus ont t slectionnes pour leur emploi courant dans les requtes aux bases MySQL. Vous
trouverez plus de dtails sur leurs fonctionnalits sur le site officiel PHP Hypertext Preprocessor o toutes les
fonctions PHP sont expliques et commentes en franais :-)

Dtaillons quelque peu la fonction mysql_num_rows() qui permet de compter le nombre d'enregistrements retourns
par une requte de slection pour mentionner par exemple le nombre de photos de phnomnes naturels
disponibles sur le portail notre-planete.info
$r equet e = " SELECT * FROM t abl e_phot os WHERE
champ_cat egor i e=' phenomenes_nat ur el s' " ;
$r esul t at = mysql _quer y( $r equet e) or di e ( ' Er r eur ' . $r equet e. '
' . mysql _er r or ( ) ) ;
$nombr e = mysql _num_r ows( $r esul t at ) ;
echo $nombr e. ' phot os de phnomnes nat ur el s di sponi bl es ! ' ;
Ce qui nous donnera :
105 phot os de phnomnes nat ur el s di sponi bl es !
Rcapitulons : se connecter et effectuer une requte
Prenons l'exemple d'une visualisation de toutes les actualits en environnement de l'anne en cours sur le portail
notre-planete.info
Nous choisirons ici de privilgier l'inclusion du fichier contenant les identifiants pour se connecter la base de
donnes, pour les raisons voques prcedemment

Contenu du fichier id_connect.inc.php :
$ser veur = " mysql . net al ya. com" ;
$nom_base = " cour sPHP" ;
$l ogi n = " cour s" ;
$mot depasse = " php" ;
mysql _connect ( $ser veur , $l ogi n, $pwd) or di e ( ' ERREUR ' . mysql _er r or ( ) ) ;
Inclusion et requte :
echo ' <t abl e>' ; / / l es act ual i t s ser ont mi ses dans un t abl eau
/ / on r cupr e l es i dent i f i ant s de connexi on l a base de donnes vi a
l ' i ncl usi on du f i chi er i d_connect . i nc. php
i ncl ude ( $_SERVER[ " DOCUMENT_ROOT" ] . " / i nc/ i d_connect . i nc. php" ) ;

$annee = 2005; / / annee souhai t e
$r ubr i que = " envi r onnement " ; / / r ubr i que af f i che

/ / r equt e de sl ect i on
$r equet e = " SELECT * FROM champ_act ual i t es WHERE cat egor i e=' $r ubr i que' AND
YEAR( dat e) =$annee ORDER BY dat e DESC" ;
$r esul t at = mysql _quer y( $r equet e) or di e ( ' Er r eur ' . $r equet e. '
' . mysql _er r or ( ) ) ;
$n = mysql _num_r ows( $r esul t at ) ;
f or ( $i =0; $i <$n; $i ++) {
$l i gne = mysql _f et ch_r ow( $r esul t at ) ;
$dat e = dat e( " d/ m" , st r t ot i me( $l i gne[ 2] ) ) ;
$l i st e . = ' <t r ><t d' ;
i f ( $i %2==0)
$l i st e . = ' bgcol or =" #eeeeee" ' ;
$l i st e . = ' ><f ont col or =" #00216A" ><b>' . $dat e. ' </ b></ f ont > - <a
hr ef =" act u_' . $l i gne[ 0] . ' . php" >' . $l i gne[ 4] . ' </ a></ t d></ t r >' ;
}

echo $l i st e. ' </ t abl e>' ;
Cet exemple complet introduit de nouveaux lments :
on peut directement insrer des variables PHP dans la requte ce qui nous donne plus de souplesse avec
des requtes dynamiques qui peuvent par exemple prendre en compte une prfrence utilisateur via un
formulaire
l'utilisation de la fonction mysql_fetch_row retourne les valeurs de l'enregistrement en cours sous forme
d'un tableau index avec des nombres. A ce titre, si dans la structure de notre table le premier champ est
le "numro" de l'actualit, on le rcuprera via la variable "$ligne[0]" (les indices commencant 0)
Enfin, voyons comment s'effectuent d'autres types de requtes sur une base de donnes : effacement, mise jour...


Qu'est-ce que PHP ?
PHP est un langage de programmation qui s'intgre dans vos pages HTML. Il permet entre autres de rendre
automatiques des tches rptitives, notamment grce la communication avec une base de donnes (utilisation la
plus courante de PHP). Le but des exercices de phpDbutant est de vous apprendre matriser les bases de ces
deux outils (PHP et base de donnes), afin que vous puissiez laborer vos propres applications.
Mais, avant de continuer, il est bon d'expliquer comment se droule une requte HTTP : en clair que se passe-t-il
lorsque vous tapez une adresse dans votre navigateur, o interviennent PHP et MySQL (la base de donnes), et les
consquences que cela implique.
Voici, en simplifiant, ce qu'il se passe lorsque vous consultez une page html dite statique :

Votre navigateur envoie l'adresse URL (Uniform Ressource Locator) que vous avez tape
Le serveur web est un "ordinateur" prsent sur l'Internet et qui hberge la page que vous demandez. Sur
ce serveur on trouve Apache, logiciel apte traiter les requtes HTTP que vous envoyez lorsque vous
demandez une page web. Apache va donc chercher le fichier demand dans son arborescence et renvoie
votre navigateur la page HTML
Votre navigateur interprte les diffrents langages se trouvant dans ce fichier (HTML, J avaScript, CSS,
etc ...) et affiche la page.
Maintenant, voyons ce qui se passe lorsque votre page HTML contient du code PHP :

Votre navigateur envoie l'adresse que vous avez tape
Le serveur web cherche dans son arborescence si le fichier existe, et si celui-ci porte une extension
reconnue comme une application PHP (.PHP, .PHP3, .PHP4 par exemple). Si c'est le cas, le serveur web
transmet ce fichier PHP.
PHP parse le fichier, c'est--dire qu'il va analyser et excuter le code PHP qui se trouve entre les balises
<?php et ?>. Si ce code contient des requtes vers une base de donnes MySQL, PHP envoie la requte
SQL. La base de donnes renvoie les informations voulues au script qui peut les exploiter (pour les
afficher par exemple).
PHP continue de parser la page, puis retourne le fichier dpourvu du code PHP au serveur web.
Le serveur web renvoie donc un fichier ne contenant plus de PHP, donc seulement du HTML au
navigateur qui l'interprte et l'affiche.
Vous remarquez donc que PHP s'excute ct serveur. Il n'y a plus aucune trace du code PHP lorsque vous
regardez le code source de la page dans votre navigateur PHP.
La base de donnes la plus couramment utilise avec PHP est sans aucun doute MySQL. A quoi sert une base de
donnes ? Lorsque vous allez produire des informations dans votre script PHP, vous devez les stocker quelque part.
Si ce n'est pas le cas, elles seront alors perdues lorsque le serveur renverra la page html au client (votre navigateur).
Pour les stocker, il existe deux solutions: la premire consiste les enregistrer dans un fichier texte sur le serveur
(quelque part dans l'arborescence de votre hbergement), la seconde les enregistrer dans une base de donnes.
La sauvegarde dans un fichier texte n'est pas l'idal, notamment lorsque vous souhaitez chercher, modifier ou
supprimer une partie de l'information que vous stockez. Les bases de donnes ont t conues dans cette optique-l.
Vous verrez dans quelques exercices comment SQL permet de traiter l'information.
Utiliser PHP sur son ordinateur :
Pourquoi installer PHP sur son ordinateur ? Pour tester vos script PHP, vous allez tre amen les envoyer sur
votre hebergeur, sur Internet. Cependant il devient vite trs lourd de sans cesse renvoyer ces fichiers par FTP. C'est
pourquoi installer un serveur web sur son ordinateur est utile, et permet de tester ses scripts plus souplement.
Concrtement, votre ordinateur sera la fois client et serveur. Ainsi vous pourrez programmer en PHP sans avoir
besoin d'tre connect Internet, ce qui peut tre utile pour les personnes ne disposant pas de connexions illimites.
Alors que pour tester des pages web html en local, il suffit d'ouvrir le fichier dans un navigateur, il faut un serveur
web sur votre PC local pour tester une page PHP. Pour cela, il existe plusieurs utilitaires trs pratiques qui
installeront Apache, le serveur web le plus utilis, PHP, MySQL . Leur installation et son utilisation sont trs
simples et dtailles. Les plus connus sont :
EasyPHP : Vous le trouverez sur www.easyPHP.org, prsentation ici. De plus une FAQ est
disponible ici.
WAMP
Et le plus lger, mais trs fonctionnel MOV'AMP

Si vous tes sous linux, la plupart des distributions (RedHat, Mandrake, etc ...) installent par dfaut Apache, PHP et
MySQL. Un article sur Lea-linux indique comment installer Apache, PHP et Mysql si cela n'a pas t fait. Il se trouve
ici. De plus, une application similaire EasyPHP existe pour Linux, il s'agit de Linux Easy Installer.
De plus, la documentation officielle (cf lien ci-aprs) contient une partie consacre l'installation.
Quel outil pour faire du PHP ?
Pour faire du PHP, il ne vous faut rien d'autre qu'un simple diteur de texte. Vous en trouverez une liste ici ainsi
qu'un comparatif plutt complet ici.

Mais l'outil le plus indispensable est certainement la documentation officielle. Celle-ci est disponible ici. Elle contient
la description complte des fonctions, la syntaxe de PHP, comment l'installer ... C'est une mine d'or, prenez le temps
d'y jeter un oeil, et en cas de doute c'est ici que vous devez chercher en premier.
Enfin sachez utiliser ces merveilleux outils que sont les moteurs de recherche, et plus particulirement Google. En
cherchant bien vous trouverez facilement des ressources (documentation, tutorial, article, ...) dont vous aurez besoin.
Le but pour vous est de pouvoir tre autonome lorsque vous developperez et de savoir se dbrouiller seul face un
problme.
Notions essentielles !
Il est trs important de comprendre ce qui suit :
Il faut bien distinguer le client et le serveur (imaginez tout btement la scne dans un bar). Votre
navigateur est le client. C'est lui qui demande la page web que vous avez entre. Le serveur est
l'ordinateur sur l'Internet qui hberge cette page web. PHP s'excute donc ct serveur. Cependant, quand
PHP envoie une requte SQL au serveur MySQL, il est alors client, vous saisissez ? :)
En voici quelques consquences :
o Tout ce qui a trait la prsentation de la page (couleur du texte, etc..) est faire en HTML et
CSS, excuts ct client. PHP n'a rien voir avec le design de votre page
o Tout ce qui touche au comportement du navigateur est du domaine du J avaScript, lui aussi
excut par le client
o L'intert de PHP est de gnrer du HTML ou du J avascript dynamiquement. Le travail effectu
avec PHP sur votre page est totalement invisible pour le visiteur.
Le SQL est un langage a part entire de PHP, il ne faut surtout pas confondre les deux. C'est MySQL qui
parse (c'est dire analyse et excute) votre code SQL, PHP ne fait qu'envoyer une requte au serveur
MySQL
PHPMyAdmin n'est pas une base de donnes ! Il s'agit simplement d'un script PHP qui permet
d'administrer vos bases de donnes MySQL