Vous êtes sur la page 1sur 100

Technologie Web

Pr. Hiba Chougrad


Année-universitaire: 2019-2020

1
Planning
Cours Technologie Web:
• 3 séances de cours + 3 séances de TP en groupe
• Cours collectif : Lundi matin , TP en groupe : Lundi matin et après-midi

La note :
• Rapport des TP
• Examen final pratique

2
3

Plan

I. Langage HTML / CSS


II. Langage JavaScript
III. PHP/MySQL
4

PHP/MYSQL
5

PHP: Langage pour le Web


Qu’est-ce que PHP ?
• Langage de script. Utilisé côté serveur (server-side scripting)
• PHP: Hypertext Preprocessor
• Créé en 1994-1995 par Rasmus Lerdorf
• Langage multi plate-forme (UNIX / Windows…)
• Open Source
• Versions actuelles :
• PHP4
• PHP5
• PHP7
6

Utilisation de PHP

 Création de pages HTML « dynamiques » construite à la demande

 Interface entre un serveur Web et des bases de données

 Création d’applications Web


7

Principales fonctionnalités

• Manipulation de chaînes et tableaux


• Calendrier / dates / heures
• Fonctions mathématiques, statistiques…
• Formulaires
• Manipulation d’images
• Bases de données (Oracle, MySQL, …)
•…
Fonctionnement de PHP
Requête HTTP du client (hello.php)
Connexion sur le serveur (port 80) Client
Localisation de la ressourceLocalisation du code PHP dans le fichier
Exécution du code PHP GET /hello.php HTTP/1.0 Navigateur
Fermeture de la connexion
Réseau •HTML
•JavaScript
Rendu graphique des données Protocole HTTP •CSS
Envoi du résultat au client
= réponse HTTP
Exécution d’un programme sur le serveur
<html>
Serveur <head>
<title>Hello</title> <?php
</head>
Serveur Web .html
echo " hello.php
<body>Hello world</body> <html>
</html> .php
<head>
.jpg
<title>Hello</title>
Module PHP </head>
<body>Hello world</body>
MySQL </html> "
?> 8
9

Fonctionnement de PHP
Client  Serveur

1. Connexion TCP sur le serveur (port 80)


2. Requête HTTP du client (mon_fichier.php)
3. Localisation de la ressource
4. Exécution du code PHP
5. Envoi du résultat de l’exécution au client = réponse HTTP
6. Fermeture de la connexion
7. Rendu graphique des données (HTML, image, …)
10

Installer WampServer
• Après l’installation, double-cliquez sur l’icône pour démarrer
le serveur.
• Vous allez voir une icône W en rouge ou orange, il faut
Cliquer sur l’icône pour redémarrer les services puis
Cliquer sur localhost.
• Si vous voyez la page de démarrage IIS, il va falloir désactiver
le serveur IIS (Serveur Windows par défaut)
• Chercher IIS(Gestionnaire des services Internet)  sur le panel
Gérer le serveur, il faut cliquer sur Arrêter.
11

Installer WampServer
• Chercher IIS(Gestionnaire des services Internet)  sur le panel
Gérer le serveur cliquez Arrêter.
• Redémarrer les services WampServer
encore une fois. Le W doit devenir vert.
• Cliquez sur localhost, vous devez voir la
Page d’acceuil WampServer
http://localhost:80/index.php
Ou bien
http://127.0.0.1:80/index.php
12

Installer WampServer
• Si ça ne marche pas :
Vérifier sur le fichier httpd.conf dans
L’onglet Apache le port de connexion

• Accédez au dossier C:\wamp\www


• Créer un Dossier nommé Cours  dans ce dossier ajouter un fichier test.php
• Editez ce fichier avec Notepad++ et écrivez le code qui suit :
13

Un premier exemple !

<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php echo ‘<p> Hello World !</p>'; ?>
</body>
</html>

Accédez a votre fichier avec une requête HTTP 


http://localhost/cours/test.php
14

Programme en PHP
Délimitation du code PHP dans le fichier .php :

<?php Code PHP ?>

<script language="PHP"> Confusion avec JavaScript


Code PHP  à bannir !!
</script>

Dépend de la configuration
short_open_tag
<? Code PHP ?> du serveur
<% Code PHP %> asp_tags  à bannir !!
15

Structure du code PHP


• La syntaxe de PHP ressemble à celle de famille "C" (C, C++, Java,
…)
• Chaque instruction se termine par ";"
• Commentaires:
/* jusqu’au prochain */
// jusqu’à la fin de la ligne
# jusqu’à la fin de la ligne
16

Structure du code PHP


<?php
Script PHP
//ligne 1 de code PHP
?>
<html>
<head> <title> Mon script PHP </title> </head>
<body>
//ligne de code HTML
< ?php
//ligne 2 de code PHP Script PHP
?>
//ligne de code HTML
….
</body>
</html>
17

Les variables et les types de données


Tout identificateur commence par "$"
Les affectations sont réalisées grâce à "="
 Numérique entier: 12 ou réel: 1.54
 Chaîne: "Hello" ou ’Bonjour’
 Booléen: true, false (PHP 4)
 Tableau: $tab[2]=12
 Objet (PHP4, PHP5)
 NULL
• Le type d’une variable est dynamique et est déterminé par la valeur qui lui est
affectée
18

Typage faible
// Pas de déclaration de variable

$test = 1.5 ; // Réel


$test = 12 ; // Entier
$test = array() ; // Tableau
$test = "10" ; // Chaîne
echo $test ; // 10
Typage faible
$nombre1 = 1.5 ; // Réel
Testez !
$nombre2 = 12 ; // Entier
$chaine1 = "10" ; // Chaîne
$chaine2 = 'coucou' ; // Chaîne
$total =
$nombre1 + $nombre2 + $chaine1 + $chaine2 ;

1.5 12 "10" 'coucou'

13.5 10

23.5 0

echo $total ; // 23.5 Réel 23.5


20

Les chaînes de caractères


Substitution de variables dans les chaînes
Testez !
• Guillemets simples
• $a='chaîne' ; chaîne
• $b='voici une $a'; voici une $a

• Guillemets doubles
• $a="chaîne" ; chaîne
• $b="voici une $a"; voici une chaîne
21

Concaténation de chaînes
• Permet d’assembler plusieurs chaînes
Testez !
• Réalisé grâce à l’opérateur point : .

 vaut "Bonjour Ali"

 vaut "Acheter 12 ordinateurs "


22

Les principaux types


Type en français Plage de valeurs Exemple

-2 147 483 648 à


Integer entier $var = 12;
+ 2 147 483 647

Double réel 1.7E-308 à 1.7E+308 $var = 3.1415957

chaîne de $var =
String caractère alphanumérique
caractères "bienvenue"
23

Tester le type de la variable


• Il est possible de "typer" et de connaître le type d'une variable qui a été défini
grâce à la fonction gettype() et settype().
• Des fonctions permettent également de tester le type de la variable. Elles
renvoient VRAI (ou 1) si le type est celui attendu.
• is_int(), is_integer(), is_long() : VRAI si le type est entier.
is_double(), is_float(), is_real() : VRAI si le type est réel.
is_string(), is_array() : respectivement VRAI si le type est string, array
Exemple :

integer
double
NULL
object
string
24

Tester les variables


Quelques fonctions nous permettent de vérifier qu'une variable
possède une valeur ou au contraire, n'en a pas.

Fonction Signification Exemple


isset() détermine si une variable possède isset ($var)
une valeur
unset() détruit une variable, libérant la unset ($var)
mémoire qu'elle occupe

empty() vérifie si une variable n'est pas empty ($var)


définie, vide ("") ou égale à 0
25

Les constantes
<?php
define("ma_constante", "Bonjour à tous") ;

nom valeur
Définition d'une constante
echo ma_constante ;
?>

Utilisation de la constante
<?php
if (defined(" ma_constante ")) {
echo ma_constante;
}
?>
Tester la déclaration
26

La commande echo
Permet d’envoyer du texte au navigateur du client (« écrire » la page au
format HTML résultant de l’interprétation de PHP)
• echo "Bonjour" ;
• $nom="Driss" ; echo "Bonjour $nom" ;

Plus généralement, permet d’envoyer des octets au navigateur du client


• Ficher HTML, XML, CSS, JavaScript, …
• Données d'une image
• Contenu d'un ficher PDF, Flash, etc.
27

Les opérateurs arithmétiques


$a + $b Somme

$a - $b Différence

$a * $b Multiplication

$a / $b Division

$a % $b Modulo (Reste de la division entière)


28

Les opérateurs d’in- et de


dé-crémentation pré- et post-fixés
Retourne la valeur de $a puis augmente la valeur de $a
$a++
de 1
Augmente la valeur de $a de 1 puis retourne la nouvelle
++$a valeur de $a
Retourne la valeur de $a puis diminue la valeur de $a de
$a--
1
Diminue la valeur de $a de 1 puis retourne la nouvelle
--$a valeur de $a
29

Les opérateurs de comparaison


$a == $b Vrai si égalité entre les valeurs de $a et $b

$a != $b Vrai si différence entre les valeurs de $a et $b

$a < $b Vrai si $a inférieur à $b

$a > $b Vrai si $a supérieur à $b

$a <= $b Vrai si $a inférieur ou égal à $b

$a >= $b Vrai si $a supérieur ou égal à $b

$a === $b Vrai si $a et $b identiques (valeur et type)

$a !== $b Vrai si $a et $b différents (valeur ou type)


30

Les opérateurs logiques


[Expr1]and [Expr2] Vrai si [Expr1] et [Expr2] sont vraies

[Expr1] && [Expr2] idem

[Expr1] or [Expr2] Vrai si [Expr1] ou [Expr2] sont vraies

[Expr1] || [Expr2] idem


Vrai si [Expr1] ou [Expr2] sont vraies
[Expr1] xor [Expr2]
mais pas les deux
! [Expr1] Vrai si [Expr1] est non vraie
31

Structure de contrôle (Si…Alors…Sinon…)


if (condition)
{
/* Bloc d’instructions exécuté si la condition est vraie
*/
}
else
{
/* Bloc d’instructions exécuté si la condition est fausse
*/
}
32

Exercice
Soit la température T. Ecrire un programme PHP qui affiche :
 froid si T < 8
 frais si 8 < T < 17
 bon si 17 < T < 25
 chaud sinon
33

Solution
<?php
$T = 2;
if ($T < 8 ) echo "froid";
else if ($T >8 && $T<17) echo "frais";
else if ($T >17 && $T<25) echo "bon";
else echo "chaud";
?>
34

Structure de contrôle (Tant que… faire…)


for(avant; condition; fin_chaque_itération)
{/* Bloc d’instructions répété tant que la condition est
vraie */
} Exemple:
for ($i = 1; $i <= 10; $i++){
Équivalent à:
echo $i;
avant ; }
while (condition)
{/* Bloc d’instructions répété tant que la condition est
vraie */
fin_chaque_itération ;
}
35

Structure de contrôle (Tant que… faire…)


while (condition)
{
/* Bloc d’instructions répété tant que la condition est
vraie */
}

do {
/* Bloc d’instructions exécuté une fois puis répété tant
que la condition est vraie */
}
while (condition) ;
36

Exercice

Ecrire un code PHP qui affiche à l’écran les entiers de 0 à 100 compris en
utilisant trois types de boucle (while, do while, for).
37

Structure de contrôle (switch)


switch (val) switch ($i) {
{ case 0:
case v1: echo "i égal 0";
// instructions exécutées si val==v1
case v2: case 1:
// instructions exécutées si val==v2 echo "i égal 1";

case 2:
default:
// instructions par défaut echo "i égal 2";
}
}
38

switch ($i) {
L’instruction break case 0:
echo "i égal 0";
Permet de sortir d’une structure de contrôle break;
case 1:
switch (val) echo "i égal 1";
{ break;
case v1:
instructions exécutées si val==v1 case 2:
break ; /* On sort du switch si val==v1*/ echo "i égal 2";
case v2: break;
instructions exécutées si val==v2 }

break ; /* On sort du switch si val==v2*/



default:
instructions exécutées par défaut
si val!=v1 et val!=v2
}
39

Exercice
• En utilisant switch, écrire un programme PHP qui affiche le jour en lettre ( la
variable jour entrée en chiffre)
Références
$a 12
84
12
$a = 12 ;
$b 12
" Bonjour"
$b = $a ;
$c
$c = &$a ; "hello"
$b = ‘’ Bonjour" ;
$c = 84 ;
echo "\$a : $a\n" ; $a : 84
echo "\$b : $b\n" ; $b : Bonjour
echo "\$c : $c\n" ; $c : 84
unset($c) ;
$c = "hello" ;
40
41

Les fonctions
• Déclaration et appel d’une fonction
Function nom_fonction($arg1, $arg2, …$argn)
{
//déclaration des variables ;
//bloc d’instructions ;
//fin du corps de la fonction
return $resultat ;
}
42

Les fonctions
• Exemple :
Testez !
<?php
$rayon = 15;
$aire = calcul_superficie($rayon);
echo "L'aire du disque de rayon $rayon est : $aire";
?>

<?php
// fonction de calcul de la superficie d'un disque
function calcul_superficie($rayon) {
$sup = $rayon * $rayon * 3.14159; // pi() ou la constante M_PI
return $sup; }
?>
43

Les fonctions
• Fonction avec nombre d’arguments inconnu
• func_num_args() : fournit le nombre d’arguments qui ont été
passés lors de l’appel de la fonction

• func_get_arg($i) : retourne la valeur de la variable située à la


position $i dans la liste des arguments passés en paramètres.
• Ces arguments sont numérotés à partir de 0
<?php
function p()
{
echo func_num_args(); // retourne 3
echo func_get_arg(1); //retourne 2
}
p(1, 2, 3);
?>
44

Fonction récursive - exemple


<?php
Testez !
$i = 12;
recursion($i);

function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a+1);
}
}
?>
Mode de passage des arguments
<?php
function permutation($x, $y) {
echo "permutation..." ;
$t = $x ; Permutation impossible :
$x = $y ; Passage des arguments des
$y = $t ; fonctions par valeur
}
$a = 12 ;
$b = 210 ; $a = 12
echo "\$a = $a" ; $b = 210
echo "\$b = $b" ; permutation...
$a = 12
permutation($a, $b) ;
$b = 210
echo "\$a = $a" ;
echo "\$b = $b" ;
?> 45
Mode de passage des arguments
<?php
function permutation(&$x, &$y) {
echo "permutation..." ;
$t = $x ;
$x = $y ; Permutation réussie
$y = $t ;
}
$a = 12 ;
$b = 210 ; $a = 12
echo "\$a = $a" ; $b = 210
permutation...
echo "\$b = $b" ;
$a = 210
permutation($a, $b) ;
$b = 12
echo "\$a = $a" ;
echo "\$b = $b" ;
46
?>
47

Arguments par défaut des fonctions


• Valeur par défaut d’un argument s’il n’a pas été défini lors de l’appel de la
fonction
function bonjour($nom="inconnu")
{
echo "Bonjour cher $nom" ;
}

• Utilisation
bonjour() ; Bonjour inconnu

bonjour("Adil") ; Bonjour Adil


48

Définition de fonctions fréquemment utilisées


• Certaines fonctions sont utilisées dans plusieurs scripts PHP
• Comment faire pour ne pas les définir dans chacune des pages ?
• Utilisation de :
• include("fichier") ;
• require("fichier") ;
• include_once("fichier") ;
• require_once("fichier") ;
• Permet d’inclure le contenu de fichier dans le script courant
49

include et require
Fichier utilisation1.php
Fichier mafonction.php …
require("mafonction.php")
<?
mafonction(4) ;
function mafonction($arg)

{
if ($arg > 0)
{
echo ("Vrai") ;
} Fichier utilisation2.php
else

{
include("mafonction.php")
echo ("Faux") ;

}
$var=0 ;
}
mafonction($var) ;
?>

50

include et include_once
La fonction include vous autorise à inclure plusieurs fois le
<?php même fichier grâce à une boucle par exemple.
include 'header.php';
?>
foreach($products as $product)
{
<div id="content">
// will display all products.php
</div>
include 'product.php';
}
<?php
include 'footer.php'; Mais si on reprend cette boucle en utilisant include_once
?> à la place, le fichier ne sera inclus qu'une seule fois.

Si le fichier à inclure n'est pas trouvé, PHP


renverra alors un warning. foreach($products as $product)
Le chemin du fichier passé en paramètre peut {
être absolu ou relatif. // will only display one product
include_once 'product.php';
}
51

require et require_once
La fonctions est require_once, qui est une combinaison des
require 'main_page.php'; fonctions require et include_once

<?php
La fonction require agit de la même manière require_once 'header.php';
que include, sauf que require génère une ?>
erreur si le fichier à inclure n'est pas trouvé. <div id="content"> </div>
Comme son nom l'indique, le fichier est requis <?php
(nécessaire) pour que l'application fonctionne. require_once 'footer.php';
?>
L'erreur générée s'il y a lieu sera
La fonction require_once est celle qui doit être utilisée pour
une E_COMPILE_ERROR qui arrête
inclure l'entête et le pied de page de vos pages. En effet,
l'application là où la fonction include génère
sans ces deux éléments, votre site ne s'affichera pas
un warning qui n'influe pas le fonctionnement
correctement, il ne faut donc pas qu'il puisse fonctionner
de l'application.
sans eux. Mais il faut également qu'ils ne s'affichent qu'une
seule fois.
52

Les chaînes de caractères


Année :2013
<?php Année :$annee_actu
$annee_actu = "2013"; Année : 2013
Année n+2= 2015
echo "Année : $annee_actu<br />"; La variable $annee_actu vaut 2013
echo 'Année : $annee_actu<br />';
echo 'Année : '.$annee_actu.'<br />';
echo 'Année n + 2 = '.($annee_actu + 2).'<br />'; Testez !
echo "La variable \$annee_actu vaut $annee_actu";
// l'emploi du \ est indispensable pour despécialiser
?>
53

Les chaînes de caractères


• Quelques fonctions usuelles

Fonction Signification Exemple


strlen() renvoie le nombre de caractères contenus $nbcar = strlen($var);
dans la chaîne
substr() extrait un nombre de caractères d'une chaîne $extrait = substr($var,$pos,$nb);
à partir d'une position
trim() supprime les espaces avant et après la chaîne $var = trim($var);

addslashes() déspécialise les caractères apostrophe ('), $varbd = addslashes($var);


double apostrophe (") et le slashe (\) pour les
bases de données.
Strchr() Recherche la première occurrence d'un $chaine1 = Strchr(chaine, caractère);
caractère.
54

Les tableaux
• Création / initialisation:
$tab1=array(12, "fraise", 2.5) ;
$tab2[] = 12 ;
$tab2[] = "fraise" ;
$tab2[] = 2.5 ;
$tab3[0] = 12 ; Clé Valeur
$tab3[1] = "fraise" ; 0 12
$tab3[2] = 2.5 ; 1 "fraise"
2 2.5
55

Les tableaux
• Les éléments du tableaux ne sont pas forcement d’indices
consécutifs :
Clé Valeur

$tab4[0] = 12 ; 0 12

$tab4[1] = "fraise" ; 1 "fraise"

$tab4[2] = 2.5 ; 2 2.5

$tab4[5] = "el5" ; 3
4
5 "el5"

• Comment parcourir de tels tableaux ?


56

Les tableaux
Parcours classique : 4

for ($i=0; $i < sizeof($tab4); $i++)


Testez !
{ echo "tab4[$i]: "
. $tab4[$i] . "<BR>\n"; } Clé Valeur
0 12
1 "fraise"
2 2.5
3
4
? 5 "el5"
57

Les tableaux
Structure de contrôle Pour chaque élément

foreach ($tableau as $element)


{
/* Bloc d’instructions répété pour chaque élément de $tableau */
/* Chaque élément de $tableau est accessible grâce à $element */
}
Les tableaux Testez !
foreach … HTML
PHP Val:12<br>\n
… Val:fraise<br>\n
$tab4[0] = 12 ; Val:2.5<br>\n
$tab4[1] = "fraise" ; Val:el5<br>\n
$tab4[2] = 2.5 ; …
$tab4[5] = "el5" ;
foreach($tab4 as $v) Navigateur
{
echo "Val: $v<br>\n";
}

58
59

Les tableaux
• Les tableaux indicés et les tableaux associatifs
• Tableau associatif (ou table de hachage)
• Les éléments sont référencés par des chaînes de caractères
associatives en guise de nom: la clé d’index
• Syntaxe :
$tableau = array(ind0 => val0, ind1 => val1,..., indN => valN);

$jour["Dimanche"] = 7;
$jour["Mercredi"] = "Le jour des enfants";
$jour2 = array("Dimanche" => 1, "Lundi" => 2, "Mardi" => 3,
"Mercredi" => 4, "Jeudi" => 5, "Vendredi" => 6, "Samedi" => 7);
60

Les tableaux
• Tableaux multidimensionnels
• Pas d'outils pour créer directement des tableaux
multidimensionnels
• L'imbrication des tableaux est possible

$tab1 = array(Val0, Val1,..., ValN);


$tab2 = array(Val0, Val1,..., ValN);
// Création d'un tableau à deux dimensions
 $tableau = array($tab1, $tab2);
61

Les tableaux
• Exemple:
$mois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet",
"Août", "Septembre", "Octobre", "Novembre", "Décembre");
$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi",
"Samedi");
$element_date = array($mois, $jour);

// accès aux valeurs  $tableau[indice][indice];

$MM = $element_date[0][0];
//affecte "Janvier" à $MM
echo $element_date[1][4] . " 7 " . $element_date[0][2] . "2015";
// retourne "Jeudi 7 Mars 2015"
62

Traitement des données de formulaires


• PHP permet de traiter les données saisies grâce à un formulaire HTML si le
champ ACTION du formulaire désigne une page PHP du serveur.

• Après récupération par le serveur Web, les données sont contenues dans l'une
des variables superglobales de type tableau associatif $_GET ou $_POST .

• La valeur peut être trouvée grâce à une clé qui porte le même nom que le
champ du formulaire de la page HTML de saisie.
Exemple – Formulaire HTML
<html> Test4.php
<head>
<title>formulaire</title>
</head>
<body>
<form action="valide1.php" method="get">
Nom: <input type="text" name="nomPers">
<input type="submit" value="Envoyer">
</form>
</body>
</html>

63
64

Exemple – Formulaire HTML


<html>
<head> valide1.php
<title>Validation</title>
</head>
<body> $_GET['nomPers']
<?php est-il défini ?
if (isset($_GET['nomPers']))
{ $_GET['nomPers']
if (!empty($_GET['nomPers']))
{
est-il vide ?
$val = "Vous avez saisi ".$_GET['nomPers']."\n" ;
}
else
$val = "Aucune valeur saisie\n";
}
else
$val = "Utilisation incorrecte\n" ;
echo $val ;
?>
</body>
</html>
Formulaires contenant des champs « SELECT »

65
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:&nbsp;
<select name="sel">
<option>Fraise
<option>Pomme
<option>Poire
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel=Pomme

66
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:&nbsp;
<select name="sel" multiple>
<option>Fraise
<option>Pomme
<option>Poire
<option>Banane
Envoyer <option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel=Pomme&sel=Poire
???
67
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:&nbsp;
<select name="sel[]" multiple>
<option>Fraise
<option>Pomme
<option>Poire
<option>Banane
Envoyer <option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel%5B%5D=Pomme&sel%5B%5D=Poire
valide3.php?sel[ ]=Pomme&sel[ ]=Poire

68
Traitement des données des champs « SELECT »
<html>
<head>
<title>Liste de fruits</title>
</head>
<body>
<?php
if (isset($_GET['sel']) && !empty($_GET['sel'])) $_GET[‘sel']
{/* La variable $_GET['sel'] est définie est un tableau
et elle n'est pas vide */
foreach($_GET['sel'] as $fruit)
$val = "Vous avez choisi $fruit<br>\n" ;
}
else
$val = "Vous n'avez pas choisi de fruit\n" ;

echo $val;
?>
</body>
</html>

69
70

Résultat
Formulaires contenant des champs « CHECKBOX »

71
Formulaires contenant des champs « CHECKBOX »
<html> Même validation du
<head> Select multiple
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form name="formu" action="valide3.php" method="get">
Choisissez des fruits&nbsp;:<br>
<input type="checkbox" name="sel[]" value="Fraise">Fraise<br>
<input type="checkbox" name="sel[]" value="Pomme" >Pomme <br>
<input type="checkbox" name="sel[]" value="Poire" >Poire <br>
<input type="checkbox" name="sel[]" value="Banane">Banane<br>
<input type="checkbox" name="sel[]" value="Cerise">Cerise<br> <input
type="submit" value="Envoyer">
</form>
</body>
</html>

72
73

Résultat
74

Gestion des erreurs: fonctions exit() et die()

• Dans certains cas, il n’est ni possible ni utile de poursuivre


l’exécution du code PHP (variables non définies, valeurs erronées,
échec de connexion, …)
• Arrêt brutal de l’exécution du code:
• die(message)
• exit(message)
Envoie message au navigateur et termine l’exécution du script courant
75

Interaction Avec
La Base De Données
Extension mysqli
76

Interaction avec la base de données

Installation : Pour installer l'extension mysqli dans WAMP,


Activer l'extension php_mysqli dans le menu 'PHP extensions'
et désactivez aussi l'extension standard php_mysql

Options de configuration MySQLi  wamp  fichier 'php.ini'


mysqli.max_links ,
mysqli.default_port , mysqli.default_socket ,
mysqli.default_host , mysqli.default_user ,
mysqli.default_pw
77

Interaction avec la base de données


• Principe
 PHP propose de nombreux outils permettant de travailler avec la
plupart des SGBDR
• Oracle, Sybase, Microsoft SQL Server, PostgreSQL ou encore MySQL

 Lorsqu'une base de données n'est pas directement supportée par


Php, il est possible d'utiliser un driver ODBC (pilote standard)
pour communiquer avec les bases de données
78

Interaction avec la base de données


 Php fournit un grand choix de fonctions permettant de
manipuler les bases de données.

• 4 fonctions sont essentielles:


oLa fonction de connexion au serveur
oLa fonction de choix de la base de données
oLa fonction de requête
oLa fonction de déconnexion
79

Interaction avec la base de données


• Le package mysqli est devenu disponible avec la version de PHP 5 et est
conçu pour fonctionner avec MySQL version 4.1.3 et ultérieure.

• Les versions antérieures doivent utiliser le package mysql

• Le package mysqli est orienté objet, contrairement au package mysql mais


peut également être utilisé de manière procédurale.

• Le package Mysqli a amélioré la vitesse, la sécurité et la compatibilité


avec les bibliothèques.
80

Interaction avec la base de données


• Principe
• Avec le SGBD MySQL, les fonctions de manipulation sont :

• mysqli_connect
• mysqli_select_db
• mysqli_query
• mysqli_close
81

Interaction avec la base de données


• Connexion à une base de données MySQL
mysqli_connect(host, username, password, dbname);
• retourne une valeur de type Integer servant d’identificateur de connexion
lorsque la connexion a été établie
• retourne False si une erreur se produit lors de l ’établissement de la connexion

Testez !
$con = mysqli_connect("localhost", "root", "", "mabase");
if (!$con) {
echo "Failed to connect to MySQL : " .mysqli_connect_error();
die('Not connected : ' . mysqli_error($con));
}
82

Configuration
1. Dans php.ini Configurez MySQLi
• mysqli.default_host =localhost
• mysqli.default_user =root
2. Accédez à http://localhost/index.php et cliquez sur PhpMyAdmin (login= root
et mot de passe « » càd vide)
3. Créez une base de données nommée mabase
83

Interaction avec la base de données


 Connexion à une base de données MySQL

<?php
$con = mysqli_connect("localhost","root","","mabase");

// Check connection
if (!$con)
{
echo "Connexion impossible à MySQL: " . mysqli_connect_error();
}
echo "connexion reussie ";
mysqli_close($con); //Fermeture de la connexion
?>
84

Interaction avec la base de données

L'accès aux bases de données


• Suite à la connexion à un SGBDR, il faut soit sélectionner la base
de données si elle existe déjà, soit la créer.
• La sélection de bases de données s'effectue par des fonctions
adaptées :

mysqli_select_db($id_connexion, $nom_base_donnee);
85

Interaction avec la base de données


Création d’une base de données
• Il est possible de créer une base à l'aide d'une requête SQL.
$requete = "CREATE DATABASE nom_base_donnee";

• La création de la base de données se fait avec :


• mysqli_query($id_connection, $requete);

Testez !
• Exemple :
• $con = mysqli_connect("localhost", "root", "", “mabase");
• $requete = "create database gtr2";
• mysqli_query($con, $requete);
86

Interaction avec la base de données


Suppression d’une base de données
• Il est possible de supprimer une base à l'aide d'une requête SQL.
$requete = "DROP DATABASE nom_base_donnee";

• La création de la base de données se fait avec : Testez !


• mysqli_query($id_connection, $requete);

• Exemple :
• $con = mysqli_connect("localhost", "root", "", “mabase");
• $requete = " drop database gtr2";
• mysqli_query($con, $requete);
87

Interaction avec la base de données


Testez !
Création d’une table dans une base de données
• Exemple :
$con = mysqli_connect("localhost", "root", "", "mabase");
$query = "create table etudiant (
id integer,
nom varchar(20),
prenom varchar(20)
)";
mysqli_query($con, $query);
mysqli_close($con);
88

Interaction avec la base de données


Insertion des enregistrement dans une table Testez !
• Exemple :
$con = mysqli_connect("localhost", "root", "", "mabase");

$query2 = "insert into etudiant (id, `nom`, `prenom`)


values
(1, 'alami', 'dris'),
(2, 'bennani', 'kamal'),
(3, 'rochdi', 'said'),
(4, 'soulami', 'badr')";

mysqli_query($con, $query2);
mysqli_close($con);
89

Classes pré-définies : mysqli_result


Représente le résultat retourné par le serveur.
Quelques Méthodes :
close - Termine le jeu de résultat MySQL
data_seek - Déplace le pointeur de lignes de résultat
fetch_field - Lit les informations de colonnes dans un résultat
fetch_fields - Lit les informations de toutes les colonnes d'un résultat
fetch_field_direct - Lit les informations de colonne
fetch_array - Lit une ligne de résultat dans un tableau associatif ou numérique
fetch_assoc - Lit une ligne de résultat dans un tableau associatif
fetch_object - Lit une ligne de résultat dans un objet
fetch_row - Lit une ligne de résultat dans un tableau (indices numériques)
fetch_seek - Place le pointeur de résultat à un offset valide
90

Interaction avec la base de données


Les requêtes SQL : Les requêtes SQL permettent d'accomplir une
action sur une base de données comme
• La sélection d'informations,
• la création de tables,
• l'ajout, la suppression ou la modification des enregistrements.

oLes requêtes SQL sont envoyées à la base de données définie par


un identificateur de connexion.
91

Interaction avec la base de données


Testez !
La selection
<?php
$con = mysqli_connect("localhost", "root", "", "mabase");

$requete = "SELECT * FROM etudiant WHERE nom = 'alami'";


$resultat = mysqli_query($con,$requete);

$ligne = mysqli_fetch_assoc($resultat);
echo 'le premier enregistrement est l\'etudiant '.$ligne["prenom"];

mysqli_close($con);

?>
92

Interaction avec la base de données


Traitement des résultats d’une requête

• Pour récupérer les valeurs d'un enregistrement, on utilise donc la


fonction mysql_fetch_assoc() qui retourne l'enregistrement sous
la forme d'un tableau associatif.

• 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.
93

Interaction avec la base de données


 Récupérer un enregistrement avec la clause SELECT

while ($ligne = mysqli_fetch_assoc($resultat)) {


echo $ligne["nom"]; // liste des noms d’une table
}
Ou

while ($ligne = mysqli_fetch_row($resultat)) {


echo $ligne[0]; // liste de la colonne d’indice 0
}
94

Exemple Testez !
// Creation et envoi de la requete
$query3 = "select * from etudiant order by nom";
$result = mysqli_query($con, $query3);
// Recuperation des resultats
echo "<center><table border='1'>";
echo "
<tr><th>id</th> <th>nom</th> <th>prenom</th> ";
while($row = mysqli_fetch_row($result)) {
$id = $row[0];
$nom = $row[1];
$prenom = $row[2];
echo " <tr>
<td>$id</id> <td>$nom</id> <td>$prenom</id>
</tr>";
}
echo "</table></center>";
mysqli_close($con);
95

Insérer un enregistrement Testez !

Récupération des valeurs renseignées dans le formulaire


$nom = nl2br($_POST["nom"]);
// utilisation de la fonction nl2br pour tenir compte des sauts de ligne
$prenom = nl2br($_POST["prenom"]);

Requête d'insertion de l'actualité


$requete ="INSERT INTO etudiant (nom, prenom) VALUES
('$nom','$prenom')";
$resultat = mysqli_query($con,$requete);
96

Modifier un enregistrement Testez !

Récupération des valeurs renseignées dans le formulaire


$nom = $_POST["nom"];
$prenom= $_POST["prenom"];

mise à jour de l’enregistrement


$requete ="UPDATE etudiant SET nom = '$nom' WHERE
prenom='$prenom'";
$resultat = mysqli_query($con,$requete);
97

Supprimer un enregistrement Testez !

Récupération de la valeur de la variable


$prenom = $_GET["prenom"];

Suppression de la photo sélectionnée

$requete ="DELETE FROM etudiant WHERE prenom='$prenom'";


$resultat = mysqli_query($con,$requete);
98

Les principales fonctions MySQL en PHP


Fonction Description
mysqli_close() ferme la connexion MySQL
mysqli_connect() ouvre une connexion à un serveur MySQL
mysqli_error() renvoie l'erreur MySQL rencontrée
mysqli_fetch_assoc() lit une ligne de résultat dans un tableau associatif
mysqli_fetch_row() découpe une ligne de résultat en un tableau
libère la mémoire du résultat de la dernière
mysqli_free_result()
requête
renvoie le nombre d'enregistrements résultants
mysqli_num_rows()
d'une requête de type SELECT
mysqli_query() envoie une requête SQL
mysqli_select_db() sélectionne une base de données MySQL
99

Exemple Testez !

$query3 = "select * from etudiant order by nom";


$result = mysqli_query($con, $query3);

// nombre d’enregistrements
$rowcount = mysqli_num_rows($result);
echo "<br/> rowcount : " . $rowcount ."<br/>";

// nombre de colonnes
$rowfield = mysqli_num_fields($result);
echo "rowfield : " . $rowfield;
100

Exercice
 Une école souhaite réaliser une base de données pour la gestion des notes.
 Les règles de gestion sont les suivantes :
• Les élèves sont caractérisés par un numéro, leur nom et leur prénom et il
appartient à une et une seule classe. Cette dernière est caractérisée par un code et
un nom.
• Les matières sont caractérisées par un code et un nom et elles peuvent faire l’objet
de plusieurs devoirs. Un devoir est caractérisé par un numéro de devoir et une
date ne concerne qu’une seule matière.
• La note dépend à la fois du devoir et de l’élève
 Etablir une base de données correspondante et un site qui peut réaliser la
gestion des étudiants.