Vous êtes sur la page 1sur 76

Cours 4 : Web

HTTP, HTML, PHP, formulaires, PHP/MySQL

1. Introduction : le World Wide Web

1. Introduction : le World Wide Web

serveur Web
collection de
pages Web +
autres ressources
(image, son, )

machine cliente
avec navigateur Web
Internet

1. Introduction : le World Wide Web

World Wide Web (ou Web)

Systme public fonctionnant sur Internet qui permet de consulter,


avec un navigateur Web, des ressources Web mises en ligne par un
serveur Web. Cest une des applications d'Internet, avec le courrier
lectronique, la messagerie instantane, Usenet,
Protocole HTTP

Ressource Web

Page Web = document crit en langage HTML et pouvant contenir


des liens vers dautres ressources (images, musique, etc.) et vers
dautres pages (hyperlien).
Service Web = programme qui sexcute en rponse une requte
HTTP.

Cgi, servlet, script php, jsp, asp,

Documents multimdia = image, video

1. Architecture Web

Serveur web

Navigateur Web

serveur stockant des pages Web, attendant des requtes HTTP en


provenance de clients.
Client conu pour communiquer avec un serveur Web, en utilisant le
protocole HTTP
Affiche les pages web
Excute les scripts inclus dans les pages (ex: javascript)
Gre le cache local

Architecture XAMP

X=L(inux), W(indows) et M(ac)


A = Apache (serveur web)
M = Mysql (SGBD)
P = PHP (gnre les pages web dynamiquement)

1. Page web statique


navigateur

3) affiche XXX.html

0) Donne-moi la page web


qui sappelle XXX.html

2) Retourne
XXX.html

1) Lecture du disque

serveur web

1. Page web dynamique


4) affiche la page HTML

navigateur
0) Donne-moi la page web
qui sappelle XXX.php

1) Appel un programme

3) Retourne la page
HTML
Programme
php

serveur web

2) Fabrication de la
page au format
HTML

1. Page web dynamique avec BD


5) Affiche la page HTML

navigateur
0) Donne-moi la page web qui
sappelle XXX.php

serveur web
4) Retourne la page
HTML

1) Appel un programme

Programme
php
2) Extraction des donnes

serveur de donnes

BD
MySQL

3) Fabrication de la page
au format HTML

1. HTTP

Hypertext Transport Protocol


Langage du Web

Protocole utilis pour la communication entre les navigateurs et les


serveurs web
Port 80 (certains sur 8080)

URL (Uniform Resource Locator)

protocole (http, ftp, news)


Nom du serveur
port

Chemin du rpertoire de la ressource (fichier, service)


Nom de la ressource

http://webia.lip6.fr/~lepape/index.html
http://localhost:80/cgi-bin/programme.exe
Rseaux et Applications

1. HTTP : mthodes

GET

Accde une URL sur le serveur web

POST

Mthode prfre pour les formulaires web


Excute un programme CGI
Paramtres dans le corps de la requte
Plus sur

PUT

Simple requte pour un fichier (index.html, tp3.pdf)


Excute un programe CGI avec ou sans paramtres dans lurl de la requte

Pour transfrer un fichier du client vers le serveur web

HEAD

Demande les mtadonnes des ressources uniquement


Utilis pour amliorer les performances des requtes

Utilisation de date de dernire modification


Utilisation de caches
Rseaux et Applications

2. Introduction : HTML

HTML = HyperText Markup Langage


Langage de description dune page Web base de balises.

<p>Hello world!</p>

Intgrant les hyperliens = lien sur une autre page Web.

Exemple :
Exemple:

<a href="adresse_autre_page " >cliquer ici.</a>

Suffixe

Un fichier rdig en HTML doit tre suffix par .html ou .HTML ou .htm ou .HTM
Exemple : index.html

2. HTML : historique

1991 Invention au CERN

1993

HTML 4.0. = Ajout des feuilles de style, des cadres et des objets.

2000

HTML 3.2. = Ajout des tableaux.

1997 (dcembre)

HTML 1.0. = Possibilit dajouter des images et des formulaires.

1997

Annonce par Tim Berners-Lee


HTML est un langage rudimentaire, avec quelques lments de structure
et la notion dhyperlien.
Cest une application du langage de balisage SGML. Le langage nest pas
encore standardis.

XHTML 1.0 = HTML est reformul sur la base de XML, plutt que sur
celle de SGML.

En cours de normalisation

HTML 5.0 = deux syntaxes d'un modle abstrait dfini en termes


de DOM : HTML5 et XHTML5.

2. Editer du HTML

Editeurs de texte
Nimporte quel diteur de texte (emacs, gedit, kate, )
permet dditer du HTML. Il existe galement des diteurs
HTML qui propose des fonctionnalits spcifiques HTML.
Editeurs dHTML:
WebExpert : pris par les professionnels, le meilleur
rapport qualit/prix
Frontpage : grand public, conviviale et simple
HotMetal Pro : le meilleur mais galement le plus onreux
Hot Dog : tous niveaux
DreamWeaver : cration de page dynamique
PageMill connu : (MacIntosh) fonctionnalits WYSIWYG
QuantaPlus : open source install lcole

2. Anatomie dune page


<html>
<head>
<title> Page
daccueil</title>
</head>
<body>
<h2> Mon premier
document HTML</h2>
Exemple de page
<i>vraiment</i> trs
simple.
</body>
</html>

Exemple de document HTML :


ex1.html

Aperu avec le navigateur Firefox

2. Anatomie dune page

Interprtation dun document HTML


Balises

Exemple

Le navigateur ne se contente pas dafficher le contenu textuel du


fichier ex1.html
Les parties comprises entre les symboles < et > ne sont pas affiches.
Ces parties, appeles balises, servent dfinir (1) la structure et (2)
lapparence du document.
Le texte <title>Page daccueil</title> est interprt
comme le titre du document et saffiche dans la barre principale du
navigateur.

Exemple

Le texte <i>vraiment</i> saffiche en italique dans la fentre du


navigateur.

2. Anatomie dune page

Les balises

Les balises HTML utilisent les caractres rservs < et > comme dlimiteurs.
Ex: <p>
Les balises HTML ont une marque de dbut (balise ouvrante) et une marque
de fin (balise fermante).
Ex: <i>coucou</i>.
Lorsquune balise na pas de contenu, on peut utiliser la forme simplifie

Ex : <img src="truc.gif" ></img> devient <img src="truc.gif" />

Les balises HTML peuvent tre crites en minuscules ou en majuscules mais


il est recommand de les crire en minuscules.
Certaines balises peuvent tre imbriques.
Ex : <html><body> coucou ! <body></html>

2. Anatomie dune page

Les attributs de balises

modifie le comportement par dfaut d'une balise


spcifier des informations indispensables complmentaires
Ex : <p align="right">Ceci est un paragraphe align
a pour effet d'aligner le texte droite

droite.</p>

Syntaxe

<balise attribut1="valeur1" attributk="valeurk" >blabla</balise>


Le sparateur est un espace, l'ordre n'a pas d'importance. La valeur de
l'attribut doit tre tape en minuscules, et mise entre guillemets.
Les attributs communs la plupart des balises sont :
class : applique un style au contenu
id : donne un nom unique la balise
lang : spcifie la langue du contenu
Des attributs lis des vnements : onclick, onmouseover, etc.

2. Anatomie dune page

Les commentaires

Les commentaires ne sont pas traits par le navigateur.


Indispensables dans certains cas, ils alourdissent cependant le
temps de chargement d'une page
La syntaxe est la suivante :
<!-- mon commentaire -->

Balises HTML 4.0


http://www.w3schools.com/tags/default.asp
Doctype , html
head, title
body
span
p, div,
ul, ol, li
a
img
embed
table, th, tr, td

Pages Web dynamiques


PHP

Inspir du cours de Hugo Etivant et de celui de Lionel Seinturier

3. La petite histoire du PHP

Cr en 1994 par Rasmus Lerdorf


pour les besoins des pages web personnelles (livre dor, compteurs, etc.).
A lpoque, PHP signifiait Personnal Home Page.
Cest un langage ct serveur.
Il drive du C et du Perl dont il reprend la syntaxe.
Il est extensible grce de nombreux modules et son code source est
ouvert.
En 1997, PHP devient un projet collectif
Son interprteur est rcrit par Zeev Suraski et Andi Gutmans
version 3 qui sappelle dsormais PHP : Hypertext Preprocessor
Populaire
Cest le langage le plus utilis actuellement pour gnrer des pages web
dynamiques.
Concurrence : asp, jsp, servlet,

3. Intgration dun script dans une page

Les pages web sont au format html. Les pages web


dynamiques gnres avec PHP sont au format php. Le code
source php est directement insrer dans le fichier html grce
au conteneur de la norme XML :
<?php le code html gnrer ?>

Exemple 1 :
<?php
echo <html>;
echo <body>;
echo Bonjour ;
echo </html>;
echo </body>;
?>
Programme PHP
Mapage.php

<html>
<body>
Bonjour
</html>
</body>

Fichier HTML rsultat

3. Intgration dun script dans une page

Il existe une forme plus lgante pour viter dutiliser la


commande echo chaque ligne : il suffit de considrer le
document HTML comme un document trous. Chaque
trou est un fragment HTML qui doit tre gnr par un
bloc dinstructions PHP.
Exemple :
<html>
<body>
<?php
echo Bonjour ;
?>
</html>
</body>

Programme PHP
Mapage.php

<html>
<body>
Bonjour
</html>
</body>

Fichier HTML rsultat


identique

3. Exemple
Exemple de script, code
source (ct serveur) :
<html>
<body>
<h1>Mon premier script</h1>
<?php echo Bonjour\n; ?>
</body>
</html>

Rsultat affich par le navigateur :

Autre criture du mme script :


<?php
echo <html>\n<body>\n;
echo <h1>Mon premier script</h1>\n;
echo Bonjour\n;
echo </body>\n</html>\n;
?>

Code source (ct client) de la


page essai.php rsultant du script

3. Commentaires

Un script php se commente comme en C :


<?php
// commentaire de fin de ligne
/* commentaire
sur plusieurs
lignes */
# commentaire de fin de ligne comme en Shell
?>

Tout ce qui se trouve dans un commentaire est ignor. Il est conseill de


commenter largement ses scripts.

3. Variables, types et oprateurs (I)

Le typage des variables est implicite en php. Il nest donc pas ncessaire de
dclarer leur type au pralable ni mme de les initialiser avant leur
utilisation.
Les identificateurs de variable sont prcds du symbole $ (dollars).
Exemple : $toto.
Les variables peuvent tre de type entier (integer), rel (double), chane de
caractres (string), tableau (array), boolen (boolean) ou objet (object).
Il est possible de convertir une variable en un type primitif grce au cast(1)
(comme en C).
Exemple :
$str = 12;
$nbr = (int)$str;

// $str vaut la chane 12


// $nbr vaut le nombre 12

(1) : Le cast est une conversion de type. Laction de caster consiste en convertir une variable
dun type un autre.

3. Variables, types et oprateurs (II)

Quelques fonctions :

empty($var) : renvoie vrai si la variable est vide


isset($var) : renvoie vrai si la variable existe
unset($var) : dtruit une variable
gettype($var) : retourne le type de la variable
settype($var, type) : convertit la variable en type type (cast)
is_long(), is_double(), is_string(), is_array(), is_object(),
is_bool(), is_float(), is_numeric(), is_integer(), is_int() : teste
le type de la variable

3. Variables, types et oprateurs (III)

La porte dune variable est limite au bloc dans lequel elle a t cre. Une
variable locale une fonction nest pas connue dans le reste du
programme. Tout comme une variable du programme nest pas connue
dans une fonction. Une variable cre dans un bloc nest pas connue dans
les autres blocs, mmes suprieurs.
Oprateurs arithmtiques :

Oprateurs dassignement :

= (affectation), *= , /=, +=, -=, %=

Oprateurs logiques :

+ (addition), - (soustraction), * (multipli), / (divis), % (modulo), ++ (incrment),


--(dcrment). Ces deux derniers peuvent tre pr ou post fixs

and, && (et), or, || (ou), xor (ou exclusif), ! (non)

Oprateurs de comparaison :

= = (galit), < (infrieur strict), <= (infrieur large), >, >=, != (diffrence)
Test ? val1 : val2 (vaut val1 si test est vrai, et val2 sinon)

3. Constantes

Lutilisateur peut dfinir des constantes dont la valeur est fixe une fois
pour toute. Les constantes ne portent pas le symbole $ (dollars) en dbut
didentificateur et ne sont pas modifiables.

define(var,valeur)

dfinit la constante var (sans $) de valeur valeur

Exemple 1 :
define(author,Foobar);
echo author;
// affiche Foobar

Exemple 2 :
define(MY_YEAR,1980);
echo MY_YEAR;
// affiche 1980

Contrairement aux variables, les identificateurs de constantes (et aussi


ceux de fonction) ne sont pas sensibles la casse.

3. Chanes de caractres (I)

Une variable chane de caractres nest pas limite en nombre de caractres.


Elle est toujours dlimite par des simples quotes ou des doubles quotes.
Exemples :
$nom = "Dupont";
$prenom = Jean;

Les doubles quotes permettent lvaluation des variables et caractres


spciaux contenus dans la chane (comme en C ou en Shell) alors que les
simples ne le permettent pas.
Exemples :
echo "Nom: $nom";
echo Nom: $nom;

// affiche Nom: Dupont


// affiche Nom: $nom

Quelques caractres spciaux : \n (nouvelle ligne), \r (retour la ligne), \t


(tabulation horizontale), \\ (antislash), \$ (caractre dollars), \ (double
quote).
Exemple : echo Hello Word !\n;

3. Chanes de caractres (II)

Oprateur de concatnation de chanes : (point)


Exemple 1 :
$foo = "Hello";
$bar = "World";
echo $foo $bar;

Exemple 2 :
$name = "Henry";
$whoiam = $name "IV;

Exemple 3 :
$out = Patati;
$out = "et patata";

3. Chanes de caractres (III)

Affichage dune chane avec echo:

echo Hello Word.;


echo "Hello ${name}\n";
echo "Nom : ", $name;
echo("Bonjour");

Quelques fonctions:

strlen($str) : retourne le nombre de caractres dune chane


strtolower($str) : conversion en minuscules
strtoupper($str) : conversion en majuscules
trim($str) : suppression des espaces de dbut et de fin de chane
substr($str,$i,$j) : retourne une sous chane de $str de taille $j et dbutant la
position $i
strnatcmp($str1,$str2) : comparaison de 2 chanes
addslashes($str) : dspcialise les caractres spciaux (, ", \)
ord($char) : retourne la valeur ASCII du caractre $char
explode($delimiteur, $chaine) : retourne un tableau des sous-chanes extraites de
chaine en utilisant le sparateur $delimiteur.

3. Les dates

time() : retourne le nombre de secondes coules depuis le 1er Janvier

1970

checkdate($mois, $jour, $anne) : retourne true si la date est valide (par ex

pour viter les 35 dcembre)


strftime ($format) : pour afficher la date courante en indiquant le format
sous lequel vous voulez reprsenter la date.

<?php
echo "Affichage au format jour/mois/annee heure:minute:seconde ".
strftime("%d/%m/%y %H:%M:%S")."<br />";?>

strftime ($format, $date) : par dfaut la fonction strftime() formatte la date et

heure courante mais vous pouvez spcifier un second paramtre pour


afficher une autre date. Ce paramtre tant exprim en secondes depuis le
1 Janvier 1970.

<?php
echo "Dans 15 jours nous serons le " .
strftime("%d/%m/%y",time()+15*24*3600) . "<br>";?>

3. Les dates

le format est donn par une chane de caractres


comportant quelques caractres prcds d'un signe %
ayant une signification particulire (d pour jour, m pour
mois, y pour anne, etc...) et des caractres choisis
librement (ici, le slash, l'espace, les 2 points).
Liste des principales lettres "cls":
%y - anne (sur 2 chiffres)
%Y - anne
%B - mois en toutes lettres
%m - mois
%A - jour en toutes lettres
%d - jour
%u - numro du jour
dans la semaine (1=Lundi)

%H - heure (sur 24 heures)


%I - heure (sur 12 heures)
%M - minute
%S - seconde
%j - numro du jour dans l'anne
%V - numro de la semaine
dans l'anne
%% - pourcent

3. Structures de contrle (I)

Structures conditionnelles (mme syntaxe quen langage C) :

if( ... ) {

} elseif {

} else {

}
switch( ) {
case : { } break

default : { }
}

3. Structures de contrle (II)

Structures de boucle (mme syntaxe quen langage C) :

for( ; ; ) {

}
while( ) {

}
do {

} while( );

3. Tableaux (I)

Une variable tableau est de type array. Un tableau accepte des lments de tout
type. Les lments dun tableau peuvent tre de types diffrents et sont spars
dune virgule.
Un tableau peut tre initialis avec la syntaxe array.
Exemple :
$tab_colors = array(red, yellow, blue, white);
$tab = array(foobar, 2002, 20.5, $name);

Mais il peut aussi tre initialis au fur et mesure.


Exemples :
$prenoms[ ] = Clment;
$prenoms[ ] = Justin;
$prenoms[ ] = Tanguy;

$villes[0] = Paris;
$villes[1] = Londres;
$villes[2] = Lisbonne;

Lappel dun lment du tableau se fait partir de son indice (dont lorigine est zro
comme en C).
Exemple :
echo $tab[10];

// pour accder au 11me lment

3. Tableaux (II)

Parcours dun tableau.


$tab = array(Hugo, Jean, Mario);

Exemple 1 :
$i=0;
while( $i <= count($tab) ) {
echo $tab[$i].\n;
$i++;
}

// count() retourne le nombre dlments

Exemple 2 :
foreach($tab as $elem) {
echo $elem.\n;
}
La variable $elem prend pour valeurs successives tous les lments du tableau
$tab.

3. Tableaux (III)

Quelques fonctions:

count($tab), sizeof : retournent le nombre dlments du tableau


in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab
list($var1,$var2) : transforme une liste de variables en tableau
range($i,$j) : retourne un tableau contenant un intervalle de valeurs
shuffle($tab) : mlange les lments dun tableau
sort($tab) : trie alphanumrique les lments du tableau
rsort($tab) : trie alphanumrique inverse les lments du tableau
implode($str,$tab), join : retournent une chane de caractres contenant les
lments du tableau $tab joints par la chane de jointure $str
explode($delim,$str) : retourne un tableau dont les lments rsultent du
hachage de la chane $str par le dlimiteur $delim
array_merge($tab1,$tab2,$tab3) : concatne les tableaux passs en
arguments
array_rand($tab) : retourne un lment du tableau au hasard

3. Tableaux associatifs (I)

Un tableau associatif est appel aussi dictionnaire ou hashtable. On associe


chacun de ses lments une cl dont la valeur est de type chane de
caractres.
Linitialisation dun tableau associatif est similaire celle dun tableau
normal.

Exemple 1 :
$personne = array(Nom => Csar, Prnom => Jules);

Exemple 2 :
$personne[Nom] = Csar;
$personne[Prnom] = Jules;

Ici la cl Nom est associe la valeur Csar.

3. Tableaux associatifs (II)

Parcours dun tableau associatif.


$personne = array(Nom => Csar, Prnom => Jules);

Exemple 1 :
foreach($personne as $elem) {
echo $elem;
}
Ici on accde directement aux lments du tableau sans passer par les cls.

Exemple 2 :
foreach($personne as $key => $elem) {
echo $key : $elem;
}
Ici on accde simultanment aux cls et aux lments.

3. Tableaux associatifs (III)

Quelques fonctions :

array_count_values($tab) : retourne un tableau contenant les


valeurs du tableau $tab comme cls et leurs frquence comme
valeur (utile pour valuer les redondances)
array_keys($tab) : retourne un tableau contenant les cls du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du
tableau associatif $tab
array_search($val,$tab) : retourne la cl associe la valeur $val

Llment dun tableau peut tre un autre tableau.


Les tableaux associatifs permettent de prserver une structure
de donnes.

3. Fonctions (I)

Comme tout langage de programmation, php permet lcriture de


fonctions.
Les fonctions peuvent prendre des arguments dont il nest pas besoin de
spcifier le type. Elles peuvent de faon optionnelle retourner une valeur.
Lappel une fonction peut ne pas respecter son prototypage (nombre de
paramtres). Les identificateurs de fonctions sont insensibles la casse.

Exemple :
function mafonction($toto) {
$toto += 15;
echo Salut !;
return ($toto+10);
}
$nbr = MaFonction(15.1);
/* retourne 15.1+15+10=40.1, les majuscules nont pas dimportance */

3. Fonctions (II)

Les paramtres sont passs par copie et les rsultats sont retourns par copie (sauf
forcer la rfrence). Mme sans paramtre, un entte de fonction doit porter des
parenthses ( ). Les diffrents arguments sont spars par une virgule , . Et le corps
de la fonction est dlimit par des accolades { }.

Quelques exemples :
function afficher($str1, $str2) {
echo $str1, $str2;
}

// passage de deux paramtres

function bonjour() {
echo Bonjour;
}

// passage daucun paramtre

function GetColor() {
return black;
}

// retour dune variable de type chane

3. Inclusions
On peut inclure dans un script php le contenu dun autre
fichier.
require insert dans le code le contenu du fichier spcifi
mme si ce nest pas du code php. Est quivalent au
prprocesseur #include du C.
Exemple :
require(fichier.php);

include value et insert chaque appel (mme dans une


boucle) le contenu du fichier pass en argument.
Exemple :
include(fichier.php);

3. Arrt prmatur
Pour stopper prmaturment un script, il existe deux fonctions.

die arrte un script et affiche un message derreur dans le navigateur.


Exemple :
if(mysql_query($requette) == false)
die(Erreur de base de donnes la requte : <br />$requet);
exit larrte aussi mais sans afficher de message derreur.
Exemple :
function foobar() {
exit();
}
Ces fonctions stoppent tout le script, pas seulement le bloc en cours.

3. Variables denvironnement

Le langage php est dot dune multitude de variables denvironnement que


la fonction phpinfo() permet dafficher (ainsi que bien dautres
informations sur la configuration du serveur Apache). Ces variables
permettent au script daccder des informations trs utiles voire
quelques fois indispensables.

Quelques variables :

$PHP_SELF : nom du script en cours


$HTTP_ACCEPT : liste des types MIME supports par le client
$HTTP_USER_AGENT : signature du navigateur du client
$REMOTE_ADDR : adresse IP du client
$QUERY_STRING : chane au format URL contenant les paramtres passs la
page en cours
$HTTP_REFERER : URL de la source ayant renvoye le client sur la page en cours

Les formulaires HTML

4. Motivation

HTML 1.0 est non-directionnel

HTML 2.0 introduit les formulaires

Les informations sont fournies par le serveur un client (le


navigateur)
Permettent aux clients de saisir des informations qui seront
envoyes au serveur

Un formulaire est dfini en HTML et peut contenir :

zones de saisie de texte


boites cocher
boutons radio
menus droulants
boutons

4. Exemple de formulaire
<form action="http://monserveur.com/prog.php" method="post">
<p>Nom <input name="client" size="46" /></p>
<p>Rue <input name="rue" size="40" /> </p>
<p>Ville <input name="ville" size="40" /> </p>
<p<Code postal <input name="cp" size="5" /> </p>
<p>Carte de crdit No <input name="carte" />
Expire <input name="expire" type="text" size="4" /></p>
<p> M/C <input name="cc" type=radio" value="mc" CHECKED />
VISA <input name="cc" type=radio" value="vis" /> </p>
<p>Contre remboursement <input name="cr" type=checkbox />
</p>
<p><input type=submit" value="Envoi"></p>
<p><input type=reset" value="Remise zro"> </p>
</form>

4. Exemple de formulaire

4. Balises <FORM>

Dclaration d'un formulaire

action="http://monserveur/mapage.php"
<form
<FORM
ACTION=.. METHOD=.. NAME=.. >
method="post"
name="monformulaire"> </form>

ACTION : URL vers laquelle envoyer les donnes saisies


METHOD : commande HTTP utiliser pour effectuer l'envoi : GET ou
POST
NAME : nom du formulaire

Toutes les balises HTML sont permises entre <form> </form>

des images, tableaux, ... peuvent tre inclus dans un formulaire


des formulaires peuvent tre insrs l'intrieur d'un autre
formulaire

4. Elments de formulaire
Les lments de formulaires sont rpartis en 3 classes :
Input
Champs de saisie de texte et diffrents types de boutons
Select
Listes (menus droulants et ascenseurs)
Textarea
Zone de saisie de texte libre

4. Balise <INPUT>

Dclaration des champs de saisie (exclusivement entre <FORM> </FORM>)


<input type="text" name="lenom" />

TYPE : type du champ de saisie


NAME : nom du champ de saisie (unique l'intrieur d'un formulaire)

Types possibles (TYPE=...)

TEXT zone de saisie texte (type par dfaut en cas d'omission de TYPE) SIZE : taille de
la zone
RADIO bouton radio : tous les boutons ayant mme nom (NAME) appartiennent au
mme groupe. Dans ce cas, les attributs (VALUE) permettent de les diffrencier
CHECKBOX bote cocher
SUBMIT bouton d'envoi des donnes au serveur
RESET bouton d'effacement du formulaire

4. Autres types possibles pour la balise <INPUT>

PASSWORD zone de saisie d'un mot de passe + attribut


ENCTYPE
FILE slection d'un fichier envoyer

<form action="http://monserveur.com/prog.php" method="post"


enctype="multipart/form-data">
<p>Mot de passe <input type="password" name="pwd" size="16"/>
</p>
<p>Slectionner un fichier <input type="file" name="fichier"/>
<input type="submit" value="Envoi" />
<input type="reset" value="Remise zro" />
</p>
</FORM>

4. Autres types possibles pour la balise <INPUT>

PASSWORD les caractres saisis sont remplacs par des *


FILE provoque l'affichage

d'un champ de saisie du nom du fichier


d'un bouton Parcourir pour slectionner
via une fentre de parcours du disque

4. Autres types possibles pour la balise <INPUT>

HIDDEN : champ cach (ne provoque aucun affichage)


BUTTON : un bouton simple => association avec un
traitement JavaScript

< form action="http://monserveur.com/prog.php" method="post" >


Champ cach <input type="hidden" name="cache" value="Cecile">
<input type="button" value="Cliquez" onClick="fonctionJS()">
<input type="submit" value="Envoi">
<input type="reset" value="Remise zro"> <P>
</form>

4. Balises <TEXTAREA> et <SELECT>

TEXTAREA zone de saisie d'un texte sur plusieurs lignes


SELECT dfinition d'un menu droulant
balise OPTION pour dfinir les choix du menu

<form action="http://monserveur.com/prog.php" method= "post" >


<textarea name="zone" rows= "3" cols= "40" >texte initial</textarea>
<P>
<select name="musicTypes">
<option> R&B </option>
<option> Jazz </option>
<option> Blues </option>
<option> New Age </option>
</select> <P>
<input type="submit" value="Envoi">
</form>

4. Balises <TEXTAREA> et <SELECT>

4. Balise <SELECT> multiple

SELECT MULTIPLE dfinition d'un menu droulant choix


multiples
Par dfaut taille zone = 4, sinon attribut size

<form action="http://monserveur.com/prog.php"
method="post">
<select multiple name="musicTypes">
<option> R&B </option>
<option> Jazz </option>
<option> Blues </option>
<option> New Age </option>
</select> <P>
<input type="submit" value="Envoi">
</form>

4. Rcupration des donnes par PHP

Les informations fournies dans le formulaire sont rcuprables


via des variables de type tableau associatif.
Lattribut name du champ est la cl de la donne dans le
tableau associatif.
Le tableau qui contient les donnes dpend de la provenance
de la donne, et notamment si l'attribut METHOD du
formulaire est GET ou POST.

$_POST['donnee'] : s'utilise lorsque l'attribut METHOD du formulaire


est POST.
$_GET['donnee'] : s'emploie lorsque l'attribut METHOD du
formulaire est GET ou bien lorsque celui-ci n'est pas (ou pas
correctement) spcifi.
$_REQUEST[donnee] : sutilise aussi bien lorsque l'attribut METHOD
du formulaire est POST que sil est GET.
$_FILES['la_variable'] : rcuprer la valeur d'une variable de fichier
envoye par un formulaire.

4. Rcupration des donnes


<html>
<head>
<title>Ma page de test</title>
</head>
<body>
<form action="traitement.php" method="post">
Votre nom : <input type="text" name="nom" /><br>
Votre fonction : <input type="text" name="fonction" /><br>
<input type=hidden name=etat value=1/><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>

4. Rcupration des donnes

Lorsque l'utilisateur cliquera sur le bouton "Envoyer", les


donnes du formulaire seront envoyes sur la page
traitement.php.
Dans la page traitement.php, nous allons rcuprer les
donnes dans la variable $_POST de type tableau
associatif.

$_POST['nom'] : contient la chane de caractres qua saisi le


visiteur dans le champ pour lequel lattribut name vaut nom.
$_POST['fonction'] : contient la chane de caractres qu'a saisi
le visiteur dans la champ "Votre fonction : "
$_POST[etat'] : contient la valeur du champ cach dont
lattribut name prend la valeur tat.

4. Rcupration des donnes (traitement.php)


<html>
<head>
<title>Ma page de traitement</title>
</head>
<body>
<?
// on teste la dclaration de nos variables
if (isset($_POST['nom']) && isset($_POST['fonction'])) {
// on affiche nos rsultats
echo 'Votre nom est '.$_POST['nom'].;
echo et votre fonction est '.$_POST['fonction'].<br>;
}
if(isset($_POST[etat])){
if($_POST[etat]==1){
echo Vous tes en pleine forme.;
}else{
echo Vous tes malade.;
}
}
?>
</body>
</html>

4. Rcupration des donnes

La page retourne au client affiche:

Dans le cas o le formulaire utilise une mthode get, nous


utilisons la variable tableau $_GET.

4. Rcupration de fichiers

champ de type file permettant lupload de fichiers.


<html>
<head>
<title>Ma page de test</title>
</head>
<body>
<form action = "traitement.php" method="post"
enctype="multipart/form-data">
Votre fichier : <input type="file" name="mon_fichier">
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="20000">
<input type="submit" value="Envoyer">
</form>
</body>
</html>

4. Rcupration de fichiers

$_FILES

$_FILES['mon_fichier']['tmp_name'] : le nom temporaire du fichier


sur le serveur
$_FILES['mon_fichier']['name'] : le nom original du fichier sur la
machine cliente
$_FILES['mon_fichier']['type'] : le type MIME du fichier
$_FILES['mon_fichier']['size'] : la taille du fichier

Fonctions copy ou move_uploaded_file

Si le fichier convient, , vous pourrez finaliser votre tlchargement


Il faut copier le fichier tlcharg sur le disque dur du serveur
lemplacement de votre choix.

4. Mthodes GET et POST

GET

Envoie les lments du formulaire au travers de l'URL du script


Ajoute l'ensemble des paires nom/valeur l'URL du script

Ex : http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2...

La longueur de la chane URL est limite 255 caractres


URL surcharge dans la barre d'adresse d'un navigateur
Peut dvoiler des informations sensibles comme un mot de passe

POST

code les informations de la mme faon que la mthode GET


envoie les donnes la suite des en-ttes HTTP, dans un champ appel corps de la
requte.
La quantit de donnes envoyes n'est plus limite
Il faut analyser le contenu de la trame HTTP pour retrouver les paramtres de la
requte

PHP et MySQL

5. Connexion (I)

Pour se connecter une base depuis php, il faut spcifier un nom de


serveur, un nom dutilisateur, un mot de passe et un nom de base.
Les fonctions de connexion :

mysql_connect($server,$user,$password) : permet de se connecter au serveur


$server en tant quutilisateur $user avec le mot de passe $password, retourne
lidentifiant de connexion si succs, FALSE sinon
mysql_select_db($base[,$id]) : permet de choisir la base $base, retourne TRUE
en cas de succs, sinon FALSE
mysql_close([$id]) : permet de fermer la connexion
mysql_pconnect : idem que mysql_connect sauf que la connection est
persistante, il ny a donc pas besoin de rouvrir la connexion chaque script qui
travaille sur la mme base.

Les identifiants de connexion ne sont pas ncessaires si on ne se connecte


qu une seule base la fois, ils permettent seulement de lever toute
ambigut en cas de connexions multiples.

5. Connexion (II)

Exemple 1 :
if( $id = mysql_connect(localhost,dupont,1234) ) {
if( $id_db = mysql_select_db(lenomdemabase) ) {
echo Succs de connexion.;
/* code du script */
} else {
die(Echec de connexion la base.);
}
mysql_close($id);
} else {
die(Echec de connexion au serveur de base de donnes.);
}

5. Interrogation

Pour envoyer une requte une base de donne, il existe la fonction :


mysql_query($str) qui prend pour paramtre une chane de caractres qui
contient la requte crite en SQL et retourne un identificateur de rsultat
ou FALSE si chec.
Les requtes les plus couramment utilises sont : CREATE (cration dune
table), SELECT (slection), INSERT (insertion), UPDATE (mise jour des
donnes), DELETE (suppression), ALTER (modification dune table), etc.
Exemple :
$result = mysql_query(SELECT address FROM users WHERE
name=\$name\);
Cet exemple recherche ladresse de lutilisateur portant pour nom la valeur
de la chane $name. Lidentificateur de rsultat $result permettra
dautres fonctions dextraire ligne par ligne les donnes retournes par le
serveur.
Attention, les requtes MySQL ne se terminent pas par un point virgule ;

5. Extraction des donnes (I)

Une fois la requte effectue et lidentificateur de rsultat acquis, il ne reste


plus qu extraire les donnes retournes par le serveur.

Llaffichage des rsultats dune requte se fait ligne par ligne. Une boucle
permettra de recueillir chacune des lignes partir de lidentifiant de rsultat.

SQL > SELECT * FROM users;

ID

NAME

ADDRESS

----------------------------

Boris

Moscou

1re ligne

Bill

Washington

2me ligne

William

London

3 ligne

Une ligne contient (sauf cas particulier) plusieurs valeurs correspondants aux
diffrents attributs retourns par la requte. Ainsi, une ligne de rsultat pourra
tre sous la forme dun tableau, dun tableau associatif, ou dun objet.

5. Extraction des donnes (II)

mysql_fetch_row($result) : retourne une ligne de rsultat sous la forme dun


tableau. Les lments du tableau tant les valeurs des attributs de la ligne.
Retourne FALSE sil ny a plus aucune ligne.
Exemple 1 :
$requet = SELECT * FROM users;
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_row($result)) {
$id = $ligne[0];
$name = $ligne[1];
$address = $ligne[2];
echo $id - $name, $address <br />;
}
} else {
echo Erreur de requte de base de donnes.;

}
Ici, on accde aux valeurs de la ligne par leur indice dans le tableau.

5. Extraction des donnes (III)

mysql_fetch_array($result) : retourne un tableau associatif. Les cls tant les noms


des attributs et leurs valeurs associes leurs valeurs respectives. Retourne FALSE sil
ny a plus aucune ligne.

Exemple 2 :
$requet = SELECT * FROM users;
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_array($result)) {
$id = $ligne[id];
$name = $ligne[name];
$address = $ligne[address];
echo $id - $name, $address <br />;
}
} else {
echo Erreur de requte de base de donnes.;
}
Ici, on accde aux valeurs de la ligne par lattribut dans le tableau associatif.

Rfrences

PHP
http://www.php.net
http://www.phpinfo.net
http://www.phpfrance.com
http://www.developpez.com/php/

MySQL
http://www.mysql.com/
http://dev.nexen.net/docs/mysql/

HTML
http://cyberzoide.developpez.com/html/

Vous aimerez peut-être aussi