Vous êtes sur la page 1sur 63

Cours HTML / CSS / PHP / MySQL

Pierre-Nicolas Clauss
Laboratoire Lorrain de Recherche en Informatique et ses Applications

12 mars 2008

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 1 / 63


Plan

1 HTML

2 CSS

3 PHP

4 (My)SQL

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 2 / 63


HTML
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 3 / 63
HTML Introduction
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 4 / 63
HTML Introduction
Généralités sur l'HTML

Language descriptif
Pas de séquences de contrôle
Description de la sémantique du document
Balises
Balise ouvrante : <TAG>
Balise fermante : </TAG>
Les deux en une : <TAG />
Standardisé
W3C : http ://www.w3c.org
Dernière version : HTML 4.01
Strict
Transitional
Frameset
Validation automatique : http ://validator.w3.org
Balise DOCTYPE, sur la première ligne du chier
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http ://www.w3.org/TR/html4/loose.dtd">

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 5 / 63


HTML Introduction
Généralités sur l'HTML

Encapsulation de type "pile"


(Mal)formation
<A> <B> </A> </B> incorrect

<A> <B> </B> </A> correct

Structure arborescente
Arbre minimal
<HTML>
<HEAD>
<TITLE />
</HEAD>
<BODY />
</HTML>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 6 / 63


HTML Introduction
Généralités sur l'HTML

Commentaires entre <!−− et −−>


HTML + XML => XHTML
Balises toujours fermées
Transformation en d'autres formats
HTML donne un découpage selon la sémantique du document
Mise en forme visuelle
en HTML : moins lisible, plus de code
en CSS : plus lisible, regroupement et généralisation

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 7 / 63


HTML Texte en HTML
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 8 / 63
HTML Texte en HTML
Espaces

Tous les espaces blancs (y compris \t et \n) sont ignorés


Cas particulier : l'espace seul => reproduit tel quel
Exemple
Mon t e x t e avec des e s p a c e s
et p l u s i e u r s l i g n e s
n ' a p p a r a i t pas comme c e c i

Résultat
Mon t e x t e avec des e s p a c e s e t p l u s i e u r s l i g n e s n ' a p p a r a i t pas comme c e c i

Il faut utiliser des balises

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 9 / 63


HTML Texte en HTML
Texte

Mise en forme au niveau paragraphe


<BR> : aller à la ligne

&nbsp; : insérer un espace

<P> : commencer un nouveau paragraphe

entre <PRE> et </PRE>, tout est reproduit tel quel

Mise en forme au niveau phrase


<EM> à </EM> : Mise en valeur (italique)

<STRONG> à </STRONG> : Mise en valeur forte (gras)

<CITE> à </CITE> : Citation courte (gras italique)

<Q> à </Q> : Citation courte (entre guillements)

<BLOCKQUOTE à </BLOCKQUOTE> : Citation longue (gras)

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 10 / 63


HTML Texte en HTML
Texte

Mise en forme au niveau phrase


<CODE> à </CODE> : Extrait de code source (gras italique petit)

<ABBR> à </ABBR> : Abbréviation (gras italique)

<ACRONYM> à </ACRONYM> : Acronyme (gras italique)

<SUP> à </SUP> : Mettre en exposant

<SUB> à </SUB> : Mettre en indice

<BIG> à </BIG> : Plus gros

<SMALL> à </SMALL> : Plus petit

Beaucoup d'autres : <DFN>, <SAMP>, <KBD>, <VAR>, <INS>, <DEL>, . . .

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 11 / 63


HTML Texte en HTML
Texte

Liens hypertexte
Entre <A> et </A>
Choisir le(s) bon(s) mot(s) pour servir de lien
Liens internes (<A NAME=...>) ou externes (<A HREF=...>)
Possibilité de lien sur une image
Lier les pages de manière cohérente

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 12 / 63


HTML Listes en HTML
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 13 / 63
HTML Listes en HTML
Listes non-ordonnées

<UL> marque le début de la liste et </UL> sa n


<LI> permet de commencer un nouvel item dans la liste

Exemple
<UL>
<L I>1<SUP>e r</SUP> e l e m e n t
<L I>2<SUP>eme</SUP> e l e m e n t
<L I>3<SUP>eme</SUP> e l e m e n t
</UL>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 14 / 63


HTML Listes en HTML
Listes ordonnées

1 <OL> marque le début de la liste et </OL> sa n


2 <LI> permet de commencer un nouvel item dans la liste

Exemple
<OL>
<L I>1<SUP>e r</SUP> e l e m e n t
<L I>2<SUP>eme</SUP> e l e m e n t
<L I>3<SUP>eme</SUP> e l e m e n t
</OL>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 15 / 63


HTML Listes en HTML
Listes de dénitions

<DL> marque le début de la liste et </DL> sa n


<DT> permet de dénir un titre pour une dénition

<DD> permet de dénir le contenu d'une dénition

Exemple
<DL>
<DT><STRONG>Cout</STRONG>
<DD>P r i x de r e v i e n t
<DT><STRONG>B e n e f i c e</STRONG>
<DD>Gain r e a l i s e pa r une p e r s o n n e ou une c o l l e c t i v i t e
</DL>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 16 / 63


HTML Tableau en HTML
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 17 / 63
HTML Tableau en HTML
Forme du tableau

Un tableau commence par <TABLE> et nit par </TABLE>


Une ligne dans un tableau commence par <TR> et nit par </TR>
Une cellule dans une ligne commence par <TD> et nit par </TD>
Une cellule d'en-tête dans une ligne commence par <TH> et nit par
</TH>

Exemple : 2 lignes x 3 colonnes


<TABLE>
<TR>
<TD> C e l l u l e 1 ,1</TD>
<TD> C e l l u l e 1 ,2</TD>
<TD> C e l l u l e 1 ,3</TD>
</TR> Cellule 1,1 Cellule 1,2 Cellule 1,3
<TR>
<TD> C e l l u l e 2 ,1</TD> Cellule 2,1 Cellule 2,2 Cellule 2,3
<TD> C e l l u l e 2 ,2</TD>
<TD> C e l l u l e 2 ,3</TD>
</TR>
</TABLE>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 18 / 63


HTML Tableau en HTML
Forme du tableau

On peut donner un "titre" au tableau entre <CAPTION> et </CAPTION>, en


dehors des dénitions de lignes ou de cellules
On peut ranger les lignes entre <THEAD> et </THEAD> pour indiquer
qu'elles font partie de l'en-tête
On peut ranger les lignes entre <TFOOT> et </TFOOT> pour indiquer
qu'elles font partie du pied du tableau
On peut ranger les lignes entre <TBODY> et </TBODY> pour indiquer
qu'elles font partie des données
Attention : <THEAD> et <TFOOT> doivent apparaître avant <TBODY>
Il peut y avoir plusieurs <TBODY>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 19 / 63


HTML Tableau en HTML
Forme du tableau

On peut donner des indications de taille sur les colonnes entre


<COLGROUP> et </COLGROUP>

Entre ces balises, on indique avec <COL width=...> la taille d'une colonne
On peut aussi utiliser <COLGROUP span=XX width=YY> pour spécier XX
colonnes de taille YY
Les balises <TD> et <TH> ont les attributes :
rowspan pour indiquer sur combien de lignes s'étant la cellule
colspan pour indiquer sur combien de colonnes s'étant la cellule
align pour indiquer l'alignement horizontal dans la cellule (left,right ou
center)
valign pour indiquer l'alignement vertical dans la cellule (top, middle,
bottom)

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 20 / 63


HTML Tableau en HTML
Bordures du tableau

<TABLE> a les attributs :


border pour indiquer l'épaisseur des bordures
rules pour indique le type de bordure entre les cellules :
none : pas de bordure
groups : bordures entre les groupes de lignes (<THEAD>, <TFOOT>,
<TBODY> et les groupes de colonnes (<COLGROUP>, <COL>)
rows : bordures entre les lignes uniquement
cols : bordures entre les colonnes uniquement
all : bordures autour de toutes les cellules

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 21 / 63


CSS
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 22 / 63
CSS Utilité
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 23 / 63
CSS Utilité
Mise en forme

Séparation de la forme et du fond


HTML décrit le fond
CSS décrit la forme
Centralisation de l'aspect visuel
On insère du CSS entre :
<STYLE t y p e=" t e x t / c s s ">
<!−−
du CSS i c i
−−>
</STYLE>

Ou on lie un chier CSS avec :


<LINK r e l=" s t y l e s h e e t " t y p e=" t e x t / c s s " h r e f=" . . . ">

Ou on ajoute du CSS à une balise :


<BALISE s t y l e=" . . . ">

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 24 / 63


CSS Syntaxe
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 25 / 63
CSS Syntaxe
Format d'une classe CSS

Le CSS est formé d'un ensemble de classes.


Une classe s'écrit de cette façon :
nom {
attribut : valeur ;
...
}

nom peut être :


Un nom de balise : les attributs s'appliquent à toutes ces balises
Un nom générique (commençant par un point) : les attributs
s'appliquent aux balises utilisant class ="nom" (sans le point)
Un mélange des deux, séparés par des virgules : les attributs
s'appliquent suivant les deux points précédents
attribut désigne quel élément visuel est modié (couleur, bordure,
fond, marges . . ..
valeur désigne par quelle valeur est remplacée l'attribut désigné
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 26 / 63
CSS Syntaxe
Exemple de CSS
style.css
body {
f o n t −f a m i l y : A r i a l ;
}
p {
background − c o l o r :#F0C0C0 ;
border : thin s o l i d black ;
}
. titre {
color : yellow ;
}

index.html
<HTML>
<HEAD>
<LINK r e l=" s t y l e s h e e t " t y p e=" t e x t / c s s " h r e f=" s t y l e . c s s ">
<TITLE>Exemple CSS</TITLE>
</HEAD>
<BODY>
<H1 c l a s s=" t i t r e ">Exemple</H1>
<P>Un p a r a g r a p h e avec b o r d u r e e t c o u l e u r de f o n t
</BODY>
</HTML>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 27 / 63


PHP
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 28 / 63
PHP Introduction
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 29 / 63
PHP Introduction
Pages dynamiques

Exemple statique
<HTML>
<HEAD><TITLE>Page s t a t i q u e</TITLE></HEAD>
<BODY>
Nous sommes l e 28/03/2007
</BODY>
</HTML>

Problème : Acher une page diérente en fonction de l'utilisateur, de


l'environnement, . . .
Solution : Utiliser un langage de programmation évolué, par exemple
PHP.

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 30 / 63


PHP Introduction
Présentation

Langage récent (crée en 1994)


Versions utilisée :
4.3 (plus répandue)
5.0 (avec une couche objet)
Langage de script
Langage interprété
Présence d'un interpréteur côté serveur
Intégré au code HTML
Syntaxe proche du C et du Java
Interface simple avec beaucoup de SGBD

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 31 / 63


PHP Introduction
Modèle d'exécution

1 Le client demande une page PHP


2 Le serveur web exécute le code de la page
1 Lancement de l'interpréteur
2 Exécution du code
3 Le serveur web renvoie le résultat de l'exécution
4 Le client ache le résultat

Pour le client, il est impossible de voir le code PHP


Seul le résultat de l'exécution est récupéré par le client

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 32 / 63


PHP Introduction
Premier exemple

Code côté serveur


<HTML>
<HEAD><TITLE>Page dynamique </TITLE></HEAD>
<BODY>
<?php
echo ( "Nous sommes l e " ) ;
echo ( d a t e ( " j /m/Y" ) ) ;
?>
</BODY>
</HTML>

Résultat côté client


<HTML>
<HEAD><TITLE>Page statique</TITLE></HEAD>
<BODY>
Nous sommes le 12 mars 2008
</BODY>
</HTML>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 33 / 63


PHP Eléments du langage
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 34 / 63
PHP Eléments du langage
Mélange HTML/PHP

PHP s'intègre dans l'HTML entre <?php et ?>


Les instructions se nissent par ;
Les commentaires sont soit entre /*et */, soit après //
Manuel complet en français : http ://www.php.net/manual/fr

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 35 / 63


PHP Eléments du langage
Les variables

Les variables sont préxées par $


Leur nom suit les règles classiques
Exemple : $my_var_03
Les noms sont sensibles à la casse : $var 6= $Var

Pas de déclaration, typage implicite


Exemple :
$my_var_03 = 5 4 ; // Maintenant , c ' e s t un e n t i e r
$my_var_03 = " p i f " ; // Maintenant , c ' e s t une c h a i n e

Attention aux fautes de frappes dans les noms de variables

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 36 / 63


PHP Eléments du langage
Les types

Entiers : 54
Flottants : 54.3
Chaînes : "54" ou '54'
Booléens : false ou true
Tableaux
Fonctions de test :
isset ($var) : renvoie true si $var existe
unset($var) : détruit $var
is_integer ($var), is_string ($var), . . . : renvoie true si $var est un entier, une
chaîne, . . .

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 37 / 63


PHP Eléments du langage
Les constantes et l'achage

Constantes
On les dénit à l'aide de la commande dene
Exemples : dene ("PI", 3.14)
On les utilise directement (sans $) : echo(PI)

Achage
On peut acher avec la commande echo (avec ou sans parenthèses)
print est équivalente à echo

On peut faire un achage comme en C avec printf

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 38 / 63


PHP Eléments du langage
Opérateurs

Arithmétiques : + − ∗ / % ++ −−
Aectation : = .= += −= ∗= /= %=
Comparaison : == < != > === <= !== >=
Logiques : and && or || xor !
Conditionnel : ... ? ... : ...

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 39 / 63


PHP Eléments du langage
Conditionnelles et boucles

switch ( expr ) {
i f ( cond ) { c a s e VALEUR_1 :
... ...
} break ;
e l s e i f ( cond ) { c a s e VALEUR_2 :
... ...
} break ;
else { default :
... ...
} break ;
}

f o r ( i n i t ; cond ; modif ) { w h i l e ( cond ) { do {


... ... ...
} } } w h i l e ( cond ) ;

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 40 / 63


PHP Eléments du langage
Les tableaux

Chaque élément du tableau a une clé et une valeur


Pas de déclaration du tableau
Les valeurs des éléments ne sont pas forcément toutes du même type
Exemple de remplissage à la volée :
$tab [ 0 ] = 5 4 ;
$tab [ 1 ] = " p i f " ;
$tab [ " p a f " ] = f a l s e ;

Exemple de remplissage direct :


$tab = a r r a y ( 5 4 , " p i f " ) ;
$tab = a r r a y ( " p a f " => f a l s e ) ;

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 41 / 63


PHP Eléments du langage
Parcours de tableaux

Parcours "classique" avec for

Parcours spécique :
f o r e a c h ( $tab as $ v a l u e ) { f o r e a c h ( $tab as $key => $ v a l u e ) {
... ...
} }

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 42 / 63


PHP Eléments du langage
Les chaînes de caractères

Délimitées par ' : contenu non interprété


Délimitées par " : contenu interprété
Les unes peuvent contenir les autres
Concaténation avec .
Exemple :
$pif = " toto " ; // Contient " toto "
$ p a f = " comme $ p i f " ; // Contient " comme t o t o "
$pouf = ' pas comme $ p i f ' ; // Contient " pas comme $ p i f "
$bim = $ p i f . $ p a f ; // Contient " t o t o comme t o t o "

Accès à un caractère : $bim[0]


strlen ( $str ) : longueur de $str

substr ( $str , start [, len ]) : sous-chaîne de $str commençant au caractère start,


et faisant éventuellement len caractères de long
Comparaison avec ==, === ou strcmp

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 43 / 63


PHP Eléments du langage
Les fonctions

f u n c t i o n ma_fonc ( $param1 , $param2 , . . . ) {


...
return . . . ;
}

Pas de type pour les paramètres ou la valeur de retour


Nombre xé de paramètres
Le nom ne commence pas par $
Le nom est insensible à la casse
Le résultat est renvoyé avec la commande return
Une seule valeur de retour
Passage des paramètres par valeur (par défaut)
Passage par référence : &$param

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 44 / 63


PHP Eléments du langage

Les variables utilisées à l'intérieur d'une fonctions sont détruites à la


n, sauf :
si on les dénit avec static
si on les dénit avec global
f u n c t i o n ma_fonc ( ) {
s t a t i c $appels = 0;
$ a p p e l s ++;
echo ( "J ' a i e t e a p p e l l e e $ a p p e l s f o i s " ) ;
}
f u n c t i o n ma_fonc2 ( ) {
g l o b a l $var ;
$var = 54;
}
$var = 0;
ma_fonc2 ( ) ;
echo ( $ v a r ) ;

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 45 / 63


PHP Eléments du langage
Inclusion de chiers

On utilise require (" chier "), include (" chier "), require_once(" chier "),
include_once(" chier ")

Les variantes include provoquent des warnings au lieu d'erreurs en cas de


problème
Les variantes _once n'incluent le chier que si celui n'a pas déjà été inclu

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 46 / 63


PHP PHP avec HTML
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 47 / 63
PHP PHP avec HTML
Utilisation des formulaires

On peut "dialoguer" avec le visiteur en utilisant les formulaires


En méthode GET : données encodées dans l'URL
index .php?var=value&var2=value2...

En méthode POST : données cachées mais pas de navigation avec


Précédent/Suivant
Exemple de formulaire
<FORM a c t i o n=" t r a i t e m e n t . php" method=" p o s t ">
prenom : <INPUT t y p e=" t e x t " name=" prenom ">
age : <INPUT t y p e=" t e x t " name=" age ">
<INPUT t y p e=" submit " v a l u e=" Envoyer ">
</FORM>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 48 / 63


PHP PHP avec HTML
Eléments de formulaire

Il existe diérents type pour les balises INPUT :


text : une zone de texte sur une seule ligne
password : idem, mais avec achage d'étoiles
le : permet la selection d'un chier
checkbox : une case à cocher
button : un bouton simple (pas d'action sans javascript)
hidden : un champ "texte" caché
radio : un bouton d'option
reset : un bouton de remise à zéro
submit : un bouton de soumission

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 49 / 63


PHP PHP avec HTML
PHP avec formulaires

Le script de traitement des formulaires reçoit un tableau pré-rempli


$_GET pour la méthode GET

$_POST pour la méthode POST

Il contient les données du formulaire


Exemple de traitement
<?php
$prenom = $_POST[ " prenom " ] ;
$age = $_POST[ " age " ] ;
echo ( " Bonjour $prenom , vous avez $age ans " ) ;
?>

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 50 / 63


PHP PHP avec HTML
Persistence des données

On veut parfois garder de l'information entre plusieurs pages :


Login / Password
Préférences de navigation
Sélection de produits à acheter (panier, ...)
On utilise donc les sessions PHP.
Les sessions permettent de stocker des informations côté serveur
Elles sont identiées par un numéro qui reste valide tant que le visiteur
reste connecté
Le numéro est transmis au serveur soit dans l'URL, soit dans un cookie
Les données se placent et se récupèrent dans $_SESSION, comme pour
les formulaires

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 51 / 63


PHP PHP avec HTML
Utilisation des sessions

Les sessions utilisent les cookies : il faut donc ouvrir la session avant
d'acher quoi que ce soit (voir fonction setcookie )
Note : Les valeurs des cookies sont dans le tableau pré-rempli $_COOKIE
Le cookie utilisé (ou la variable dans $_GET à defaut) s'appelle
PHPSESSID
La session existe dès qu'elle est crée et jusqu'à ce qu'elle soit détruite
Création (et réouverture) : session_start ()
Destruction : session_destroy ()
Note : les session s'autodétruisent après un certain temps
(généralement 30 min)

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 52 / 63


(My)SQL
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 53 / 63
(My)SQL Introduction à SQL
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 54 / 63
(My)SQL Introduction à SQL
Dénition

SQL est un langage puissant de requête


Il permet de faire une demande complexe à une base de données dans
un langage proche de l'anglais
On l'utilise pour récupérer, ajouter, supprimer et créer des données
dans une base de données
Les bases de données utilisent des tables :
chaque ligne est un enregistrement de champs avec des valeurs
les requêtes se font sur ces champs

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 55 / 63


(My)SQL Introduction à SQL
Exemple
Table 'PersosXVI'
Nom Prenom Age Activite
CARTIER Jacques 44 Explorateur
CALVIN Jean 26 Réformateur
CHASTEL Jean 19 Assassin
PARE Ambroise 44 Chirurgien
Requête interrogative
SELECT ∗ FROM PersosXVI;

Requête sélective
SELECT Nom, Prenom FROM PersosXVI;

Requête restrictive
SELECT ∗ FROM PersosXVI WHERE Prenom = 'Jean';

On peut complètement mélanger les types de requêtes


pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 56 / 63
(My)SQL Introduction à SQL
Exemple complexe

Table 'PersosXVI' Table 'RoiXVI'


Nom Prenom Age Activite Roi Id Nom
CARTIER Jacques 44 Explorateur 3 1 Henri II
CALVIN Jean 26 Réformateur 1 2 Charles IX
CHASTEL Jean 19 Assassin 4 3 Francois Ier
PARE Ambroise 44 Chirurgien 2 4 Henri IV
Requête croisée
SELECT p.Nom, p.Activite FROM PersosXVI p, RoiXVI r WHERE p.Roi = r.Id AND r.Nom = 'Francois Ier'
ORDER BY p.Nom DESC;

Résultat
CARTIER Explorateur

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 57 / 63


(My)SQL Introduction à SQL
Exemple de fonctions

Table 'PersosXVI'
Nom Prenom Age Activite
CARTIER Jacques 44 Explorateur
CALVIN Jean 26 Réformateur
CHASTEL Jean 19 Assassin
PARE Ambroise 44 Chirurgien
Décompte
SELECT count(∗) FROM PersosXVI;

Somme
SELECT sum(Age) FROM PersosXVI;

Ce type de requête peut simplier le code de traitement

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 58 / 63


(My)SQL Introduction à SQL
Manipulation des données

Table 'PersosXVI'
Nom Prenom Age Activite
CARTIER Jacques 44 Explorateur
CALVIN Jean 26 Réformateur
CHASTEL Jean 19 Assassin
Requête d'insertion
INSERT INTO PersosXVI(Nom, Prenom, Age, Activite) VALUES('PARE', 'Ambroise', 44, 'Chirurgien');

Requête de mise à jour


UPDATE PersosXVI SET Age = 43 WHERE Nom = 'CARTIER';

Requête de suppression
DELETE FROM PersosXVI WHERE Prenom = 'Jean';

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 59 / 63


(My)SQL MySQL avec PHP
Plan
1 HTML
Introduction
Texte en HTML
Listes en HTML
Tableau en HTML
2 CSS
Utilité
Syntaxe
3 PHP
Introduction
Eléments du langage
PHP avec HTML
4 (My)SQL
Introduction à SQL
MySQL avec PHP
pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 60 / 63
(My)SQL MySQL avec PHP
Accès au serveur

Connexion
$c = mysql_connect("localhost", "login", "mdp");

$c est false en cas d'erreur de connexion

Choix de la base
$s = mysql_select_db("nom", $c);

$s est false en cas d'erreur

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 61 / 63


(My)SQL MySQL avec PHP
Requêtes

Exécution
$res = mysql_query("une requete", $c);

$res est false en cas d'erreur

Récupération de(s) résultat(s)


$row = mysql_fetch_row($res);

$tab = mysql_fetch_array($res);

$obj = mysql_fetch_object($res);

$row [0]; $row [1]; ...

$tab["champ"]; ... ou $tab [0]; ...

obj −>champ; ...

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 62 / 63


(My)SQL MySQL avec PHP
Fonctions annexes

mysql_num_rows($res) : retourne le nombre de résultats d'un SELECT


mysql_aected_rows($res) : retourne le nombre de ligne aectées par un
INSERT, un UPDATE ou un DELETE
mysql_insert_id($c) : retourne le dernier incrément d'un champ
AUTO_INCREMENT
Attention aux injections SQL !

pierre-nicolas.clauss@loria.fr (LORIA) Cours HTML / CSS / PHP / MySQL 12 mars 2008 63 / 63