Vous êtes sur la page 1sur 68

Techniques du web

PHP Hypertext Preprocessor

1
Modèle
requête

Client internet Serveur

réponse

appel de la page

Base de Script
données extraction
exécution
Document
de données PHP Html
MySQL

2
Modèle

Le navigateur demande une page web auprès du serveur.

Le serveur traite le fichier demandé (qui peut contenir du code


PHP), il le traite, puis l’envoie le résultat au navigateur.

Le navigateur reçoit une page HTML. Il interprète le code HTML,


CSS, javascript, … et affiche la page.

Il arrive souvent que le serveur web ait besoin d’une autre


application (par exemple un SGBD).

3
Histoire du PHP

Il a été créé en 1994 par Rasmus Lerdorf pour les besoins des pages
web personnelles (livre d’or, compteurs, etc.). A l’époque, PHP
signifiait Personnal Home Page.
C’est un langage incrusté au HTML et interprété (PHP3) ou compilé
(PHP4) côté serveur. Il dérive du C et du Perl dont il reprend la
syntaxe.
Il est extensible grâce à de nombreux modules et son code source est
ouvert. Comme il supporte tous les standards du web et qu’il est
gratuit.
En 1997, PHP devient un projet collectif et son interpréteur est
réécrit par “Zeev Suraski et Andi Gutmans ” pour donner la version
3 qui s’appelle PHP Hypertext Preprocessor).

4
Intégration d’un script dans une page
Les pages web sont au format html.
Les pages web dynamiques générées avec PHP sont au format php.
Le code source php est directement insérer dans le fichier html grâce
au conteneur :
<?php … ?>

Exemple:
<html>
<body>
<?php
echo ’’Bonjour’’;
?>
</body>
</html>
5
Exemple de script

Exemple de script, code source (côté serveur) :

<html>
<body>
<h1>Mon premier script</h1>
<?php echo “Bonjour\n“ ; ?>
</body>
</html>
Résultat affiché par le navigateur :

6
Commentaires

Un script php se commente comme en C :


Exemple :
<?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.

7
Variables, constantes et types

Les variables est le conteneur d’une valeur d’un des


types utilisés en PHP .

La déclaration des variables n’est pas obligatoire en


début de script.

L’initialisation des variables n’est pas non plus obligatoire.

Les identificateurs de variable sont précédés du symbole « $ »


(dollars). Exemple : $toto.
8
Variables, constantes et types

Les noms des variables sont sensibles à la casse


(majuscules et minuscules). $mavar et $Mavar ne
désignent pas la même variable.

Le nom commence par un caractère alphabétique, pris


dans les ensembles [a-z] ,[A-Z] ou par le caractères de
soulignement( _ ).

Les variables peuvent être de type entier (integer),


réel (double), chaîne de caractères (string), tableau
(array), objet (object), booléen (boolean).
9
Variables, constantes et types
L’affectation consiste à donner une valeur à une variable. Lors de
la création d’une variable, vous ne déclarez pas son type. C’est la
valeur que vous lui affectez qui détermine ce type.
• Initialiser une variable : affecter une valeur initiale qui pourra
éventuellement être modifiée par le programme. Le symbole
d'affectation est le signe =.
• $i_i = 4 ; // initialisation par un entier
• $s_ecole = "ENITA Bx"; // initialisation par une chaîne
$s_w = "1.2 euros"; // initialisation par une chaîne
$d_nb=12345678.99; // initialisation par un réel
• $t_tb[ ] = 100; // initialisation du 1er élément du tableau

10
Variables, constantes et types

Dans php, vous pouvez affecter aussi par référence.


L’affectation par référence, au moyen de l’operateur =,
l’opérande de droite est une variable qui doit être précédée du
caractère &.
Exemple 1 :
$toto = 100; // la variable $toto est initialisée à la valeur 100
$foobar = &$toto; // la variable $foobar fait référence à $toto
$toto++; // on change la valeur de $toto
echo $foobar; /* qui est répercutée sur $foobar qui
vaut alors 101*/
11
Variables, constantes et types

Quelques fonctions utiles pour les variables:


 empty($var) : renvoie vrai si la variable est vide
 isset($var) : renvoie vrai si la variable existe
 unset($var) : détruit 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()…

12
Contrôle d’état d’une variable

Lors de l’envoi de données d’un formulaire vers le serveur, le


script qui reçoit les informations doit pouvoir détecter l’existence
d’une réponse dans les champs du formulaire.
Les fonctions isset() et empty() permettent ce type de contrôle.

- La fonction isset(), dont la syntaxe est la suivante:


Boolean isset($var);
renvoie TRUE si la variable var est définie, FALSE sinon

- La fonction empty(), dont la syntaxe est la suivante:


Boolean empty($var );
retourne la valeur TRUE si la variable $var n’est pas initialisée à
la valeur 0 ou NULL ou la chaine “0” et la valeur FALSE si elle a
une valeur quelconque.
13
Variables, constantes et types

La portée d’une variable est limitée au bloc dans lequel elle a été crée.
Une variable locale à une fonction n’est pas connue dans le reste du
programme.
Une variable crée dans un bloc n’est pas connue dans les autres blocs,
mêmes supérieurs.

Opérateurs d’assignement :
= (affectation), *= ($x*=$y équivalent à $x=$x*$y), /=, +=, -=, %=

Opérateurs logiques :
and, && (et), or, || (ou), xor (ou exclusif), ! (non)

14
Variables, constantes et types
Opérateurs arithmétiques :
Opérateur description
+ addition

- soustraction

* Multiplication

/ Division

% Modulo

++ et -- Décrémentation et
incrémentation (Ces
deux derniers peuvent
être pré ou post fixés

15
Les opérateurs de comparaison
Opérateur Description
== Test l’égalité de deux valeurs
$a=345; $b=“345” ou $b=“345 elements”
$a= =$b; TRUE
!= ou <> Test l’inégalité de deux valeurs
=== Test l’identité des valeurs et des types de deux
expressions.
$a=345; $b=“345”; $a= = =$b; False
!== Test la non-identité de deux expression

< et <= Test inferieur ou (inferieur ou égal)


> et >= Test supérieur ou (supérieur ou égal)

16
Les operateurs logiques

Opérateur Description
OR Test si l’un au mois des opérandes à la
valeur TRUE.
|| Equivaut à l’opérateur OR mais n’a pas la
même priorité.
XOR Test si l’un et un seul des opérandes à la
valeur TRUE.
AND Test si les eux opérandes en la même valeur
TRUE
&& Equivaut à l’opérateur AND mais n’ a pas la
même priorité
! Operateur unaire de négation, qui inverse la
valeur de l’opérande.
17
Variables, constantes et types
Opérateurs arithmétiques :

18
Variables, constantes et types

Il existe en php un grand nombre de constantes prédéfinis, que vous


pouvez notamment utiliser dans les fonctions comme paramètres
permettant de définir des options.
Le code suivant:
<?php
Print_r(get_defined_constants( ));
?>
Permet d’afficher l’ensemble des constantes existantes.
Les constantes ne portent pas le symbole $ (dollars) en début
d’identificateur et ne sont pas modifiables.

19
Variables, constantes et types
Les constantes sont manipulés à l’aide de la syntaxe define:
define (‘’constante’’, ‘’valeur’’);
Exemple 1 :
define(‘’author ‘’, ‘’ Foobar‘’);
echo author; // affiche ‘Foobar’
Exemple 2 :
define(“MY_YEAR”,1980);
echo MY_YEAR; // affiche 1980
Exemple 3 :
Define ("font", "<FONT size=4 color=#FF0000><B>")

Remarque : test d’existense de constante:

defined (”author") ; // renvoi 1


defined (”my_date") ; // renvoi 0
20
Variables, constantes et types

Dans php, il n’existe pas de déclaration explicite du type d’une


variable lors de sa création.
Php permet la manipulation d’un certain nombre de types :
Les types scalaire de base: Entiers, flottants, chaine de
caractères, booléens.
Les types composes: tableaux (array), objet (object)
Les types spécieux: type resource, type nul

21
Les Structures de contrôle
<!DOCTYPE html>
<html>
<body>
Structures conditionnelles <?php
(même syntaxe qu’en langage C) : $t = date("H");
echo "<p>The hour (of the server) is " . $t;
echo ", and will give the following
message:</p>";
if( ... ) {
… if ($t < "10") {
echo "Have a good morning!";
} elseif {
} elseif ($t < "20") {
… echo "Have a good day!";
} else { } else {
… echo "Have a good night!";
}
} ?>

</body>
22
</html>
Les Structures de contrôle
switch-case

<?php
$color = "red";

switch ($color) {
case "red":
echo "Your favorite color is red!";
break;
switch( … ) { case "blue":
case … : { … } echo "Your favorite color is blue!";
break; break;
… case "green":
default : { … } echo "Your favorite color is green!";
} break;
default:
echo "Your favorite color is neither
red, blue, nor green!";
}
?>
23
Les Structures de contrôle

Structures de boucle (même syntaxe qu’en langage C) :

for( … ; … ; … ) {

}
while( … ) {

}
do {

} while( … );

24
Les Structures de contrôle

--------------------------------- FOREACH----------------------------------
foreach($tableau as $valeur)
{
// bloc utilisant la valeur de l’élément courant
}

foreach ($tableau as $key => $value){


//commandes
}

La structure de langage foreach fournit une façon simple de parcourir des


tableaux. foreach ne fonctionne que pour les tableaux et les objets,

25
Structures de contrôle (FOR)

html>
Structures de boucle (même syntaxe <head>
qu’en langage C) : <title>Titres</title>
</head>
<body>
<?php
<?php
for ($x=0; $x<=50; $x=$x+5) { for ($ x=1; $x<=6; $x=$x+1) {
echo '<p>variable $x is now = ' . $x . echo "<h" . $x . ">Heading levels</h" . $x .
'</p>'; ">";
} }
?>
?>
</body>
</html>
Sortie:

variable $x is now =0 Sortie:


variable $x is now =5
.
Heading levels
.
Heading levels
variable $x is now
Heading levels
= 40
variable $x is now
Heading levels
= 45
Heading levels
variable $x is now = 50 26
Heading levels
Structures de contrôle (While et Do-while)
La différence entre les deux réside dans le fait que dans le cas de la boucle while, la condition est
examinée avant la boucle tandis que pour la boucle do-while elle est éxaminée à la fin.

Structures de boucle (même syntaxe q


u’en langage C) <?php
<?php $i = 1;
$x = 1;
do
while ($x <= 50) {
{
echo "<p>This text is repeated 50   echo $i . '<br />';
times</p>"; $x = $x + 1;  
}   $i++;
?> }while( $i < 5 );
Sortie:
?>
This text is repeated 50 times

This text is repeated 50 times


Sortie:
.

. 1
This text is repeated 50 times 2
This text is repeated 50 times

This text is repeated 50 times


3
27
Mathématiques

Le module de base de PHP offre un grand nombre de fonctions


mathématiques utiles..
 abs($x) : valeur absolue

 ceil($x) : retourne l’entier n le plus proche à $x tel que $x <=n

 floor($x) : la partie entière de $x .

 pow($x,$y) : x à la puissance y

 round($x,$i) : arrondi de x à la ième décimale

 max($a, $b, $c …) : retourne l’argument de valeur maximum

 pi() : retourne la valeur de Pi

 Et aussi : cos, sin, tan, exp, log, min, pi, sqrt…

Quelques constantes :
 M_PI : valeur de pi (3.14159265358979323846)

 M_E : valeur de e (2.7182818284590452354)

28
Chaînes de caractères
Une variable chaîne de caractères n’est pas limitée en nombre de caractères.
Elle est toujours délimitée par des simples quotes ou des doubles quotes.
Si vous utilisez les doubles quotes pour délimiter une chaîne, alors les
variables et les caractères contenus dans cette chaîne sont évalués.
Ce n’est pas le cas si vous utilisez les simples quotes.

Exemples :
<? php
$Nom=“saad”;
echo “Bonjour $Nom”; // affiche Bonjour saad, la variable $Nom
est évaluée
echo ‘Bonjour $Nom’; // affiche Bonjour $Nom , la variable $Nom
n’est pas évaluée
?>

29
Chaînes de caractères

Caractères spéciaux Description

\n nouvelle ligne
\r retour à la ligne
\t tabulation horizontale

\\ antislash
\$ et \ “ caractère dollars et double quotte

Exemple : echo ‘’Hello Word !\n’’;

30
Chaînes de caractères

Opérateur de concaténation de chaînes : . (point)


Exemples:
<?php
$nom = ‘’ saad ‘’.
echo ‘’ Nom : ‘’. $nom; // affiche Nom : saad.

?>

31
Chaînes de caractères

Longueur d’une chaîne de caractères.


 Pour déterminer le nombre de caractère d’une chaine,
utilisez la fonction strlen( ), dont la syntaxe est la
suivante:
int strlen( string $ch).
 La fonction strlen() peut servir, par exemple, à vérifier
qu’un code postal saisi par un internaute comporte bien
cinq chiffres.
 Exemple:

$code="7508”;
if ( strlen($code) !=5 ) echo “code erroné !”

32
Chaînes de caractères

Comparaison de chaines:
Les opérateurs de comparaison usuels sont utilisables avec les chaînes. Cela
inclus bien sur les operateurs d’égalité (= =) et d’identité (= = =), ce dernier ne
permettant d’obtenir la valeur TRUE dans une expression conditionnelle que si
les deux opérandes ont non seulement la même valeur mais aussi le même type

Pour comparer des chaînes et obtenir leur ordre alphabétique, php dispose de
deux fonctions:
Int strcmp( string $ch1, string $ch2)
Int strcasecmp( string $ch1, string $ch2)
Leur fonctionnement est identique, mais la première fonction est sensible à la
casse alors que la seconde ne l’est pas.
Elle retourne toute les deux un nombre négatif(généralement -1) si $ch1 est
inférieure à $ch2, un nombre positif(généralement 1) dans le cas contraire et 0
en cas d’égalité.
33
Fonction: création
Exemple1

<?php
function DireBonjour($nom)
{
echo 'Bonjour ' . $nom . ' ! <br >';
}

DireBonjour('Marie');
DireBonjour('Patrice');
DireBonjour('Edouard');
DireBonjour('Pascale');
DireBonjour('François');
DireBonjour('Benoît');
DireBonjour('Père Noël');
?>

34
Fonction: création
Exemple2
<?php
// Ci-dessous, la fonction qui calcule le volume du cône: syntaxe déclaration
function VolumeCone($rayon, $hauteur)
{
// calcul du volume
$volume = $rayon * $rayon * 3.14 * $hauteur * (1/3);

return $volume; // indique la valeur à renvoyer, ici le volume


}

// utilisation de la fonction :
$volume = VolumeCone(3, 1);
echo 'Le volume d\'un cône de rayon 3 et de hauteur 1 est de ' . $volume;

echo 'Le volume d\'un cône de rayon 3 et de hauteur 1 est de ' . $VolumeCone(5, 2);

?> 35
Les Tableaux
La fonction array( ) permet de créer de manière rapide des tableaux
indicés ou associatifs. C’est elle qui sera le plus souvent utilisé pour
la création de tableaux.
La façon la plus élémentaire de créer un tableau indicé consiste à
définir individuellement une valeur pour chacun des ces éléments,
de la manière suivante:
$tab[n]=valeur;
ou n est un indice entier quelconque, et « valeur » un scalaire ou une
variable de type integer, double, boolean, string et array.
Pour créer un tableau composé de plusieurs éléments en une seule
opération, vous disposez de la fonction array().
$tab=array( valeur0, valeur1, …, valeurN)

36
Les Tableaux
Exemple Tabeaux indicés

1° méthode

2° méthode

3° méthode

37
Les Tableaux
Les tableaux associatifs:
La même fonction array( ) permet aussi de créer rapidement un tableau
associatif en définissant pour chacun de ses éléments une clé et une
valeur.
La syntaxe :
$tabasso=array(“cléA” =>valeurA, “cléB” =>valeurB,… “cléZ” =>valeurZ)

Chaque clé est une chaine de caractère délimitée par des guillemets.
Pour lire la “valeurA” vous écrivez $tabasso[“cléA”].
Un tableau associatif est appelé aussi dictionnaire ou hashtable. On associe
à chacun de ses éléments une clé dont la valeur est de type chaîne de
caractères.
L’initialisation d’un tableau associatif est similaire à celle d’un tableau
normal.
Exemple 1 :
$personne = array(‘’Nom’’ => ‘’Alami’’, ‘’Prenom’’ => ‘’Saad’’);
38
Les Tableaux

Exemple Les tableaux


associatifs:

1° méthode

2° méthode

39
Les Tableaux

Les tableaux multidimensionnels:

PHP ne comporte pas de méthodes explicite de création de tableaux


multidimensionnels.
Exemple de tableau(4,3):

$tabmulti=array( array(“L_0-C_0”, “L_0-C_1”, “L_0-C_2”),


array(“L_1-C_0”, “L_1-C_1”, “L_1-C_2”),
array(“L_2-C_0”, “L_2-C_1”, “L_2-C_2”),
array(“L_3-C_0”, “L_3-C_1”, “L_3-C_2”),
);

40
Exemple
Volvo: In stock: 22, sold: 18.
BMW: In stock: 15, sold: 13.
Saab: In stock: 5, sold: 2.
Land Rover: In stock: 17, sold: 15.
<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";


echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
41
?>
Exemple
<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

for ($row = 0; $row < 4; $row++) {


echo "<p><b>Row number
$row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
42
?>
Les Tableaux
//*********************************************
// Lecture d’un tableau associatif
//*********************************************
$montab=array("France"=>"Paris","Great Britain"=>"London","Belgie"=>"Brussel");
While(list($cle, $valeur) = each($montab))
{
echo “ L’élément de clé <b>$cle</b> a la valeur <b>$valeur</b> <br>";
}
?>
Les deux premiers éléments sont : Paris et London
L‘élément d’indice 0 a la valeur Paris
L‘élément d’indice 1 a la valeur London
L‘élément d’indice 2 a la valeur Brussel

L‘élément de clé France a la valeur Paris


L’élément de clé Great Britain a la valeur London
L‘élément de clé Belgie a la valeur Brussel

43
Exemple
Passer en revue un tableau avec each()

<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');

reset($fruit);
while (list($key, $val) = each($fruit)) {
echo "$key => $val\n";
}
?>
Retourne la paire clé/valeur courante du tableau array

a => apple
b => banana
c => cranberry

44
Les Tableaux
L’instruction foreach ( ):
est très efficace pour parcourir les tableaux associatifs mais fonctionne
également pour les tableaux indicé.

Pour les tableaux indicé vous écrivez le code suivant:


foreach($tab as $valeur)
{
// bloc de code utilisant les valeurs de la variable $valeur;
}

Pour les tableaux associatif vous écrivez le code suivant:


foreach($tab as $cle=>$valeur)
{
// bloc de code utilisant les valeurs de la variable $cle et
$valeur;
}

45
Les Tableaux
Exemple de l’instruction foreach ( ):

46
Les Tableaux
Exemple de l’instruction foreach ( ):

47
Les Tableaux
Quelques fonctions:
count($tab), sizeof($tab) : retournent le nombre d’éléments 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) : mélange les éléments d’un tableau
sort($tab) : trie les éléments du tableau
rsort($tab) : trie inverse les éléments du tableau
implode($str,$tab): retournent une chaîne de caractères contenant les
éléments du tableau $tab joints par la chaîne de jointure $str.
explode($delim,$str) : retourne un tableau dont les éléments résultent du
hachage de la chaîne $str par le délimiteur $delim
array_merge($tab1,$tab2,$tab3…) : concatène les tableaux passés en
arguments
array_rand($tab) : retourne un élément du tableau au hasard
48
Les Tableaux
Quelques fonctions :
array_count_values($tab) : retourne un tableau contenant les valeurs du
tableau $tab comme clés et leurs fréquence comme valeur (utile pour
évaluer les redondances)
array_keys($tab) : retourne un tableau contenant les clés du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du tableau
associatif $tab
array_search($val,$tab) : retourne la clé associée à la valeur $val

Quelques fonctions alternatives pour le parcours de tableaux (normaux ou


associatifs)
reset($tab) : place le pointeur sur le premier élément
current($tab) : retourne la valeur de l’élément courant
next($tab) : place le pointeur sur l’élément suivant
prev($tab) : place le pointeur sur l’élément précédant
each($tab) : retourne la paire clé/valeur courante et avance le pointeur
49
Rechercher dans un tableau

array_key_exists : pour vérifier si une clé existe dans l'array ;

in_array : pour vérifier si une valeur existe dans l'array ;

array_search : pour récupérer la clé d'une valeur dans l'array.

50
array_key_exists

<?php
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');

if (array_key_exists('nom', $coordonnees))
{
echo 'La clé "nom" se trouve dans les coordonnées !';
}

if (array_key_exists('pays', $coordonnees))
{
echo 'La clé "pays" se trouve dans les coordonnées !';
}

?>

51
Vérifier si une valeur existe dans l'array : in_array

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise',
'Framboise');

if (in_array('Myrtille', $fruits))
{
echo 'La valeur "Myrtille" se trouve dans les fruits !';
}

if (in_array('Cerise', $fruits))
{
echo 'La valeur "Cerise" se trouve dans les fruits !';
}
?>

52
Récupérer la clé d'une valeur dans l'array : array_search

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise',
'Framboise');

$position = array_search('Fraise', $fruits);


echo '"Fraise" se trouve en position ' . $position . '<br />';

$position = array_search('Banane', $fruits);


echo '"Banane" se trouve en position ' . $position;
?>

53
Communication avec PHP

Créer un lien avec des paramètres

nous pouvons créer des liens en HTML qui transmettent des


paramètres d'une page vers une autre.

Soit: deux fichiers sur votre site :

index.php (l'accueil) ;

bonjour.php.

Ce lien appelle la page bonjour.php et lui envoie deux paramètres :

nom : Dupont ;
prenom : Jean.

54
Communication avec PHP

Envoyer des paramètres dans l'URL

Le point d'interrogation sépare le nom de la page PHP des paramètres.


Ensuite, ces derniers s'enchaînent selon la forme: nom=valeur
et sont séparés les uns des autres par le symbole &.

55
Communication avec PHP

Récupérer les paramètres en PHP

la page bonjour.php va automatiquement créer un array au nom :


$_GET. Il s'agit d'un array associatif dont les clés correspondent aux
noms des paramètres envoyés en URL.

Nom Valeur
$_GET['nom’] Dupont
$_GET['prenom’] Jean

56
http://localhost/tpdut2/bonjour.php?nom=Dupont&prenom=Jean

<head>
<title>Envoi de paramètres dans l'URL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<p><a href="bonjour.php?nom=Dupont&prenom=Jean">Dis-moi bonjour !
</a></p>

</body>
<head>
<title>Réception de paramètres dans l'URL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<p>Bonjour <?php echo $_GET['prenom'] . ' ' . $_GET['nom']; ?> !</p>

</body>

Dis-moi bonjour ! Bonjour Jean Dupont ! 57


Les Formulaires

Les formulaires introduits dans le HTML depuis plus anciennes versions sont
l’élément essentiel qui permet l’interactivité entre un site et ses visiteurs.

Ils constituent pour cette raison la base de la création de site dynamique

Tout échange entre visiteur et serveur passe par un formulaire, dans lequel
l’utilisateur peut saisir textes ou mot de passe, opérer des choix grâce à des
boutons radio, des cases à cocher ou des listes de sélection, envoyer ses
propres fichiers depuis le poste client.

Il est donc important d’en maitriser la création à la fois en HTML, Pour


obtenir des formulaires présentables, et en PHP, pour gérer les informations
fournies par le formulaires au script coté serveur.

58
Les Formulaires

Récupération des données du formulaire


Que se passe-il lorsque l’utilisateur clique sur le bouton
d’envoi?
Une requête HTTP est envoyée au serveur à destination
du script désigné par l’attribut action de l’élément
<form> . La requête contient toutes les associations entre
les noms des champs et de leur valeur.
Ces association se trouvent dans l’en-tête HTTP si la
méthode POST est utilisée et dans l’URL s’il s’agit de la
méthode GET.

59
Les Formulaires

Valeurs uniques:
 Les valeurs uniques proviennent des champs de formulaire
dans lesquels l’utilisateur ne peut entrer qu’une valeur, un
texte par exemple, ou ne peut faire qu’un seul choix
(bouton radio, liste de sélection à choix unique).
 Ces valeurs sont contenues sur le serveur dans des tableaux
associatifs dits super-globaux appelés $_POST et $_GET,
selon la méthode choisie.
 Les clés de ces tableaux sont les noms associes aux champs
par l’attribut name

60
Les Formulaires
formulaire.php
 Cas de la méthode POST
<html>
<head>
<title>formulaire traité par php</title>
</head>
<body>
<form action=“form.php ” method="post" >
<fieldset>
<legend><b>Infos</b></legend>
nom: <input type="text" name="nom" size="40"/> </br>
Débutant: <input type="radio" name="niveau" value="débutant"/>
Initié: <input type="radio" name="niveau" value="initié" /> </br>
<input type="reset" value="effacer">
<input type="submit" value="envoyer">
</fieldset>
</form>
61
Les Formulaires
suite
form.php
<?php
if(isset($_POST["nom"]) && isset($_POST["niveau"]))
{ echo"<h2> Bonjour ".$_POST["nom"]." vous êtes ".$_POST["niveau"]."
en PHP</h2>";}
?>

62
Les Formulaires

Cas de la méthode GET:


Avec la méthode GET vous récupérez les données du formulaire dans les
variables $_GET[“nom”] et $_GET[“niveau”], comme ci-dessous:

<?php

If ( isset($_GET["nom"] ) && isset($_GET["niveau"] )

{ echo"<h2> Bonjour ".$_GET["nom"]." vous êtes ".$_GET["niveau"]."

en PHP</h2>";}

?>
Contrairement à ce qui ce passe avec la méthode POST, vous constatez que lors
du clic sur le bouton d’envoi l’adresse de la page cible désignée par l’attribut
action est suivi par le caractère ’ ? ’ Puis le nom de chaque champ et la valeur qui
y associée. 63
Les Formulaires
Les valeurs multiples

Certains champs de formulaire peuvent permettre aux visiteurs de saisir


plusieurs valeurs sous un même nom de composant.

Cela peut concerner un groupe de cases à cocher ayant le même


attributs
name, par exemple, dont il est possible de cocher une ou plusieurs cases
simultanément. Ce peut également être le cas d’une liste de sélection
ayant toujours un nom unique mais dans laquelle l’attribut
multiple= “multiple” est défini.

Dans tous les cas, ce n’est pas une valeur scalaire mais un tableau qui
est récupéré côté serveur, il faut pour cela faire suivre le nom du
composant de crochets, comme pour créer une variable de type array.

64
<form action="checkbox.php">
<input type="hidden" name="envoi" value="yes">
<input type="text" name="voiture"><br>
<input type="checkbox" name="options[]" value="Injection au
méthane">&nbsp;Injection au méthane<br>
<input type="checkbox" name="options[]" value="Trois roues de
secours">&nbsp;Trois roues de secours<br>
<input type="checkbox" name="options[]" value="Miroir de courtoisie
dans le coffre">&nbsp;Miroir de courtoisie dans le coffre<br>
<input type="checkbox" name="options[]" value="Ventilation des rotules
(côté conducteur)">&nbsp;Ventilation des rotules côtés conducteur)<br>
1<input type="checkbox" name="options[]" value="Kit James-Bond
">&nbsp;Kit James-Bond <br>
<input type="submit">
</form>
65
<?php
$envoi = $_GET['envoi']; //aiguilleur
$voiture = $_GET['voiture']; //Nom de la voiture
$options = $_GET['options']; //Contenu des cases à coche
if ($envoi == 'yes') {
$options_text = implode(', ',$options);
echo '<h1>L\'auto de vos rêves &quot;'.$voiture.'&quot;:</h1>';
echo '<p>options:<br><br>'.$options_text.'</p>';
}
?>

66
67
miniProjet-TD-TP
 mini-projet
 TD-TP: PHP-mysql

68

Vous aimerez peut-être aussi