Vous êtes sur la page 1sur 43

Introduction

Préambule

Un site ou site web (de l'anglais website, qui se traduit littéralement en français par site
de la toile) est un ensemble de pages web hyperliées entre elles et accessible à une adresse
web.

Le nombre de sites a augmenté rapidement en 2005 et en 2006 grâce à la popularité


croissante des blogs, des pages personnelles et des sites de petites entreprises.

1. Structure d’un site web

Un site web est un ensemble de pages qui peuvent être consultées en suivant des
hyperliens à l'intérieur du site. L'adresse web d'un site correspond en fait à l'URL d'une page
web, prévue pour être la première consultée : la page d'accueil en générale index.php ou
index.html.

La consultation des pages d'un site s'appelle une « visite », car les hyperliens devraient
permettre de consulter toutes les pages du site sans le quitter (sans devoir consulter une page
web hors du site).

2. Les types des sites

Il existe deux types de sites : les sites statiques et les sites dynamiques.

2.1. Site statique

Ce sont des "vitrines". Les visiteurs peuvent voir le contenu du site mais ne peuvent
pas y participer. Pour les réaliser, deux langages sont nécessaires : le (X)HTML et le CSS (en
théorie, il est toutefois possible d'utiliser uniquement le HTML ou le XHTML).

– Le (X)HTML permet d'écrire le contenu de sa page.


– Le CSS permet de la décorer.

1
2.2. Site dynamique

Ces sites ne sont pas que des "vitrines" : les visiteurs peuvent y participer. Pour les
réaliser, on a également besoin du (X)HTML et du CSS, mais il faut aussi un autre langage
qui crée dynamiquement les pages.

Il existe plusieurs langages pour créer ces pages (Java, C#, PHP, Ruby, Python, etc.).
Leurs rôles est d'analyser les requêtes des visiteurs pour ensuite fabriquer une réponse
adaptée.

3. Comment fonctionne un site web ?

Lorsqu’on visite un site web, on tape son adresse dans un navigateur web, que ce soit
Mozilla Firefox, Internet Explorer, Opera, Safari ou un autre.

Il faut savoir qu'Internet est un réseau composé d'ordinateurs. Ceux-ci peuvent être
classés en deux catégories.

Les clients : ce sont les ordinateurs des internautes. Votre ordinateur fait donc partie
de la catégorie des clients. Chaque client représente un visiteur d'un site web.

Les serveurs : ce sont des ordinateurs puissants qui stockent et délivrent des sites web
aux internautes, c'est-à-dire aux clients. La plupart des internautes n'ont jamais vu un serveur
de leur vie. Pourtant, les serveurs sont indispensables au bon fonctionnement du Web.

3.1. Cas d'un site statique

Lorsque le site est statique, La communication est donc plutôt basique:

1. le client demande au serveur à voir une page web ;


2. le serveur lui répond en lui envoyant la page réclamée sans les modifier.

Figure 1: Transferts avec un site statique

2
3.2. Cas d'un site dynamique

Lorsque le site est dynamique, il y a une étape intermédiaire : la page est générée (fig.
suivante).

1. Le client demande au serveur à voir une page web ;


2. le serveur prépare la page spécialement pour le client ;
3. le serveur lui envoie la page qu'il vient de générer.

Figure 2: Transfert avec un site dynamique


La page web est générée à chaque fois qu'un client la réclame. C'est précisément ce qui
rend les sites dynamiques vivants : le contenu d'une même page peut changer d'un instant à
l'autre.

4. De quels programmes a-t-on besoin ?

Selon que l'on crée un site statique ou un site dynamique, on a besoin de logiciels différents.
En fait, faire un site dynamique nécessite quelques logiciels supplémentaires.

4.1. Avec un site statique

Les webmasters qui créent des sites statiques avec HTML et CSS ont en général déjà tous les
programmes dont ils ont besoin.

 Un éditeur de texte : tel que le Bloc-notes livré avec Windows suffit, bien qu'il soit
recommandé d'utiliser un outil un peu plus évolué comme Notepad++.

 Un navigateur web : il permet de tester la page web. On peut utiliser par exemple
Mozilla Firefox, Internet Explorer, Google Chrome, Opera, Safari, ou tout autre
navigateur. Il est conseillé de tester son site régulièrement sur différents navigateurs.

3
4.2. Avec un site dynamique

Cependant, pour ceux qui travaillent sur des sites dynamiques, ces outils (éditeur de texte et
navigateur) ne suffisent pas. Il est nécessaire d'installer des programmes supplémentaires.

Ces programmes dont nous allons avoir besoin, quels sont-ils ?

 Apache : c'est ce qu'on appelle un serveur web. Il s'agit du plus important de tous les
programmes, car c'est lui qui est chargé de délivrer les pages web aux visiteurs.
Cependant, Apache ne gère que les sites web statiques (il ne peut traiter que des pages
HTML). Il faut donc le compléter avec d'autres programmes.

 PHP : c'est un plug-in pour Apache qui le rend capable de traiter des pages web
dynamiques en PHP. En clair, en combinant Apache et PHP, notre ordinateur sera
capable de lire des pages web en PHP.

 MySQL : c'est le logiciel de gestion de bases de données. Il permet d'enregistrer des


données de manière organisée (comme la liste des membres de votre site).

Tous ces éléments qui vont être utilisé pour créer des sites dynamiques sont libres et gratuits.
Certes, il en existe d'autres (parfois payants), mais la combinaison Apache + PHP + MySQL
est la plus courante sur les serveurs web, à tel point qu'on a créé des « packs » tous prêts qui
contiennent tous ces éléments.

Bien qu'il soit possible d'installer ces outils séparément, il est plus simple pour nous d'installer
un paquetage tout prêt : WAMP sous Windows, MAMP sous Mac OS X ou XAMPP sous
Linux.

A Retenir

– Site web dynamique = ensemble de page hyperlié dont le visiteur peut y participer.
– La page web est générée à chaque fois qu'un client la réclame.
– Pour créer un site web dynamique nous avons besoins d’un serveur web, SGBD et un
plug-in PHP ou tout simplement un paquet tels que WAMP ou easyPHP.

4
Chapitre I : Initiation au développement des sites
avec le langage PHP

1. Qu'est-ce que PHP?

PHP: Hypertext Preprocessor, plus connu sous son sigle PHP (acronyme récursif), est
un langage de programmation libre principalement utilisé pour produire des pages Web
dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel
langage interprété de façon locale. PHP est un langage impératif orienté-objet.

PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme
les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java
s'exécute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du
Perl et de Java.

Ses principaux atouts sont :

– Une grande communauté de développeurs partageant des centaines de milliers d'exemples


de script PHP ;
– La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL) ;
– La simplicité d'écriture de scripts ;
– La possibilité d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts
CGi, pour lesquels il faut écrire des lignes de code pour afficher chaque ligne en langage
HTML) ;
– La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont
supportés, mais le plus utilisé avec ce langage est MySQL, un SGBD gratuit disponible
sur de nombreuses plateformes : Unix, Linux, Windows, MacOs X, Solaris, etc...) ;
– L'intégration au sein de nombreux serveurs web (Apache, Microsoft IIS, etc.).

2. Typologie

La manière d'écrire les choses en langage PHP a son importance.

5
Le langage PHP est par exemple sensible à la casse (en anglais case sensitive), cela
signifie qu'un nom contenant des majuscules est différent du même nom écrit en minuscules.
Toutefois, cette règle ne s'applique pas aux fonctions, les spécifications du langage PHP
précisent que la fonction print peut être appelée print(), Print() ou PRINT().
Toute instruction se termine par un point-virgule.
Le tag de fin (?>) implique la fin d’instruction, et donc ajoute implicitement un point-virgule.
Les deux exemples suivants sont équivalents.
<?php
echo "Ceci est un test.";
?>
<?php echo "Ceci est un test." ?>

3. Implantation au sein du code HTML

Pour que le script soit interprété par le serveur deux conditions sont nécessaires :

– Le fichier contenant le code doit avoir l'extension telle que .php et non .html
– Le code PHP contenu dans le code HTML doit être délimité par des balises du
type <? et ?>

Pour des raisons de conformité avec certaines normes (XML et ASP par exemple),
plusieurs balises peuvent être utilisées pour délimiter un code PHP :

– <? et ?>
– <?php et ?>
– <script language="php"> et </script>
– <%php et %>
Un exemple de script simple

Voici ci-dessous l'exemple classique de script PHP :

<html>
<head><title>Exemple</title></head>
<body>
<?php
echo "Hello world";
?>
</body>
</html>

6
On notera bien évidemment que la fonction echo permet d'afficher sur le navigateur la chaine
délimitée par les guillemets.

4. Les commentaires

Une autre façon de rendre le code plus compréhensible consiste à insérer des
commentaires, des lignes qui seront tout simplement ignorées par le serveur lors de
l'interprétation.

Pour ce faire, il est possible, comme en langage C, d'utiliser des balises qui vont
permettre de délimiter les explications afin que l'interpréteur les ignore et passe directement à
la suite du fichier.
Ces délimiteurs sont /* et */. Un commentaire sera donc noté de la façon suivante :
/* Voici un commentaire! */

Le PHP supporte les commentaires comme en C, C++ et Shell Unix. Par exemple:

<?php
echo "Ceci est un test"; // Ceci est un commentaire sur une ligne comme en C++
/* Ceci est un commentaire sur plusieurs lignes,
Comme en C et C++ */
echo "Ceci est encore un test";
echo "Enfin, le test final"; # Ceci est un commentaire comme en Shell Unix
?>

Le premier type de commentaire ne "commente" que jusqu'à la fin de la ligne ou bien jusqu'à
la fin du bloc, cela dépant du premier rencontré.

<h1>Ceci est un <?# echo "simple";?> exemple.</h1>


<p>La ligne du dessus affichera 'Ceci est un exemple'.

Faites attention à ne pas emboiter les commentaires de type 'C', ce qui arrive de temps en
temps lorsque vous voulez commenter une grande partie de de code.

<?php
/*
echo "Ceci est un test"; /* Ce commentaire va poser un problème */
*/
?>

7
Il y a toutefois quelques règles à respecter :
– Les commentaires peuvent être placés n'importe où à l'intérieur des délimiteurs du script
– Les commentaires ne peuvent contenir le délimiteur de fin de commentaire (*/)
– Les commentaires ne peuvent être imbriqués
– Les commentaires peuvent être écrits sur plusieurs lignes
– Les commentaires ne peuvent pas couper un mot du code en deux

Il est possible aussi d'utiliser un type de commentaire permettant de mettre toute la fin
d'une ligne en commentaire en utilisant le double slash (//). Tout ce qui se situe à droite de ce
symbole sera mis en commentaire.

5. L'interprétation du code par le serveur

Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de
caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide
de balises spéciales et stocké sur le serveur.
Ce fichier doit avoir l'extension « .php » pour pouvoir être interprété par le serveur.
Lorsque le code est interprété, les espaces, retours chariot et tabulation ne sont pas pris
en com pte par le serveur. Il est tout de même conseillé d'en mettre afin de rendre le code plus
lisible.
Ainsi, lorsqu'un navigateur (le client) désire accéder à une page dynamique réalisé en PHP :

– le serveur reconnait l'extension d'un fichier PHP et le transmet à l'interpréteur PHP


– Dès que l'interpréteur rencontre une balise indiquant que les lignes suivantes sont du
code PHP, il ne lit plus les instructions: il les exécute!
– L'interpréteur exécute l'instruction puis envoie les sorties éventuelles au serveur
– A la fin du script, le serveur transmet le résultat au client (le navigateur).

8
Un script PHP est interprété par le serveur, les utilisateurs ne peuvent donc pas voir le code source!

Le code PHP stocké sur le serveur n'est donc jamais visible directement par le client puisque
dès qu'il en demande l'accès, le serveur l'interprète!
De cette façon aucune modification n'est à apporter sur les navigateurs.

6. SGBD supportés par PHP

PHP permet un interfaçage simple avec de nombreux systèmes de gestion de bases de


données (SGBD), parmi lesquels :

– Adabas D – MySQL
– dBase – Oracle
– Empress – PostgreSQL
– FilePro – Solid
– Informix – Sybase
– Interbase – Velocis
– mSQL – Unix dbm
A Retenir

– Php est un script interprété coté serveur


– Un script php doit être délimité par les balises <?php et ?>
– Une page contenant un script php doit être enregistré avec l‘extension .php
– PHP fait la différence entre majuscule et minuscule sauf pour les fonctions.
– echo est une "instruction" qui permet d’imprimer un string
– print est une fonction qui permet l’affichage d’une chaine de caractère
– On peut utiliser les commentaires mais pas des commentaires imbriqués.
– Php permet un interfaçage simple avec des nombreux SGBD

9
Chapitre II : La syntaxe de base

1. Structure d’un programme php

Le code PHP doit être inséré entre des balises <?php et ?>. Il existe des notations
raccourcies : <? et ?>, voire la notation ASP <% et %> (devrait être abandonnée avec PHP6),
mais celles-ci sont déconseillées, car elles peuvent être désactivées dans la configuration du
serveur (php.ini ou .htaccess) : la portabilité du code est ainsi réduite. Il existe aussi cette
syntaxe, peu courante : <script language="php"> et </script>.

Exemple :

1. <? echo ("Ceci est un exemple d'affichage à l'écran en PHP.\n"); ?>


2. <?php echo("Si vous voulez afficher du texte, faites comme ceci.\n"); ?>
3. <script language="php"> echo ("Certain éditeur n'accepte pas ces délimiteurs"); </script>
4. <% echo ("Vous pouvez aussi utiliser le style ASP comme délimiteur."); %>

2. Concept de variable et constant avec PHP

Une variable est un objet repéré par son nom, pouvant contenir des données,
qui pourront être modifiées lors de l'exécution du programme.

2.1. Identificateurs des variables

Avec PHP, les noms de variables doivent répondre à certains critères :

– Quel que soit le type de variable, son nom doit obligatoirement être précédé du
caractère dollar ($).
– un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_"
(pas par un chiffre)
– un nom de variable peut comporter des lettres, des chiffres, le caractère _ et les
caractères accentués (les espaces ne sont pas autorisés!)

Remarque : Les noms de variables sont sensibles à la casse (le langage PHP fait la
différence entre un nom en majuscule et un nom en minuscules), il faut donc veiller à utiliser
des noms comportant la même casse! Toutefois, les noms de fonctions font exception
à cette règle...

10
Nom de variable correct Nom de variable incorrect Raison
$Variable $Nom de Variable comporte des espaces

$Nom_De_Variable $123Nom_De_Variable commence par un chiffre

$nom_de_variable $toto@mailcity.com caractère spécial @

$nom_de_variable_123 $Nom-de-variable signe - interdit

$nom_de_variable nom_de_variable ne commence pas par $

2.2. Les types de variables

PHP supporte les types de données suivant :

– Scalaires (nombres entiers, nombres à virgule flottante, chaînes de caractères)


– Tableaux/tableaux associatifs
– Objets

Contrairement à de nombreux langages de programmation, les variables en PHP n'ont


pas besoin d'être déclarées c'est-à-dire qu’on peut les utiliser sans en avoir averti l'interpréteur
précédemment, ainsi si la variable existait précédemment, son contenu est utilisé, sinon
l'interpréteur lui affectera la valeur en lui assignant 0 par défaut.

2.2.1. Variables scalaires

Le langage PHP propose quatre types de variables scalaires :

– entiers: nombres naturels sans décimale (sans virgule)


– réels: nombres décimaux (on parle généralement de type double)
– booleén : true ou false

– chaines de caractères: ensembles de caractères


Il n'est pas nécessaire en PHP de typer les variables, c'est-à-dire de définir leur type, il suffit
de leur assigner une valeur pour en définir le type :

 Nombres entiers

Il est possible de spécifier les nombres entiers (Integer) de la manière suivante :


$a = 1234; # nombre entier en base 10
$a = -123; # nombre entier négatif
$a = 0123; # nombre entier en base 8, octale (équivalent à 83 en base 10)
$a = 0x12; # nombre entier en base 16, hexadécimale (équivalent à 18 en base 10)

11
 Les nombres à virgule flottante

Les nombres à virgule flottante ("doubles") peuvent êtres spécifié en utilisant la syntaxe
suivante:
$a = 1.234;
$a = 1.2e3;

 Les chaînes de caractères

Les chaînes de caractères peuvent être définit en utilisant deux types de délimiteurs.

- Les double-quottes (") : les variables à l'intérieure de la chaîne de caractères seront


remplacées. Comme en C ou en Perl, le caractère back slash (\) est utilisé pour
"protéger" un caractère spécial.
- les simple-quottes (') : les variables ne seront pas substituées et le caractère back slash
n'aura aucun effet (à deux exceptions près, pour "\\" et "\'" afin de pouvoir utiliser les
caractères simple-quotte et back slash dans la chaîne de caractère).

Il existe des caractères repérés par un code ASCII spécial permettant d'effectuer des
opérations particulières. Ces caractères peuvent être représentés plus simplement en langage
PHP grâce au caractère '\' suivi d'une lettre, qui précise qu'il s'agit d'un caractère de contrôle :

Caractère Description
" Guillemet
\\ barre oblique inverse (antislash)
\r retour chariot
\n retour à la ligne
\t Tabulation

2.2.2. Variables tableaux

PHP supporte les tableaux scalaires et les tableaux associatifs. En fait, il n'y a aucune
différence entre les deux. Ces tableaux stockent des données sous forme de liste. Ces données
sont accessibles grâce à un indice qui peut être :
- un index (un numéro représentant l'élément de la liste) on parle de tableaux scalaires.
- chaînes de caractères, pour les tableaux associatifs (parfois plus agréable à utiliser)
Il est possible de stocker des éléments de types différents dans un même tableau.

12
On peut créer un tableaux en utilisant les fonctions list() ou array() , ou bien en affectant
explicitement chacune des valeurs.Ainsi, pour désigner un élément de tableau, il suffit de faire
suivre au nom du tableau l'indice de l'élément entre crochets :
$Tableau[0] = 12;
$Tableau[1] = "php";

$Toto["Age"] = 27;
$Toto["Adresse"] = "22 rue la liberté";
$Toto["Nom"] = " Ben Salah";

$a["color"] = "red";
$a["taste"] = "sweet"; $a = array("color" => "red","taste" => "sweet",
$a["shape"] = "round"; "shape" => "round","name" => "apple",3 => 4);
$a["name"] = "apple";
$a[3] = 4;
Avec PHP, il n'est pas nécessaire de préciser la valeur de l'index lorsqu'on veut
remplir un tableau, car il assigne la valeur 0 au premier élément (si le tableau est vide)
et incrémente les indices suivants. De cette façon, il est facile de remplir un tableau
avec des valeurs.

$Mois [] =" Janvier ";


$Mois[] = "Février";
$Mois[] = "Mars";
Echo " $Moi[3] " ; //Mars

 Un tableau peut être classé en utilisant les fonctions asort() , arsort() , ksort() , rsort() ,
sort() , uasort() , usort() , et uksort() en fonction du type de classement voulu.
 La fonction count() est utilisé pour conter le nombre des éléments d’un tableau
 Pour se déplacer à l'intérieur d'un tableau on peut utiliser les fonctions next() et prev()
ou la fonction each() .

 Tableaux à plusieurs dimensions

Lorsqu'un tableau contient d'autres tableaux, on parle de tableaux multidimensionnels.

Il est possible de créer directement des tableaux multidimensionnels en utilisant plusieurs


paires de crochets pour les index (autant de paires de crochets que la dimension voulue). Par
exemple, un tableau à deux dimensions pourra être déclaré comme suit :

13
$Tableau[0][0] = 12;
$Tableau[0][1] = "php";
$Tableau[1][0] = 1245.652;
$Tableau[1][1] = "Au revoir";

Vous pouvez remplir un tableau à plusieurs dimensions par de nombreux moyens mais la
méthode la plus simple à comprendre est l'utilisation de la fonction array() .

La fonction array() peut être emboiter pour remplir un tableau à plusieurs dimension:

<? $a = array( "apple" => array(


"color" => "red",
"taste" => "sweet",
"shape" => "round"
),
"orange" => array(
"color" => "orange",
"taste" => "sweet",
"shape" => "round"
),
"banana" => array(
"color" => "yellow",
"taste" => "paste-y",
"shape" => "banana-shaped"
)
); echo $a["apple"]["taste"]; # affichera "sweet";
2.2.3. Les objets
Pour initialiser un objet, on doit utiliser la commande "new" afin de créer la variable, instance
de l'objet.
class toto {
function saluer() { echo "Salut Toto."; }
}
$objet = new toto;
$objet -> saluer ();
2.3. Conversion de type

La conversion de type en PHP fonctionne de la même manière qu'en C: le nom du type désiré
est écrit entre parenthèses devant la variable à "caster".

$foo = 10; // $foo is est du type "integer"


$bar = (double) $foo; // $bar est du type "double"

14
Les conversions autorisées sont:

- (int), (integer) - conversion vers le type "integer"


- (real), (double), (float) - conversion vers le type "double"
- (string) - conversion vers le type "string"
- (array) - conversion vers le type "array"
- (object) - conversion vers le type "object"

Il est à noter que les tabulations et les espaces sont autorisés à l'intérieur des parenthèses, donc
les lignes suivantes sont équivalentes:

$foo = (int) $bar;


$foo = ( int ) $bar;
Si on veut forcer une variable à être convertie en un certain type, on doit "caster" la
variable ou utiliser la fonction settype() .

Il est à noter qu'une variable peut se comporter de manière différente suivant les
situations, en fonction du type qui lui est affecté.

2.4. Portée (visibilité) des variables

 Une variable déclarée au début du code, c'est-à-dire avant tout bloc de donnée, sera
globale, on pourra alors les utiliser à partir de n'importe quel bloc d'instructions

 Une variable déclarée à l'intérieur d'un bloc d'instructions (dans une fonction ou une
boucle par exemple) aura une portée limitée à ce seul bloc d'instructions, c'est-à-dire
qu'elle est inutilisable ailleurs, on parle alors de variable locale
D'une manière générale il est préférable de donner des noms différents aux variables locales
et globales pour des raisons de lisibilité et de compréhension du code.

2.5. Définition de constantes

Un constant est une variable dont la valeur est inchangeable lors de l'exécution d'un
programme. Avec PHP, les constantes sont définies grâce à la fonction define().

la syntaxe de la fonction define() est la suivante :

define("Nom_de_la_variable", Valeur);

15
3. Les opérateurs

Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire
effectuer des opérations, les évaluer, ...

On distingue plusieurs types d'opérateurs :

- les opérateurs de calcul


- les opérateurs d'assignation
- les opérateurs d'incrémentation
- les opérateurs de comparaison
- les opérateurs logiques
- etc
3.1. Les opérateurs de calcul

Les opérateurs de calcul permettent de modifier mathématiquement la valeur d'une variable

Opérateur Dénomination Exemple Résultat (pour x=7)


+ addition $x+3 10
- soustraction $x-3 4
* multiplication $x*3 21
/ division $x/3 2.3333333
= affectation $x=3 Affecte 3 au variable $x
% modulo $x%3 1

3.2. Les opérateurs d'assignation

Opérateur Effet
+= 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

16
Ces opérateurs permettent de simplifier des opérations usuelles. Par exemple au lieu
d’écrire $x=$x+2 on peut écrire $x+=2.

Note: Il existe des fonctions PHP pour effectuer d’autres calculs, par exemple max() et min().
3.3. Les opérateurs d'incrémentation

Ce type d'opérateur permet d’augmenter ou de diminuer d'une unité une variable. Ces
opérateurs sont très utiles pour des structures telles que des boucles.

Opérateur Dénomination Syntaxe Résultat (avec x valant 7)


++ Incrémentation $x++ 8
-- Décrémentation $x-- 6

3.4. Les opérateurs de comparaison

Opérateur Dénomination Exemple Résultat


== égalité $x==3 1 si $x est égal à 3, sinon 0
< infériorité stricte $x<3 1 si $x est inférieur à 3, sinon 0
<= infériorité $x<=3 1 si $x est < ou = à 3, sinon 0
> supériorité stricte $x>3 1 si $x est supérieur à 3, sinon 0
>= supériorité $x>=3 1 si $x est > ou = à 3, sinon 0
!= différence $x!=3 1 si $x est différent de 3, sinon 0

3.5. Les opérateurs logiques (booléens)

Ce type d'opérateur permet de vérifier si plusieurs conditions sont vraies :

Opérateur Dénomination Syntaxe


|| ou OR OU logique ((condition1)||(condition2))
&& ou AND ET logique ((condition1)&&(condition2))
XOR OU exclusif ((condition1)XOR(condition2))
! NON logique (!condition)

3.6. (Les opérateurs bit-à-bit)

Ce type d'opérateur traite ses opérandes comme des données binaires, plutôt que des
données décimales, hexadécimales ou octales. Ces opérateurs traitent ces données selon leur
représentation binaire mais retournent des valeurs numériques standard dans leur format
d'origine.

17
Les opérateurs suivants effectuent des opérations bit-à-bit, c'est-à-dire avec des bits de même
poids.

Opérateur Dénomination Syntaxe Résultat


& ET bit-à-bit 9 & 12 (1001 & 1100) 8 (1000)
| OU bit-à-bit 9 | 12 (1001 | 1100) 13 (1101)
^ OU exclusif 9 ^ 12 (1001 ^ 1100) 5 (0101)
~ Complément (NON) ~9 (~1001) 6 (0110)

3.7. Opérateurs sur les chaînes

Addition de chaînes de caractères (concaténation) : Utiliser le ".",

Exemple:

- $a = "Hello "; $b = $a. "World!"; // now $b = "Hello World!"


- "Bonjour"."Au revoir" // "BonjourAu revoir"
Note: Il existe de fonctions PHP pour manipuler des strings

3.8. Les priorités

Lorsque l'on associe plusieurs opérateurs, il faut que l'interprêteur PHP sache dans
quel ordre les traiter, voici donc dans l'ordre décroissant les priorités de tous les opérateurs :

Priorité des opérateurs


+++++++++++++++ () []
++++++++++++++ -- ++ ! ~ -
+++++++++++++ * / %
++++++++++++ + -
+++++++++++ < <= >= >
++++++++++ == !=
+++++++++ &
++++++++ ^
+++++++ |
++++++ &&
+++++ ||
++++ ? :
+++ = += -= *= /= %= <<= >>= >>>= &= ^= |=
++ AND
+ XOR

18
4. Les structures conditionnelles
On appelle structure conditionnelle les instructions qui permettent de tester si une
condition est vraie ou non, (le PHP associe le mot clé true à 1 et false à 0).
La condition contient des opérateurs de comparaison et des opérateurs logiques. Ces
opérateurs peuvent être combinés entre eux, tout en prenant garde aux règles de priorités.
4.1. La structure if / else
La syntaxe générale est la suivante :

if ( condition )
{ Instruction1; }
else
{ Instruction2; }
4.2. La structure if / elseif / else

Si la condition peut retourner différents résultats plus que deux comme vrai ou faux,
on peut utiliser « elseif » comme suit :

if ( condition1 )
{ Instruction1; }
elseif ( condition2 )
{ Instruction2; }
else
{ Instruction3; }
Exemple
<? $x="a"
if ($x = = "a") { echo "a"; }
elseif ($x = = "b") { echo "b"; }
elseif ($x = = "c") { echo "c"; }
else { echo "autre"; }
?>
4.3. La structure switch

L'instruction switch clarifie le code et évite plusieurs if imbriqués ou l'utilisation de


elseif. Elle liste une série d'actions à exécuter en fonction d'une variable. PHP n'exécutera que
le cas où la valeur présente dans la liste est égale à l'expression conditionnelle à évaluer au
départ. En effet, la commande break permet de sortir du switch dès que la valeur a été trouvée
et le code correspondant a été exécuté. Si la commande break est omise, les instructions
suivantes seront exécutées. La syntaxe générale est la suivante :

19
switch ($var)
{
case v1 :
instructions 1;
break;
...
case vN :
instructions N;
break;
default : instructions par défaut;
break;
}
La variable doit être de type int, float ou string. Elle est évaluée puis le programme
exécute alors les instructions à partir de la valeur correspondante jusqu'à rencontrer le mot
break. Si aucune valeur correspondante n’est proposée alors le programme exécute les
instructions par défaut.

Exemple
<? $j=1
switch ($j)
{
case 1 : echo "Lundi";
break;
case 2 : echo "Mardi";
break;
//…
case 7 : echo "Dimanche";
break;
default : echo "erreur";
break;
}
?>
5. Les structures répétitives
5.1. La boucle While

Cette boucle appelée en algorithmique « tant que » permet d'effectuer les mêmes
opérations (bloc d'instructions) tant que la valeur de l'expression est vraie. Bien sûr, il faut
s'assurer qu'une instruction de la boucle rende le test faux, sinon la boucle s'exécutera à
l'infini. La syntaxe est la suivante :

20
while (expression)
{
Instructions;
}
Exemple :
<? $x = 3;
$i = 0;
WHILE ($i != $x)
{
echo "x n'est pas égal à $i<br>";
$i++; // $i++ est équivalent à $i=$i+1
}
echo "<b>x est égal à $i</b>";
?>
Le résultat de l’exécution de cet exemple donne :
x n'est pas égal à 0
x n'est pas égal à 1
x n'est pas égal à 2
x est égal à 3
5.2. La boucle Do While

Cette boucle appelée "répéter jusqu'à" en algorithmique fonctionne comme la boucle


while sauf que le bloc d'instruction est au moins exécuté une fois puisque le test se fait à la fin
de la structure. L’utilisation de cette boucle devient nécessaire lorsque l'on souhaite que les
instructions soient au moins effectuées une fois. Sa syntaxe est la suivante :

do
{
Instructions;
} while (expresion);
Exemple
<? $x=3;
$i = 0;
do {
echo "$i<br>";
$i ++;
}
while ($i < $x);
?>
Le résultat de l’exécution est:

21
0
1
2
5.3. La boucle For

Cette boucle permet d'exécuter une ou plusieurs instructions un certain nombre de fois.
La syntaxe est la suivante :

for (initialisation ; test ; itération )


{
Instructions;
}
L’exécution de cette boucle suit les étapes suivantes :

- L’initialisation est remplacée par une instruction d’initialisation du compteur.


- Le test est une expression booléenne qui test la valeur du compteur si le test
retourne vrai on exécute les instructions sinon la boucle s’arrête.
- L’instruction d’itération permet de modifier la valeur du compteur.
Exemple
<?
$x = 5;
for ($i=1; $i < $x; $i++)
{ echo ’’ligne $i<br>’’; }
?>
L’exécution de ce script PHP affiche :

ligne 1
ligne 2
ligne 3
ligne 4
5.4. Boucle Each/ foreach

« Each » n'est pas vraiment une boucle mais on l'utilise généralement conjointement à
un type de boucle. Elle est prévue spécialement pour parcourir les tableaux :

<?php
$membres = array('Salah', 'Ali', 'Amel');
print_r(each($membres));
print_r(each($membres));
print_r(each($membres)) ?>

22
Chaque utilisation de la fonction fait avancer le pointeur interne du tableau, c'est-à-
dire la position à laquelle PHP s'est arrêté la dernière fois qu'il a consulté le tableau.

Afin de simplifier son utilisation, on la couple souvent avec une boucle "while" :

<?php
$membres = array('Salah', 'Ali', 'Amel');
while(list($i, $membre) = each($membres))
{ echo $membre; }

Le mot clef "each" étant assez complexe à utiliser, PHP propose une boucle très
pratique : foreach.

<?php
foreach(<tableau> as <element>)
{
<instructions>
}
?>

<?php
foreach(<tableau> as <clef> => <element>)
{
<instructions>
}
?>
Exemple:

<?php
$membres = array('Salah', 'Ali', 'Amel');
//parcours du tableau :
foreach($membres as $membre)
{ echo $membre; //affiche tour à tour "Salah" puis "Ali" puis "Amel" }

//parcours avec clefs :


foreach($membres as $i => $membre)
{ echo $i . ' ' . $membre; //affiche tour à tour "0 Salah" puis "1 Ali" puis "2 Amel" }

//alternative :
foreach($membres as $i => $membre)
{ echo $i . ' ' . $membres[$i]; //affiche tour à tour "0 Salah" puis "1 Ali" puis "2 Amel" }
?>

23
6. Les fonctions utilisateurs

Une fonction peut être définie en utilisant la syntaxe suivante :

function nom_fonction ($arg_1, $arg_2, ..., $arg_n) {


instruction;
return $retval;
}

Tout code PHP correcte syntaxiquement peut apparaître dans une fonction et dans une
définition de classe.

Toutes fonctions doit être préalablement définies avant d'être utilisées.

6.1. Les valeurs de retour

Les valeurs sont renvoyées en utilisant une instruction de retour optionnelle. Tous
types de variables peuvent être renvoyés, tableau et objet compris.

function square ($num) {


return $num * $num;
}
echo square (4); // affiche la valeur '16'.

On ne peut pas renvoyer plusieurs valeurs en même temps, mais on peut obtenir un
résultat identique en renvoyant un tableau.

function small_numbers() {
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
6.2. Les arguments

Des informations peuvent être passées à une fonction en utilisant un tableau


d'arguments, dont chaque élément est séparé par une virgule. Un élément peut être une
variable ou une constante.

24
PHP support le passage d'argument par valeur (méthode par défaut), par référence, et
les valeurs par défaut des arguments. Une liste d'argument dont le nombre est variable ne
fonctionne pas en PHP mais un résultat similaire peut être obtenu en utilisant un tableau.

function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
6.3. Passage d'argument par référence

Par défaut, les arguments sont passés à la fonction par valeur (en modifiant la valeur
d'un argument dans la fonction, cela ne change pas sa valeur à l'extérieure de la fonction).

Si on veut que les fonctions changent la valeur des arguments, on doit passer ces
arguments par référence.

Si on veut qu'un argument soit toujours passé par référence, on peut ajouter un '&'
devant l'argument dans la déclaration de la fonction :

function add_some_extra(&$string) {
$string .= 'et du texte supplémentaire.';
}
$str = 'Ceci est une phrase, ';
add_some_extra($str);
echo $str; // affiche 'Ceci est une phrase, et du texte supplémentaire.'

Si on veut passer une variable par référence à une fonction mais de manière ponctuel,
on peut ajouter un '&' devant l'argument dans l'appel de la fonction:

function foo ($bar) {


$bar .= 'et du texte en plus.';
}
$str = 'Ceci est une phrase, ';
foo ($str);
echo $str; // affiche 'Ceci est une phrase, '
foo (&$str);
echo $str; // affiche 'Ceci est une phrase, et du texte en plus.'
6.4. Valeur par défaut des arguments

On peut définir des valeurs par défaut pour les arguments de type scalaire :

25
function makecoffee ($type = "cappucino") {
return "Making a cup of $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");

L'affiche de la fonction ci-dessus est :

Making a cup of cappucino.


Making a cup of espresso.

La valeur par défaut d'un argument doit obligatoirement être une constante, et ni une
variable ou un membre d'une classe.

En PHP 4.0, il est aussi possible de spécifier qu'un argument n'est pas affecté, (unset)
comme argument par défaut. Cela signifie que l'argument ne sera pas affecté, si aucune valeur
n'est passée comme argument.

Il est à noter qu’on utilise les arguments par défaut, la valeur par défaut doit se trouver
du côté droit du signe '='; sinon, cela ne fonctionnera pas. Considérons le code suivant :

function makeyogurt ($type = "acidophilus", $flavour) {


return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // ne fonctionne pas correctement.

L'affiche du code ci-dessus est le suivant :

Warning: Missing argument 2 in call to makeyogurt() in


/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41
Making a bowl of raspberry .

Maintenant comparons l'exemple suivant avec l'exemple suivant :


function makeyogurt ($flavour, $type = "acidophilus") {
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // fonctionne correctement.

L'affichage de cet exemple est le suivant :


Making a bowl of acidophilus raspberry.

26
Chapitre III : Les formulaires

Introduction

Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page
web d'éléments interactifs permettant par exemple un dialogue avec les internautes.
 L'un des intérêts de PHP est sa capacité à exploiter ces données.
Le lecteur saisit des informations en remplissant des champs ou en cliquant sur des
boutons, puis appuie sur un bouton de soumission (submit) pour l'envoyer soit à un URL,
c'est-à-dire de façon générale à une adresse e-mail ou à un script de page web dynamique tel
que PHP, ASP ou un script CGI.

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 contrôle : zones de texte, boutons radio, cases à
cocher, listes déroulantes,... Chacun de ces éléments se caractérise par un attribut "name" qui
définira tout simplement le nom de la variable à récupérer en PHP avec la valeur entrée par
l'utilisateur. Elle possède les attributs obligatoires suivants :

– METHOD: spécifie la méthode de transmission GET ou POST :


 « POST » est la valeur qui correspond à un envoi de données stockées dans
le corps de la requête,
 tandis que « GET » correspond à un envoi des données codées dans l'URL,
et séparées de l'adresse du script par un point d'interrogation.
– ACTION: permet de spécifier la page qui traitera les données fournies dans le
formulaire (exemple adresse email (mailto:adresse.email@machine)).

2. Envoi des données

Lorsqu'un formulaire est soumis (appui sur le bouton de soumission), les données présentes
dans le formulaire sont envoyées au script d’une page web dynamique sous forme de paires
nom/valeur, c'est-à-dire un ensemble de données représentées par le nom de l'élément de

27
formulaire, le caractère "=", puis la valeur associée. L'ensemble de ces paires nom/valeur
étant séparées entre elles par des esperluettes (caractère &). Les données envoyées
ressembleront donc à ceci :
champ1=valeur1&champ2=valeur2&champ3=valeur3

Dans le cas de la méthode GET (envoi des données à travers l'URL), l'URL ressemblera à une
chaîne du genre :
URL?champ1=val1&champ2=val2
2.1. Envoi des données avec POST

Tous les contrôles du formulaire qui possèdent un attribut "name" engendrent la


création d'une variable globale dont le nom est $_POST["nom_variable"] et la valeur est
fonction des renseignements saisis par l'utilisateur. L'emploi de la syntaxe $_POST pour
indiquer que la variable a été construite à partir de la méthode POST.
Exemple :
<!--page exemple.php-->
<form action="resultat.php" method="post">
Entrez votre prénom : <input type="text" name="prenom"> </input>
<input type="submit" value="valider"> </input>
</form>
Ce qui donnera sur le navigateur :
valider
Entrez votre prénom :

Sur cet exemple, l'utilisateur a la possibilité de spécifier le prénom, cette donnée sera
exploitable dans la page resultat.php sous la forme d'une variable $_POST["prenom"]
(composée de la valeur de l'attribut "name" de la zone de texte à remplir). Ainsi si on met le
code suivant dans la page resultat.php :
<?
echo "Prénom = ";
echo $_POST["prenom"];
?>
// On aura : Prénom = Ali

2.2. Envoi des données avec GET

Les variables ne transitent pas toujours via un formulaire mais aussi par l'URL via la
méthode GET. Les variables sont ensuite exploitables sur la page cible. Pour déclarer une

28
variable qui sera visible dans la page cible il suffit donc de placer à la fin de l'URL un ? Suivi
d'un couple nom=valeur en séparant les variables par un & lorsqu'il y en a plus d'une.
On peut donc faire transiter un certain nombre de variables par l'URL en répétant la
forme : url.php?var1=valeur1&var2=valeur2&varN=valeurN avec une limite fixée à 255
caractères. Dans le cas d'une seule variable on ne met pas &, nous aurons :
url.php?var1=valeur1.
La récupération des variables se fait avec la syntaxe : $var1 = $_GET["var1"] par
exemple pour la variable 1.

Exemple

<!--page exemple.php-->
<?
echo 'Choisir une action<br>';
echo '1. <a href="dossier.php?page=2&n=15">lire la suite</a><br>';
echo '2. <a href="dossier.php?fin=1">terminer</a>';
?>
<!---------------------------------------------------------------------->
<!--page dossier.php-->
<?
if ( $_GET["fin"]= =1 ) {
echo 'Fin de lecture';
}
else {
$page = $_GET["page"];
$nbpage = $_GET["n"];
echo 'Dossier - page '.$page.' sur '.$nbpage;
}
?>
3. Les contrôles d’un formulaire

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 :

– La balise INPUT: un ensemble de boutons et de champs de saisie


– La balise TEXTAREA: une zone de saisie
– La balise SELECT: une liste à choix multiples

29
3.1. 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 name est essentiel car il permettra la connaissance du champ associé à la paire
nom/valeur, c'est-à-dire que le nom du champ sera suivi du caractère "=" puis de la valeur
entrée par l'utilisateur, ou dans le cas contraire de la valeur par défaut repéré par l'attribut
value. 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 :

– checkbox: il s'agit de cases à cocher pouvant admettre deux états : checked (coché) et
unchecked (non coché). Lorsque la case est cochée la paire nom/valeur est envoyée.
– hidden: il s'agit d'un champ caché. Ce champ non visible sur le formulaire permet de
préciser un paramètre fixe qui sera envoyé.
– file: il s'agit d'un champ permettant à l'utilisateur de préciser l'emplacement d'un fichier
qui sera envoyé avec le formulaire. Il faut dans ce cas préciser le type de données
pouvant être envoyées grâce à l'attribut ACCEPT de la balise FORM
– image: il s'agit d'un bouton de soumission personnalisé, dont l'apparence est l'image
situé à l'emplacement précisé par son attribut SRC (source).
– password: il s'agit d'un champ de saisie, dans lequel les caractères saisis apparaissent
sous forme d'astérisques (*) afin de camoufler la saisie de l'utilisateur.
– radio: il s'agit d'un bouton permettant un choix parmi plusieurs proposés (l'ensemble
des boutons radios devant porter le même attribut name. La paire nom/valeur du bouton
radio sélectionné sera envoyé au CGI. Un attribut checked pour un des boutons permet
de préciser le bouton sélectionné par défaut
– reset: il s'agit d'un bouton de remise à zéro permettant uniquement de rétablir
l'ensemble des éléments du formulaire à leurs valeurs par défaut
– submit: il s'agit du bouton de soumission permettant l'envoi du formulaire. Le texte du
bouton peut être précisé grâce à l'attribut « value ».
– text: il s'agit d'un champ de saisie permettant la saisie d'une ligne de texte. La taille du
champ peut être définie à l'aide de l'attribut size et la taille maximale du texte saisi grâce
à l'attribut maxlength

30
Exemples

<input type="text" name="texte1">


 La valeur de l’attribut « name » permet au code php de récupérer la valeur saisi par
l’utilisateur dans la variable $_POST ou $_GET.

<input type='submit' value='OK'>


 Il est introduit par la balise <input> avec la valeur « submit » pour l’attribut « type ».
La valeur de l’attribut « value » spécifie le texte du bouton. Le click sur le bouton
implique l’exécution du code php associé au formulaire.

<input type="radio" name="R1" value="V1">V1 <br>


<input type="radio" name="R1" value="V2">V2 <br>
 La valeur de l’attribut « name » permet au code php de récupérer la valeur saisie par
l’utilisateur. L’attribut « value » permet de spécifier la valeur associée à chaque
bouton, ainsi on peut tester le choix de l’utilisateur parmi la liste de sélection grâce à
cette valeur.

<input type="checkbox" name="C1" value="oui" checked >


 Le traitement est semblable au cas des boutons radio, à la différence que chaque case
possède une valeur propre distinct des autres de l’attribut « name ». L’attribut
« checked » s’il est présent indique que la case est cochée.

3.2. Zone de texte étendu La balise TEXTAREA

La balise TEXTAREA permet de définir une zone de saisie plus vaste (plusieurs
lignes) par rapport à la simple ligne de saisie que propose la balise INPUT. Cette balise
possède les attributs suivants :

– cols: représente le nombre de caractères que peut contenir une ligne


– rows: représente le nombre de lignes
– name: représente le nom associé au champ, c'est le nom qui permettra d'identifier le
champ dans la paire nom/valeur
– readonly: permet d'empêcher l'utilisateur de modifier le texte entré par défaut dans le
champ
– value: représente la valeur qui sera envoyée par défaut au script si le champ de saisie
n'est pas modifié par une frappe de l'utilisateur

<textarea name="description" > </textarea>

31
3.3. 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 :

– name: représente le nom associé au champ, c'est le nom qui permettra d'identifier le
champ dans la paire nom/valeur
– disabled: permet de créer une liste désactivée, c'est-à-dire affichée en grisée
– size: représente le nombre de lignes dans la liste (cette valeur peut être plus grande que le
nombre d'éléments effectifs dans la liste)
– multiple: marque la possibilité pour l'utilisateur de choisir plusieurs champs dans la liste

Exemple

<select name="L1">
<option value="E1">Element1</option>
<option value="E2">Element2</option>
</select>

4. Un exemple de formulaire

Les formulaires peuvent être mis en page à l'aide de tableaux (cela est même conseillé pour
avoir une mise en page soignée). Voici un exemple :

<FORM method=post action="enregistrer.php">


Enregistrement d'un utilisateur
<TABLE BORDER=0>
<TR>
<TD>Nom</TD>
<TD> <INPUT type=text name="nom"> </TD>
</TR>
<TR>
<TD>Prénom</TD>
<TD> <INPUT type=text name="prenom"> </TD>
</TR>
<TR>
<TD>Sexe</TD>
<TD>
Homme : <INPUT type=radio name="sexe" value="M">
<br>Femme : <INPUT type=radio name="sexe" value="F">
</TD>
</TR>

32
<TR>
<TD>Fonction</TD>
<TD>
<SELECT name="fonction">
<OPTION VALUE="enseignant">Enseignant</OPTION>
<OPTION VALUE="etudiant">Etudiant</OPTION>
<OPTION VALUE="ingenieur">Ingénieur</OPTION>
<OPTION VALUE="retraite">Retraité</OPTION>
<OPTION VALUE="autre">Autre</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD>Commentaires</TD>
<TD>
<TEXTAREA rows="3" name="commentaires">
Tapez ici vos commentaires</TEXTAREA>
</TD>
</TR>
<TR>
<TD COLSPAN=2> <INPUT type="submit" value="Envoyer"> </TD>
</TR>
</TABLE>
</FORM>

Voici le résultat de ce code HTML

Enregistrement d'un utilisateur

Nom

Prénom

Homme :
Sexe
Femme :

Fonction

Commentaires

Envoyer

33
Chapitre IV : Accès aux bases de données

Introduction

L'intérêt majeur de PHP est son interfaçage avec un grand nombre de bases de
données. Pratiquement tous les SGBD sont pris en charge, mais PHP s'utilise souvent avec le
SGBD MySQL. Pour créer une base de données avec MySQL on utilise un utilitaire
approprié. Ensuite l’exploitation de cette base de données avec PHP s'effectue en 5 étapes :

– connexion à MySQL
– sélection de la base de données
– exécution de requêtes sur la base de données
– exploitation des résultats de la requête
– fermeture de la connexion à MySQL
1. Connexion à une base de données MySQL

Avant d'exploiter les données qui se trouvent dans la base, il faut ouvrir une connexion
qui ne sera fermé qu'une fois toutes les opérations sont effectuées. La base de données se
trouve sur un serveur désigné avec un nom de domaine, une adresse IP ou un alias.

La première étape consiste à déclarer les variables qui vont permettre la connexion à la
base de données (ce sont les paramètres des fonctions de connexion à la base). Ces variables
sont :
– $user : Le nom d'utilisateur
– $passwd : Le mot de passe
– $host : L'hôte (ordinateur sur lequel le SGBD est installé)
– $bdd : Le nom de la base de données

Rappel: Les variables ne sont pas visibles par vos visiteurs étant donné que le script (portant
l'extension .php3) est systématiquement interprété par le serveur Web !

Ces variables sont en fait des paramètres de la fonction permettant la connexion à la


base de données. Il est donc possible de passer les valeurs de ces variables directement dans
chaque fonction permettant la connexion, mais cela devient vite gênant lors d'un changement
de mot de passe par exemple.

34
Le comble de l'élégance voudrait que l'on stocke ces valeurs dans un fichier à part,
afin de changer les valeurs dans tous les fichiers y faisant référence en une seule fois.
Pour se connecter, on utilise la fonction mysql_connect () qui retourne vrai si la
connexion a réussi et faux sinon, comme suit :
<?php
// Déclaration des paramètres de connexion
$host = la_machine; // Généralement la machine est localhost
// C’est-a-dire la machine sur laquelle le script est hébergé
$user = votre_login;
$bdd = Nom_de_la_base_de_donnees;
$passwd = Mot_de_passe;
// Connexion au serveur
mysql_connect($host, $user,$passwd);
?>
Exemple :
<?
$serveur = "mysql.com";
$login = "cours";
$pwd = "php";
mysql_connect ($serveur, $login, $pwd) ;
?>
2. Sélection de la base de données

Pour sélectionner une base de données on utilise la fonction mysql_select_db () qui


prend en entrée un nom de base de données et retourne vrai si la base de données existe et
faux sinon. A la suite du code précédent on utilise cette fonction comme suit :
<?
$nom_base = "coursPHP";
mysql_select_db ($nom_base) ;
?>
3. Exécution de requêtes et exploitation des résultats

Une fois nous sommes connectés à une base de données MySQL, nous pouvons
effectuer des tâches classiques dans un SGBD, à savoir :
– ajouter un enregistrement,
– modifier un enregistrement,
– supprimer un enregistrement
– et afficher le résultat d'une requête select.

35
Toutes ces actions sont directement effectuées en SQL en utilisant la requête
appropriée qui sera exécuter en utilisant la fonction PHP mysql_query ().
$requete = "requête SQL";
$res = mysql_query ($requete);// ou encore mysql_query ($requete);
Cet exemple permet de comprendre comment PHP s'interface avec MySQL : une
requête SQL est passée en argument de la fonction mysql_query (), cette requête est déclarée
dans une variable de type chaîne de caractères. De la même façon, on peut exécuter toute
autre requête.

3.1. Cas de la requête SELECT

Le résultat de la requête select se trouve dans la variable nommée $res. Ce résultat


peut ensuite être affiché en utilisant la fonction mysql_result($res, $i, "nom_colonne") qui
prend en entrée le résultat de l’exécution de la requête, le numéro de la ligne à laquelle on
veut accéder et le nom de la colonne qu’on veut avoir, et retourne la valeur d’une colonne
pour la ligne donnée, la 1ère ligne à pour indice 0.
Dans le cas où la requête select retourne plusieurs lignes, il suffit d'effectuer une
boucle while qui lira tous les enregistrements jusqu'au dernier. La fonction mysql_num_rows
($res) permet de compter le nombre de ligne du résultat de la requête.
Exemple :

Supposons qu’on a dans notre base de données une table etudiant qui contient les
champs numero, nom, age. Le code PHP suivant permet d’afficher le contenu de cette table, la
connexion et la sélection de la base sont déjà faites :
<?
$requete = "SELECT * FROM Etudiant";
$res = mysql_query ($requete);
$nb = mysql_num_rows($res);
$i=0;
while($i!=$nb) {
$num = mysql_result($res,$i,"numero");
$nom = mysql_result($res,$i,"nom");
$age = mysql_result($res,$i,"age") ;
echo "Numero = $num -- Nom = $nom -- Age = $age <br>";
$i++;
}
mysql_close (); // fermer la connexion
?>

36
3.2. Cas de la requête INSERT

On veut insérer dans la table « etudiant » des valeurs saisie par l’utilisateur. Pour cela
on doit créer une page nommée « saisie.htm » qui contient un formulaire dans lequel on
trouve 3 zones de texte pour la saisie du numero, nom et age, et un bouton pour l’insertion et
qui a l’interface suivante :

Le code de la page « saisie.htm » est le suivant :


<html>
<head></head>
<body>
<form action="inser.php" method="post">
Numero<input type="text" name="num"><br>
Nom<input type="text" name="nom"><br>
Age<input type="text" name="age"><br>
<input type="submit" value="Insérer">
</form>
</body>
</html>
Le clic sur le bouton « Insérer » doit insérer les données saisies par l’utilisateur dans le
formulaire dans la table etudiant, et ceci se fait en exécutant le code PHP qui se trouve dans la
page « inser.php ».

Le code de la page « inser.php » est le suivant :

<?
mysql_connect("mysql.com", "cours", "php");
mysql_select_db("coursPHP");
$num=$_POST["num"];
$nom=$_POST["nom"];
$age=$_POST["age"];
if ( mysql_query("insert into etudiant values($num,'$nom',$age)") )
echo " Insertion OK ";

37
else
{
$erreur = mysql_error(); echo "$erreur";
}
mysql_close();
?>

Remarque :

On n’a pas besoin de faire commit.

On doit vérifier que la requête s’est exécuter correctement sinon on affiche l’erreur qui s’est
produite grâce à la fonction mysql_error().

3.3. Cas de la requête UPDATE

Supposons qu’on a dans notre base de données un étudiant qui a le N° 1. On veut


modifier l’âge du de cet étudiant en utilisant une page PHP nommée « modif.php ».
Le code de la page « modif.php » est le suivant :

<?
mysql_connect("mysql.com", "cours", "php");
mysql_select_db("coursPHP");
$a = 30;
if ( mysql_query("UPDATE etudiant SET age=$a where numero=1") )
echo "Table modifié ";
else
{
$erreur = mysql_error();
echo "$erreur";
}
mysql_close();
?>

3.4. Cas de la requête DELETE

On veut supprimer de la table « etudiant » l’étudiant qui a un numéro saisi par l’utilisateur.
Pour cela on doit créer une page nommée « choix.htm » qui contient un formulaire dans
lequel on trouve une zone de texte pour la saisie du numero et un bouton pour la suppression
et qui a l’interface suivante :

38
Le code de la page « choix.htm » est le suivant :

<html>
<head></head>
<body>
<form action="supprime.php" method="post">
Choix du Numéro: <br>
Numero:<input type="text" name="num"><br>
<input type="submit" value="Supprimer">
</form>
</body>
</html>

Le clic sur le bouton « Supprimer » doit supprimer la ligne de l’étudiant qui a le


numéro saisie par l’utilisateur, et ceci se fait en exécutant le code PHP qui se trouve dans la
page « supprime.php ».
Le code de la page « supprime.php » est le suivant :
<?
mysql_connect("mysql.com", "cours", "php");
mysql_select_db("coursPHP");
$num = $_POST["num"];
$n = 0;
if ( $num != "" )
{
$res = mysql_query("select * from etudiant where numero = $num");
$n = mysql_num_rows($res);
}
if ( $n != 0 )
{
mysql_query("delete from etudiant where numero = $num");
echo "On a supprimé $n ligne";
}
else
echo "L'étudiant n'existe pas";
mysql_close();
?>

39
4. fermeture de la connexion à MySQL

Une fois on a terminé d’exploiter les données de la base on doit fermer la connexion en
utilisant la fonction mysql_close ().

5. Gestion des erreurs

Certaines de ces fonctions renvoient une valeur permettant de connaître l'état de la


connexion, ainsi il est possible d'interrompre le script afin d'éviter les erreurs en cascade.
Deux méthodes permettent d'effectuer cette opération :
Le stockage du résultat de l'exécution de la fonction dans une variable. Par exemple :

$connect = mysql_connect($host,$user,$passwd);

L'utilisation de la fonction die() en cas d'erreur d'exécution. Si la fonction retourne la valeur 0


(c'est-à-dire s'il y a une erreur) la fonction die() (traduisez meurt) renvoie un message d'erreur.
Par exemple :

mysql_connect($host,$user,$passwd)
or die("erreur de connexion au serveur $host");
6. Traitement des résultats

Lorsque l'on effectue une requête de sélection de tuples à l'aide de la


fonction mysql_query, il est essentiel de stocker le résultat de la requête (les enregistrements)
dans une variable, que l'on nomme généralement $result.
Toutefois, cette variable contient l'ensemble des enregistrements et n'est donc pas
exploitable telle quelle. Ainsi on utilise la fonction mysql_fetch_row(), qui découpe les lignes
de résultat en colonnes (par exemple Nom,adresse,...) et les affecte à une variable tableau dans
l'ordre où elles arrivent.
Ainsi, imaginons une table appelée liens contenant le nom et l'URL de sites internet. Il est
possible de récupérer l'ensemble des enregistrements et de les afficher dans un tableau :

<html>
<head>
<title>Liens</title>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0">

40
<tr>
<th>Nom du site</th>
<th>URL</th>
</tr>

<?php
// Déclaration des paramètres de connexion
$host = la_machine; // Généralement la machine est localhost
$user = votre_login;
$bdd = Nom_de_la_base_de_donnees;
$passwd = Mot_de_passe;

// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

// Creation et envoi de la requete


$query = "SELECT nom,url FROM sites ORDER BY nom";
$result = mysql_query($query);

// Recuperation des resultats


while($row = mysql_fetch_row($result)){
$Nom = $row[0];
$Url = $row[1];
echo "<tr>\n
<td><a href=\"$Url\">$Nom</a></td>\n
<td>$Url</td>\n
</tr>\n";
}

// Deconnexion de la base de donnees


mysql_close();

?>

</tr>
</table>
</body>
</html>

Dans l'exemple ci-dessus, les requêtes retournent les champs nom et url.

41
La fonction mysql_fetch_row() analyse donc chaque ligne de résultat de la requête et stocke
les colonnes dans le tableau row[].
 Ainsi, le champ nom sera stocké dans row[0] et url dans row[1].
D'autre part, on inclue généralement mysql_fetch_row() dans une boucle while de telle façon
à ce que l'ensemble des lignes de résultat soient traitées. Lorsqu'il n'y a plus de ligne à traiter,
la boucle while se termine et l'interpréteur exécute la suite des instructions.

7. Détecter un résultat nul

Il peut être utile, avant d'insérer des données dans une table, de détecter la présence d'un
enregistrement dans une table, afin d'éviter de stocker des doublons. Cela peut se faire en
effectuant une requête SQL avec un ordre SELECT et une clause WHERE permettant de
vérifier la présence ou non d'enregistrements correspondant à la requête. La non présence de
résultat se traduit par un retour nul de la part de la fonction mysql_fetch_row().

Voici un exemple affichant le résultat d'une requête le cas échéant, et dans le cas contraire une
phrase expliquant qu'aucun enregistrement correspondant n'a été trouvé (le code HTML dans
lequel le code PHP doit être implanté a volontairement été omis) :

<?php
// Déclaration des paramètres de connexion
$host = la_machine; // Généralement la machine est localhost
$user = votre_login;
$bdd = Nom_de_la_base_de_donnees;
$passwd = Mot_de_passe;

// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

// Creation et envoi de la requete


$query = "SELECT nom,url FROM sites ORDER BY nom";
$result = mysql_query($query);

// Recuperation des resultats


if (!mysql_fetch_row($result)) {
echo "Aucun enregitrement ne correspond\n";
}
else {
while($row = mysql_fetch_row($result)){

42
$Nom = $row[0];
$Url = $row[1];
echo "<tr>\n
<td><a href=\"$Url\">$Nom</a></td>\n
<td>$Url</td>\n
</tr>\n";
}
}

// Deconnexion de la base de donnees


mysql_close();
?>

43

Vous aimerez peut-être aussi