0% ont trouvé ce document utile (0 vote)
201 vues213 pages

Partie 2 Cours PHP Mysql

Transféré par

robert niyonzima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
201 vues213 pages

Partie 2 Cours PHP Mysql

Transféré par

robert niyonzima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Programmation Web :

II
Msc Alain SHIKANEZA
shikalaine@[Link]

[Link] Programmation Web II 1


INTRODUCTION

Dans ce cours de programmation Web


II, Nous allons apprendre les notions
de création des sites /applications
web dynamiques .Mais avant
d’aborder le site/application web
dynamique ,un petit rappel sur le site
web statique.
[Link] Programmation Web II 2
INTRODUCTION

Ce cours vous permet d’acquérir toutes les compétences


nécessaires pour
exercer le métier de développeur web full-stack. Vous
serez capable de gérer la création d’un site web à la fois
côté utilisateur (front-office) et côté administrateur (back-
office)
[Link] Programmation Web II 3
INTRODUCTION

Vous apprendrez les langages nécessaires au


développement d'interfaces web (HTML5 et
CSS3) vous serez également capable de créer des
[Link] Programmation Web II 4
INTRODUCTION

Vous serez capable de :


Maquetter et réaliser des interfaces utilisateur web
Développer la partie dynamique
[Link]
des interfaces utilisateur web
Programmation Web II 5
SITE WEB STATIQUE
Les sites Web statiques contiennent un
nombre fixe de pages et le format de page
Web est fixe et fournit des informations
au client. Il n’y pas d’interaction avec le
client , Ce juste pour lire. Ces sites Web
utilisent des langages côté client tels que
HTML et CSS, etc.

[Link] Programmation Web II 6


UN SITE WEB DYNAMIQUE
Un site Web dynamique est un site Web dont le contenu
change en fonction de la demande de l'utilisateur. Ce
n'est pas juste pour lire. Au lieu de cela, il fournit plus
d'interaction utilisateur et de fonctionnalités. Ces sites
Web utilisent des langages côté client tels que HTML et
CSS, ainsi que des langages de script côté serveur tels
que [Link], PHP, JSP (Java Server Pages) et Python pour
développer les pages. Ils sont associées à une base de
données.
Notons qu’un site web dynamique a deux parties:
Partie visiteur
Partie administrateur
[Link] Programmation Web II 7
TABLE DE COMPARAISON
Pages Web statiques Pages Web dynamiques
Présentation Les pages Web statiques Les pages Web
resteront les mêmes jusqu’à ce dynamiques sont
que quelqu’un le modifie comportementales et ont
manuellement. la capacité de produire un
contenu distinct pour
différents visiteurs.
Base de données N’utilisent pas des bases de Utilisent des bases de
données données

Temps de chargement Demande moins de temps Demande plus de temps


de la page
Changement Se produit rarement Fréquemment
d’information
Complexité Simple à concevoir. Compliqué à construire.

[Link] Programmation Web II 8


LES DEUX PARTIES DU SITE WEB DYNAMIQUE(1)

Nous allons divisons le site web en deux parties.


Plusieurs etapes sont à suivre:
1)Nous allons créer un sous dossier nommé admin ou pouvant
prendre un autre nom dans notre dossier qui héberge nos fichiers

[Link] Programmation Web II 9


LES DEUX PARTIES DU SITE WEB DYNAMIQUE(1)

2)Apres la création du sous dossier nommé admin nous copions


tous les fichiers dans le sous dossier.

[Link] Programmation Web II 10


LES DEUX PARTIES DU SITE WEB DYNAMIQUE(3)

3) Etant dans le sous dossier admin ,nous créons s


le fichier accueil et nous coupons tout le
contenu du fichier index et collons dans le
fichier accueil .
4) Le fchier index est maintenant vide , nous allons
créer sur cette page un formulaire de connexion
Voici un exemple

[Link] Programmation Web II 11


A part html,css nous allons
utiliser php et mysql .Donc en
dessous nous allons
introduction php puis loin
mysql .

[Link] Programmation Web II 12


[Link] Programmation Web II 13
INTRODUCTION

[Link] Programmation Web II 14


PHP: Langage de script pour le Web
• Qu’est-ce que PHP ?
– Langage de script. Principalement utilisé côté serveur
– Créé en 1994-1995 par Rasmus Lerdorf
– Acronyme initial : Personal Home Page
– Acronyme récursif : PHP: Hypertext Preprocessor
– Extension utilisée sur ≈80% des serveurs Web
– Langage multi plate-forme (UNIX / Windows…)
– Open Source
– Versions actuelles (source [Link], 03/14) :
• PHP5 >97%
• PHP4 <3% - PHP3 <0,1%

[Link] Programmation Web II 15


Utilité et utilisation de PHP
• Création de pages Web « dynamiques »,
fabriquées à la volée, construite à la demande

• Interface entre un serveur Web et des bases


de données

• Création d’applications Web

[Link] Programmation Web II 16


Principales fonctionnalités de PHP
• Manipulation de chaînes et tableaux
• Calendrier / dates / heures
• Fonctions mathématiques
• Accès au système de fichiers
• Manipulation d’images
• HTTP / FTP / IMAP
• Bases de données (Oracle, MySQL, …)
• XML
• …
[Link] Programmation Web II 17
Programme en PHP
Délimitation du code PHP dans le fichier .php :
• <?php Code PHP ?> Fermeture
Fermeture optionnelle
optionnelle
est
est déconseillée
déconseillée
• <script language="PHP">
Confusion
Confusion avec
avec JavaScript
JavaScript
Code PHP  àà bannir
 bannir !!!!
</script>
short_open_tag
short_open_tag
• <? Code PHP ?>
asp_tags
asp_tags Dépend
Dépend dede la
la
• <% Code PHP %> configuration
configuration
du
du serveur
serveur
 àà bannir
 bannir !!!!
[Link] Programmation Web II 18
LES Fonctions Prédefies en PHP

[Link] Programmation Web II 19/154


Les Fonctions d’affichage
• Les fonctions d’affichage :
• echo() : écriture dans le navigateur
• print() : écriture dans le navigateur
• printf([$format, $arg1, $arg2]) : écriture formatée
comme en C, i.e. la chaîne de caractère est constante
et contient le format d’affichage des variables passées
en argument
• Exemples :
• echo ‘’Bonjour ’’; // Bonjour
• print(‘’Bonjour $name’’);
• printf(‘’Bonjour %s’’, $name);

[Link] Programmation Web II 20/154


Les Fonctions(1)

•strtoupper(variable) :convertir la chaîne en


majuscule
•strtolower(variable): : convertir la chaîne en
minuscule
•ucfirst(variable): : convertit le premier
caractère de la chaîne en majuscules.

[Link] Programmation Web II 21/154


Les Fonctions (2)
• trim(variable): supprime les espaces de début de de
fin de la chaîne.
• strlen — Calcule la taille d'une chaîne
• strrev — Inverse une chaîne
• Is_string:Est utilisé pour déterminer si une variable est
une chaîne de caractére ou non.
• Date:Cette fonction permet de formater une date.
echo "Aujourd'hui c'est ". date("Y/m/d");
echo "Aujourd'hui c'est ". date("Y.m.d");
echo "Aujourd'hui c'est ". date("Y-m-d");

[Link] Programmation Web II 22/154


Les Fonctions (3)
• Is_numeric: Est utilisé pour vérifier si une variable est
numérique ou non.
• strlen — Calcule la taille d'une chaîne
• strrev — Inverse une chaîne
• Is_string:Est utilisé pour déterminer si une variable est
une chaîne de caractére ou non.
• Date:Cette fonction permet de formater une date.
echo "Aujourd'hui c'est ". date("Y/m/d");
echo "Aujourd'hui c'est ". date("Y.m.d");
echo "Aujourd'hui c'est ". date("Y-m-d");

[Link] Programmation Web II 23/154


Les Fonctions (3)
• Isset(): est une fonction intégrée en PHP qui
vérifie si une variable est définie, ce qui
signifie qu’elle doit être déclarée et non NULL.
La variable
'str' est
définie.

[Link] Programmation Web II 24/154


Les Fonctions (4)
• empty() vérifie si une variable est vide ou non.
Cette fonction renvoie « FALSE » si la variable
existe et n’est pas vide, sinon elle renvoie
« TRUE »..
La variable
'str' est
vide.

[Link] Programmation Web II 25/154


Les Fonctions (5)
• Include() ou require :prend tout le code qui
existe dans le fichier spécifié et le copie dans
le fichier qui utilise l'instruction include
• Header(“location:Nom de la page”): permet
une rédirection d’une page en une autre
• Redirection après x temps
Header(‘Refresh:10;url=Nom de la page’)

Le PHP a beaucoup de fonctions natives , vous les exploiterez au fur et à mesure

[Link] Programmation Web II 26/154


Eléments de syntaxe PHP
• La syntaxe de PHP est celle de la 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
[Link] Programmation Web II 27
VARIABLES ET TYPES

[Link] Programmation Web II 28


Les variables et les types de données
• Tout identificateur commence par « $ »
• Les affectations sont réalisées grâce à « = »
• Les types sont :
– 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)
– Ressource
– NULL
• Les variables ne sont pas explicitement déclarées

[Link] Programmation Web II 29


Les variables et les types de données
• La « déclaration » d’une variable correspond à sa
première affectation
• Le type d’une variable est dynamique et est
déterminé par la valeur qui lui est affectée
• Une variable possède donc :
– Un nom (commençant par $)
– Un type dynamique
– Une valeur
• Adaptation possible du type selon le contexte
sans modification du type intrinsèque

[Link] Programmation Web II 30


Typage à l’affectation. Exemple
// Pas de déclaration préalable de variable

$test = 1.5 ;
$test
integer
float
array
$test = 12 ; 1.5
12

$test = array() ;

$test = "10" ;

[Link] Programmation Web II 31


Typage en fonction du contexte.
Exemple
$nombre1 = 1.5 ;
$nombre2 = 12 ;
$chaine1 = "10" ;
$chaine2 = 'coucou' ;
Utilisé
Utilisé comme
comme float
float
$total =
$nombre1 + $nombre2 + $chaine1 + $chaine2 ;
1.5
1.5 12
12 "10"
"10" 'coucou'
'coucou'

13.5
13.5 10.0
10.0

23.5
23.5 0.0
0.0
echo $total ; // 23.5 Réel
23.5
23.5

[Link] Programmation Web II 32


Modification de types
• Le type désiré peut être précisé : cast
• $variable = (nom_du_type) valeur

$a = (integer) "10" ;

$b = (string) 12 ;

$c = (float) $b ;
[Link] Programmation Web II 33
Définition de constantes
<?php
define("ma_constante", "Bonjour à tous") ;
nom
nom valeur
valeur
Définition
Définition d'une
d'une constante
constante

echo ma_constante ;

Utilisation
Utilisation de
de la
la constante
constante

[Link] Programmation Web II 34


CHAÎNES DE CARACTÈRES

[Link] Programmation Web II 35


Substitution de variables dans les
chaînes
• Guillemets doubles chaîne
chaîne
$a="chaîne" ; voici
voici une
une chaîne
chaîne
$b="voici une $a";

chaîne
chaîne
• Guillemets simples voici
voici une
une $a
$a
$a='chaîne' ;
$b='voici une $a';

[Link] Programmation Web II 36


La commande echo
• Naïvement, 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="Marcel" ; echo "Bonjour $nom" ;

• Plus exactement, permet d’envoyer des octets au


navigateur du client
– Contenu HTML, XML, CSS, JavaScript, …
– Données d'une image
– Contenu d'un ficher PDF, Flash, etc.

[Link] Programmation Web II 37


Hello world !
Interprétation
Interprétation du
du code
code PHP
PHP sur
sur le
le serveur
serveur et
et
transmission
transmission du
du résultat
résultat au
au client
client

Serveur Navigateur
<?php
<?php <<html
html>>
$debut
$debut == <<<HTML <<head
<<<HTML head>>
<html>
<html> <<title
title>>hello
hello</
</title
title>>
<head>
<head> </
</head
head>>
<title>hello</title>
<title>hello</title> <<body
body>>
</head>
</head> Hello
Hello world!
world!
<body>\n </
</body
body>>
<body>\n
HTML; </
</html
html>>
HTML;
$corps
$corps == "Hello
"Hello world!\n";
world!\n";
$fin
$fin == <<<HTML
<<<HTML
</body>
</body>
</html>
</html>
HTML;
HTML;
/*
/* Envoi
Envoi au
au client
client */
*/
echo
echo $debut.$corps.$fin
$debut.$corps.$fin ;;
Impossible
Impossible de
de voir
voir le
le code
code PHP
PHP depuis
depuis le
le navigateur
navigateur !!
!!
[Link] Programmation Web II 38
Inclusions
• On peut inclure dans un script php le contenu
d’un autre fichier.
• require insert dans le code le contenu du fichier
spécifié même si ce n’est pas du code php. Est
équivalent au préprocesseur #include du C.
• Exemple :
• require(‘’[Link]’’);
• include évalue et insert à chaque appel (même
dans une boucle) le contenu du fichier passé en
argument.
• Exemple :
• include(‘’[Link]’’);
[Link] Programmation Web II 39/154
GESTION DES ERREURS
Tout code peut rencontrer une situation
anormale qui va l’empêcher de s’exécuter
correctement.
Ces « situations anormales » peuvent parfois
provenir du code lui-même, c’est-à-dire d’erreurs
faites par les développeurs qui l’ont écrit comme
par exemple l’utilisation d’une variable non
définie ou le passage d’arguments incorrects
dans une fonction ou encore l’oubli d’une
parenthèse ou d’un point-virgule quelque part
dans le code
[Link] Programmation Web II 40
GESTION DES ERREURS
Parfois, également, un code ne va pas pouvoir
s’exécuter correctement à cause d’un problème
externe comme par exemple dans le cas où on
souhaite inclure un fichier dans un script mais
que le fichier en question ne peut pas être inclus
pour le moment pour diverses raisons.
Dans ces cas-là, le PHP va signaler les problèmes
rencontrés lors de l’exécution du code en
renvoyant ce qu’on appelle une erreur.

[Link] Programmation Web II 41


GESTION DES ERREURS

A chaque fois que HP génère une erreur, il inclut


également un type qui prend la forme d’une
constante. Selon le problème rencontré, le
niveau ou « type » d’erreur renvoyé sera
différent et selon le type d’erreur le script pourra
continuer à s’exécuter normalement ou au
contraire sera stoppé brutalement.

[Link] Programmation Web II 42


GESTION DES ERREURS
PHP possède toute une structure permettant de
gérer les erreurs, qui peuvent être de différents
types :
 Erreur de syntaxe lors de la compilation du
programme
Erreur d’exécution lors de l’exécution du
programme

[Link] Programmation Web II 43


GESTION DES ERREURS

 Erreur de données : donnée innatendue,


incompatible avec les routines développées
pour son traitement (lettre dans un nombre
représentant une quantité, …)

[Link] Programmation Web II 44


GESTION DES ERREURS
Normalement, quand un script PHP rencontre
une erreur : un message s’affiche indiquant (en
anglais bien sur) le degré de gravité de l’erreur, la
cause de l'erreur, le nom du fichier de script la
ligne du script où l’erreur s’est produite.
selon la gravité de l’erreur, l'exécution du script
se termine à l’endroit de l’erreur, ou simplement
une ligne du script ne s’exécute pas, ou toutes
les lignes peuvent néanmoins s’exécuter

[Link] Programmation Web II 45


TYPES D’ERREURS
Notices: Erreurs non critiques, par défaut non
affichées. Toutes les instructions ont néanmoins pu
être exécutées
Warnings: Une instruction n'a pu être
correctement éxécutée (ex:fichier manquant...),
neanmoins le script peut continuer son exécution.
Fatal errors: Erreurs fatales : le script s'arrète :
erreur de syntaxe...

[Link] Programmation Web II 46


1. NOTICE Cette erreur est générée
par 2 éléments:
La variable n’est pas
déclarée
La variable est mal écrite
($nom,$Non)
Cette erreur n’empeche pas
le programme de continuer à
s’executer

[Link] Programmation Web II 47


[Link] Le fichier [Link]
n’existe pas et il y a
génération de cette erreur
Cette erreur n’empeche
pas le programme de
continuer à s’executer

[Link] Programmation Web II 48


3. FATAL ERRORS
Regardez bien ,juste à la fin de
l’instruction
echo “un cours facile” nous
avons oublié un point virgule
Cette erreur empêche le
programme de continuer à
s’executer

.
Très souvent cette erreur est causée par un élément
syntaxicale qui n’est pas fermé ,on peut dire : { [ “
‘( et bien d’autres

[Link] Programmation Web II 49


Fonction error_reporting()
• La fonction error_reporting nous permet de préciser
quelle erreur il faut afficher par exemple si les
erreurs qui n’empechent pas le programme de
s’exécuter si le logiciel est déjà réquisitionné par le
client , il faut pas le faire peur par des erreurs :
• La fonction error_reporting définit 7 niveaux
d’erreurs

[Link] Programmation Web II 50


Fonction error_reporting()

[Link] Programmation Web II 51


Exemple d’utilisation avec error_reporting()
Le (O) indique qu’aucune erreur ne s’affiche
pas

Nous avons affi


ché une
Variable sans la
créer
mais aucune er
reur
n’est generee e
t le
programme con
tinue à
s’executer

[Link] Programmation Web II 52


Exemple d’utilisation avec error_reporting()
Le (2) indique que seules les erreurs Warning
s’affichent alors que le code contient erreur de
Notice

[Link] Programmation Web II 53


Utilisation de la fonction set_error_handler()

Cette fonction est tres puissante ,vous allez


prendre le temps d’apprendre à l’utiliser

[Link] Programmation Web II 54


OPÉRATEURS

[Link] Programmation Web II 55


Concaténation de chaînes
• Permet d’assembler plusieurs chaînes
• Réalisé grâce à l’opérateur point : « . »
"Bonjour " . "Marcel"
 vaut "Bonjour
Marcel"

$nb = 6*2 ;
"Acheter " . $nb . " oeufs"
 vaut "Acheter 12
oeufs"
[Link] Programmation Web II 56
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)

[Link] Programmation Web II 57


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

[Link] Programmation Web II 58


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)

[Link] Programmation Web II 59


Comparaison large / stricte
$a = 12 ; $b = "12" ; $c = 13.0 ;
boolean
boolean true
true
var_dump($a == $b) ;
boolean
boolean false
false
var_dump($a == $c) ;
var_dump($c == $b) ; boolean
boolean false
false
var_dump($a != $b) ; boolean
boolean false
false
var_dump($a != $c) ; boolean
boolean true
true
var_dump($c != $b) ; boolean
boolean true
true
var_dump($a === $b) ; boolean false
boolean false
var_dump($a === $c) ;
boolean
boolean false
false
var_dump($c === $b) ;
var_dump($a !== $b) ;
boolean
boolean false
false
var_dump($a !== $c) ; boolean
boolean true
true
var_dump($c !== $b) ; boolean
boolean true
true
boolean
boolean true
true
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

[Link] Programmation Web II 61


Les opérateurs sur bits
$a & $b ET binaire

$a | $b OU binaire

$a ^ $b XOR binaire

~ $a Inversion bit à bit

$a << $b $a décalé à gauche de $b rangs

$a >> $b $a décalé à droite de $b rangs

[Link] Programmation Web II 62


STRUCTURES DE CONTRÔLE

[Link] Programmation Web II 63


Structure de contrôle Si…Alors…
Sinon…
if (condition)
{
/* Bloc d’instructions exécuté si la
condition est vraie */
Optionnel
Optionnel
}
else
{
/* Bloc d’instructions exécuté si la
condition est fausse */
}
[Link] Programmation Web II 64
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) ;
[Link] Programmation Web II 65
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 */
}

Équivalent à :

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

[Link] Programmation Web II 66


Structure de contrôle selon…
switch (val)
{
case v1:
instructions exécutées si val==v1
case v2:
case v3:
instructions exécutées si val==v2
ou si val==v3
ou si val==v1

default:
instructions dans tous les cas
}
• Fonctionne exactement comme une série de if/else avec
comparaison large
• val, v1, v2, … peut être de type integer, float, string,
NULL
[Link] Programmation Web II 67
L’instruction break
Permet de sortir d’une structure de contrôle
switch (val)
{
case v1:
instructions exécutées si val==v1
break ; /* Sortie du switch si val==v1 */
case v2:
case v3:
instructions exécutées si val==v2
ou si val==v3
ou si val==v1
break ; /* Sortie du switch si val==v2 ou val==v3*/

default:
instructions exécutées dans tous les cas
si val!=v1 et val!=v2 et val!=v3
}

Cas rendus exclusifs si break présent pour chaque case


[Link] Programmation Web II 68
TABLEAUX

[Link] Programmation Web II 69


Principes généraux
• Un tableau PHP est en réalité une carte
ordonnée
• Une carte associe des valeurs à des clés
• Un tableau PHP peut être vu comme :
– Une série de valeurs (peu importe leur type)
– Chaque valeur est étiquetée, repérée par une clé
(entier
Clé ou chaîne)
0 1 2 3
Valeur 12 15.2 "42" NULL
– Ils sont dits associatifs
Clé "début" 12 "a" "valeur"
Valeur false 3 16 "bonjour"
[Link] Programmation Web II 70
Tableaux « classiques » : indexés

• Création / initialisation:
$tab1=array(12, "fraise", 2.5) ;

$tab2[] = 12 ;
$tab2[] = "fraise" ;
$tab2[] = 2.5 ;

$tab3[0] = 12 ;
$tab3[1] = "fraise" ;
$tab3[2] = 2.5 ;

[Link] Programmation Web II 71


Tableaux associatifs : syntaxe
$tab5[ 'un'
un ] = 12 ;
$tab5['trois'
trois ] = "fraise"
fraise ;
$tab5["deux"
deux ] = 2.5 ;
$tab5[ 42 ] = "el5"
el5 ;

$tab6 = array( 'un'


un => 12,
12
'trois'
trois => "fraise",
fraise
"deux"
deux => 2.5,
2.5
42 => "el5"
el5 ) ;

[Link] Programmation Web II 72


Structure de contrôle « Pour
chaque… »
Des tableaux associatifs ne peuvent être parcourus grâce
aux indices des cases contenant les éléments…
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 */
}

[Link] Programmation Web II 73


Parcours de tableau : foreach
PHP … HTML
… <p>Val:12\n
$tab4[0] = 12 ; <p>Val:fraise\n
$tab4[1] = "fraise" ; <p>Val:2.5\n
<p>Val:el5\n
$tab4[2] = 2.5 ;

$tab4[5] = "el5" ;
foreach($tab4 as $v)
{ Navigateur
echo "<p>Val: $v\n";
}

[Link] Programmation Web II 74


Tableaux associatifs
• Tableaux dont l’accès aux éléments n’est plus
réalisé grâce à un index (0,1, …) mais grâce à
une clé de type entier ou chaîne.
• Exemples de clés:
$tab['un'] = 12 ;
$tab[205] = "bonjour"
bonjour ;
$tab["la valeur"] = 3.0 ;
• Création
$tab = array(cle1 => val1,
cle2 => val2,
… );
[Link] Programmation Web II 75
Structure de contrôle « Pour
chaque… »
foreach($tableau as $cle => $element)
{
/* Bloc d’instructions répété pour
chaque élément de $tableau */
/* Chaque élément de $tableau est
accessible grâce à $element */
/* La clé d’accès à chaque élément est
donnée par $cle */
}

[Link] Programmation Web II 76


Parcours de tableau
<?php
<?php
$html
$html == <<<HTML
<<<HTML
<html>
<html>
<head><title>foreach
<head><title>foreach clé</title>
clé</title>
</head>
</head>
<body>
<body>
HTML;
HTML;
$tab6
$tab6 == array('un'
array('un' =>
=> 12,
12,
'deux'
'deux' =>
=> "fraise",
"fraise",
"trois"
"trois" =>
=> 2.5,
2.5,
"quatre"
"quatre" =>
=> "el5")
"el5") ;;
foreach
foreach ($tab6
($tab6 as
as $cle
$cle =>
=> $val)
$val)
{{
$html
$html .=
.= "<p>tab[$cle]:
"<p>tab[$cle]: $val\n"
$val\n" ;;
}}
echo
echo $html
$html .. "</body>\n</html>"
"</body>\n</html>" ;;

[Link] Programmation Web II 77


Fonctions défnies par
l’utisateur

78
Pourquoi les fonctions ?
• Modularité
Diviser le problème à résoudre en petits Pbs et résoudre
chacun d’eux par un module (facile à composer), appelé
fonction pour la plupart des langages
• Réutilisabilité
Possibilité de réutiliser certaines fonctions dans un autre
problème
• MAJ facile
La mise à jour d’une fonction n’affecte pas les autres
fonctions

Ecole ESIAM 79
Fonctions
• Déclaration
function nom_fonction($param1,$param2,…)
{
Corps de la fonction
}

$Param1, $param2, … sont dits paramètres formels de la


fonction
• Appel de la fonction
nom_fonction($eff1,$eff2,…)
$eff1,$eff2,… sont dits paramètres effectifs

80
Fonctions
• Fonction qui retourne une valeur
– L’instruction return dans le corps de la fonction permet de
retourner une valeur et de quitter la fonction.
function nom_fonction($param1,$param2,…)
{
Corps de la fonction
return($resultat);
}

$Param1, $param2, … sont dits paramètres formels de la fonction


• Appel de la fonction
$r = nom_fonction($eff1,$eff2,…);

Ecole ESIAM 81
Fonctions
• Exemple : [Link]
• fonction factorielle
<?php
function fact($a)
{
$f=1;
for($i=1;$i<=$a;$i++)
$f=$f*$i;
return($f);
}

$b=5;
$c=fact($b);
print($c);
?>
82
Fonctions
• Utilisation des fonctions
– Une fonction définie dans un script peut être
utilisée dans les autres scripts du même fichier.
– Exemple : [Link]

83
Fonctions
• Modes de passage des paramètres

– Par valeur

– Par référence

– Par référence ponctuelle

84
Fonctions
• Passage Par valeur
– Mode par défaut
– Les paramètres effectifs gardent leur valeurs
après l’appel de la fonction, même si cette
dernière les modifie à l’intérieur de son corps.

=> la fonction travaille sur une copie des


paramètres

85
Fonctions
Exemple : fonction_pass_val.php
<?php
function doubler($a)
{
$a=$a*2;
print("valeur du paramètre dans la fonction:$a<br>");
}

$b=5;
print("valeur du paramètre avant l'appel:$b<br>");
doubler($b);
print("valeur du paramètre après l'appel:$b<br>");
?>

86
Fonctions
• Passage par référence
– Le changement d’un paramètre effectif sera
perceptible de l’extérieur.
=> la fonction travaille sur le paramètre et non sur sa copie

– Notation : précéder le paramètre formel par &


function nom_fonction(&$param1,&$param2,…)

87
Fonctions
• Exemple :fonction_passage_ref.php
<?php
function doubler(&$a)
{
$a=$a*2;
print("valeur du paramètre dans la fonction:$a<br>");
}

$b=5;
print("valeur du paramètre avant l'appel:$b<br>");
doubler($b);
print("valeur du paramètre après l'appel:$b<br>");
?>

88
Fonctions

• Passage par référence ponctuel


– Lors de la définition de la fonction les
paramètres sont passés par valeur
– Lors de l’appel de la fonction les paramètres
effectifs sont précédés par &
– Attention : Risque d’incohérence

89
Fonctions
• Exemple : fonction_passage_ponc.php
• fonction factorielle
<?php
function doubler($a)
{
$a=$a*2;
print("valeur du paramètre dans la fonction:$a<br>");
}

$b=5;
print("valeur du paramètre avant l'appel:$b<br>");
doubler(&$b);
print("valeur du paramètre après l'appel:$b<br>");
?>
90
Fonctions

• Paramètres par défaut


– Attribuer une valeur par défaut à un (des) paramètre(s)
omis lors de l’appel d’une fonction
– Notation : affecter la valeur par défaut au paramètre
formel
• function nom_fonction($param1,$param2 = val )
• Le 2ème paramètre a une valeur par défaut
• Appel de la fonction
nom_fonction($eff);
nom_fonction($eff1,$eff2);
91
Fonctions
• Paramètres par défaut
– Exemple : fonction_par_def1.php
<?php
function conversion($init=0,$fin=180,$pas=20)
{
for($i=$init;$i<=$fin;$i+=$pas)
{
$grade = $i*200/180;
print("$i : $grade <br>");
}
}
conversion();
conversion(10);
conversion(20,90,10);
?>

92
Fonctions
• Paramètres par défaut : Attention !
– Seuls les derniers paramètres peuvent avoir des
valeurs par défaut

– Exemple : fonc_par_def2.php
• function f_ambigue($p1=0, $p2, $p3=5)
Erreur lors de l’interprétation

• Ambiguité lors de l’appel de la fonction


Comment interpréter f_ambigue(1,5) ?
f_ambigue(0,1,5) ou f_ambigue(1,5,5)

93
Fonctions
• Nombre de paramètres indéfini

– Dans ce cas les paramètres sont extraits par deux


fonctions :

• func_num_arg() : retourne le nombre de paramètres passés à


la fonction

• func_get_arg ($i) : retourne le paramètre d’indice $i dans la


liste des paramètres
Le premier paramètre a l’indice 0

94
Fonctions
• Nombre de paramètres indéfini
– Exemple : fonction_par_indef.php
– afficher les paramètres reçus par une fonction

<?php
function sansparam()
{
$nb_par = func_num_args();
for($i=0;$i<$nb_par;$i++)
{
$param = func_get_arg($i);
print("param $i : $param <br>");
}
}
sansparam("bonjour","mon","ami");
?>

95
Fonctions
• Fonctions récursives
– Dans le corps d’une fonction on peut trouver un appel à elle-
même
– Exemple : fonction_recursive.php
– factorielle
<?php
function fact($a)
{
if ($a==1) return(1);
else return($a*fact($a-1));
}

$b=5;
$c=fact($b);
print("$b ! = $c");
?>

96
Fonctions
• Variables globales
– Les paramètres locales à une fonction ne sont pas visibles de
l’extérieur
– Une variable globale peut être accédée ou modifiée à partir de
n’importe quelle fonction du même fichier
– Pour utiliser une variable globale (déclarée à l’extérieur de la
fonction) nous devons la déclarer par la ligne suivante :
global $nom_var;
– Exemple : fonction_var_global.php

97
DONNÉES DE FORMULAIRES

[Link] Programmation Web II 98


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 (ou $_REQUEST).
$_REQUEST
• La valeur peut être trouvée grâce à une clé qui
porte le même nom que le champs du formulaire
de la page HTML de saisie.
[Link] Programmation Web II 99
Traitement des données de
formulaires Client
Client
Réseau
Réseau Navigateur
nomPers=robert•HTML
nomPers=robert•JavaScript
•CSS

<<html
html>>
<<head
head>>
Serveur
Serveur nomPers
<<title
title>>bonjour
bonjour</
</title
title>> nomPers
</
</head
head>>
Serveur
<<bodyWeb <?php
<?php
body>>
Bonjour $$html
html == <<<
<<<HTML
HTML
Bonjour robert
robert !!
</ < html
<html>>
</body
body>>
</ html <<head
head><
><title
title>>bonjour
bonjour</</title
title></></head
head>>
html>> PHP
Module
</
<<body
body>>
HTML
HTML;;
$$html
html .=.= ""Bonjour
Bonjour "".$ robert
robert
.$_GET
_GET[[''nomPers
nomPers'']].."" !!\n
\n"" ;;
echo
echo $$html
html .. ""</
</body
body>>\n
\n</
</html
html>>"" ;;
[Link] Programmation Web II 100
Exemple – Formulaire HTML
<!DOCTYPE
<!DOCTYPE html
html PUBLIC
PUBLIC "-//W3C//DTD
"-//W3C//DTD HTML
HTML 4.01
4.01 Transitional//EN">
Transitional//EN">
<<html
html>>
<<head
head>>
<<title
title>>formulaire
formulaire</ </title
title>>
</
</head
head>>
<<body
body>>
<<form
form action
action==""[Link]
[Link]"" method
method==""get
get"">>
Nom:
Nom: <<input
input type
type==""text
text"" name
name==""nomPers
nomPers"">>
<<input
input type
type==""submit
submit"" value
value==""Envoyer
Envoyer"">>
</
</form
form>>
</
</body
body>>
</
</html
html>>

[Link] Programmation Web II 101


Exemple – Traitement en PHP
<?php
<?php
$$html
html == <<<
<<<HTML
HTML
<!DOCTYPE
<!DOCTYPE html PUBLIC
html PUBLIC "-//W3C//DTD
"-//W3C//DTD HTML
HTML 4.01
4.01 Transitional//EN">
Transitional//EN">
<<html
html>>
<<head
head>> $$_GET
_GET[[''nomPers
nomPers'']]
<<title
title>>bonjour
bonjour</
</title
title>>
</
</head
head>>
est-il
est-il défini
défini ??
<<body
body>> HTML
HTML;;
if
if ((isset
isset(($$_GET
_GET[[''nomPers
nomPers'']])))) $$_GET [[''nomPers '']]
{{ _GET nomPers
if (! empty ($ _GET ['nomPers ']))
est-il
est-il vide
vide ??
if (!empty($_GET['nomPers']))
{{
$$html
html .=.= ""Vous
Vous avez
avez saisi
saisi ''""
.$
.$_GET
_GET[[''nomPers
nomPers'']]..""''\n
\n"" ;;
}}
else
else
$$html
html .=.= ""Aucune
Aucune valeur
valeur saisie
saisie\n \n";";
}}
else
else
$$html
html .=.= ""Utilisation
Utilisation incorrecte
incorrecte\n \n"" ;;
echo
echo $$html
html .. ""</
</body
body>>\n
\n</
</html
html>>"" ;;
[Link] Programmation Web II 102
Formulaires contenant des champs
« SELECT »

[Link] Programmation Web II 103


Formulaires contenant des champs
<!DOCTYPE
« SELECT unique»
<!DOCTYPE html
html PUBLIC
PUBLIC "-//W3C//DTD
"-//W3C//DTD HTML
HTML 4.01
4.01 Transitional//EN">
Transitional//EN">
<html>
<html>
<head>
<head>
<title>Formulaire
<title>Formulaire dede saisie
saisie des
des fruits</title>
fruits</title>
</head>
</head>
<body>
<body>
<form
<form action="[Link]"
action="[Link]" method="get">
method="get">
Choisissez
Choisissez des
des fruits:&nbsp;
fruits:&nbsp;
<select
<select name="sel">
name="sel">
<option>Fraise
<option>Fraise
<option>Pomme
<option>Pomme
Envoyer
Envoyer <option>Poire
<option>Poire
<option>Banane
<option>Banane
<option>Cerise
<option>Cerise
</select>
</select>
<input
<input type="submit"
type="submit" value="envoyer">
value="envoyer">
</form>
</form>
</body>
</body> [Link]?
[Link]?sel=Pomme
sel=Pomme
</html>
</html>
[Link] Programmation Web II 104
Formulaires contenant des champs
« SELECT multiple»
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="[Link]" method="get">
Choisissez des fruits:&nbsp;
<select name="sel" multiple>
<option>Fraise
<option>Pomme
<option>Poire
Envoyer
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> [Link]?
[Link]?sel=Pomme&sel=Poire
sel=Pomme&sel=Poire ???
???
</html>
[Link] Programmation Web II 105
Formulaires contenant des champs
<html>
« SELECT multiple»
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="[Link]" method="get">
Choisissez des fruits:&nbsp;
<select name="sel[]" multiple>
<option>Fraise
<option>Pomme
<option>Poire
<option>Banane
Envoyer
Envoyer <option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> [Link]?
[Link]?sel%5B%5D=Pomme&sel%5B%5D=Poire
sel%5B%5D=Pomme&sel%5B%5D=Poire
[Link]?
[Link]?sel[]=Pomme&sel[]=Poire
sel[]=Pomme&sel[]=Poire
[Link] Programmation Web II 106
Traitement des données des champs
« SELECT »
<?php
<?php
$html
$html == <<<HTML
<<<HTML
<!DOCTYPE
<!DOCTYPE html
html PUBLIC
PUBLIC "-//W3C//DTD
"-//W3C//DTD HTML
HTML 4.01
4.01 Transitional//EN">
Transitional//EN">
<html>
<html>
<head>
<head>
<title>Liste
<title>Liste dede fruits</title>
fruits</title>
</head> $$_GET
_GET [[‘‘sel
sel '']]
</head>
<body>
<body> est
estun
untableau
tableau
HTML;
HTML;
if
if (isset($_GET['sel'])
(isset($_GET['sel']) && && !empty($_GET['sel']))
!empty($_GET['sel']))
{/*
{/* La variable $_GET['sel'] est
La variable $_GET['sel'] est définie
définie
et
et elle
elle n'est
n'est pas
pas vide
vide */
*/
foreach($_GET['sel']
foreach($_GET['sel'] as as $fruit)
$fruit)
$html
$html .=
.= "<p>Vous
"<p>Vous avez
avez choisi
choisi $fruit\n"
$fruit\n" ;;
}}
else
else
$html
$html .=
.= "<p>Vous
"<p>Vous n'avez
n'avez pas
pas choisi
choisi de
de fruit\n"
fruit\n" ;;
echo
echo $html
$html .. "</body>\n</html>"
"</body>\n</html>" ;;

[Link] Programmation Web II 107


Résultat

[Link] Programmation Web II 108


Formulaires contenant des champs
« CHECKBOX »

[Link] Programmation Web II 109


Formulaires contenant des champs
<!DOCTYPE
« CHECKBOX »
<!DOCTYPE html
html PUBLIC
PUBLIC "-//W3C//DTD
"-//W3C//DTD HTML
HTML 4.01
4.01 Transitional//EN">
Transitional//EN">
<html>
<html>
<head>
<head>
<title>Formulaire
<title>Formulaire de de saisie
saisie des
des fruits</title>
fruits</title>
</head>
</head>
<body>
<body>
<form name=""formu
<form name= formu"" action=
action=""[Link]
[Link]"" method=
method=""get
get"">>
<p>Choisissez
<p>Choisissez desdes fruits&nbsp;:
fruits&nbsp;:
<p><input type=""checkbox
<p><input type= checkbox"" name=
name=""sel[]
sel[]"" value=
value=""Fraise
Fraise"">Fraise
>Fraise
<p><input type=""checkbox
<p><input type= checkbox"" name=
name=""sel[]
sel[]"" value=
value=""Pomme
Pomme"" >Pomme
>Pomme
<p><input type= "checkbox " name= " sel[] " value= " Poire
<p><input type="checkbox" name="sel[]" value="Poire" >Poire " >Poire
<p><input type=""checkbox
<p><input type= checkbox"" name=
name=""sel[]
sel[]"" value=
value=""Banane
Banane"">Banane
>Banane
<p><input type=""checkbox
<p><input type= checkbox"" name=
name=""sel[]
sel[]"" value=
value=""Cerise
Cerise"">Cerise
>Cerise
<p><input type=""submit
<p><input type= submit"" value=
value=""Envoyer
Envoyer"">>
</form>
</form>
</body>
</body>
</html>
</html>

[Link] Programmation Web II 110


Résultat

[Link] Programmation Web II 111


Les sessions(1)
 Principe
 Les sessions permettent de conserver des informations relatives à un
utilisateur lors de son parcours sur un site web
 Des données spécifiques à un visiteur pourront être transmises de
page en page afin d'adapter personnellement les réponses d'une
application PHP
 Chaque visiteur en se connectant à un site reçoit un numéro
d'identification dénommé identifiant de session (SID)
 La fonction session_start() se charge de générer automatiquement cet
identifiant unique de session et de créer un répertoire. Elle doit être
placée au début de chaque page afin de démarrer ou de continuer
une session.
<?php
session_start();
$Session_ID = session_id();
// $Session_ID = 7edf48ca359ee24dbc5b3f6ed2557e90 ?>

[Link] Programmation Web II 112


Les sessions(2)
 Principe
 Un répertoire est créé sur le serveur à l'emplacement désigné
par le fichier de configuration [Link], afin de recueillir les
données de la nouvelle session.
[Session]
session.save_path= C:\PHP\sessiondata
; Rép session = \sess_7edf48ca359ee24dbc5b3f6ed2557e90

 Le fichier [Link] peut également préciser un nom de session


par l'option [Link] ou sa durée de vie par
session.gc_maxlifetime
 La session en cours peut être détruite par la fonction
session_destroy(). Cette commande supprime toutes les
informations relatives à l'utilisateur.
session_destroy();

[Link] Programmation Web II 113


Les sessions(3)
 Le traitement des variables de session
 Les variables de session sont chargées dans une session par
l'intermédiaire de la fonction session_register()

<?php
session_start();
session_register("nom_variable");
...
session_register("nom_variableN");
?>

 Une fois la variable enregistrée, elle est


accessible à travers le tableau associatif
[Link] $_SESSION["nom_variable"]
Programmation Web II 114
Les sessions(4)
 Le traitement des variables de session
Le transport des informations entre les documents est réalisé par l'entremise
 soit d'un cookie
 soit d'une requête HTTP

 Cette dernière solution est la plus fiable puisque les cookies peuvent ne pas être
acceptés par le client ou celui-ci pourrait les détruire en cours de session.
 Il suffit de concaténer l'identifiant de session à l'adresse URL de la page cible
pour que cette dernière puisse accéder aux informations conservées par la
session.
echo '<a href=” [Link] ’. session_name(). ’=‘ . session_id().‘>
lien</a>‘

[Link] Programmation Web II 115


Les sessions(5)
 Le traitement des variables de session

 Par défaut, PHP tente de passer par les cookies pour


sauvegarder l'identifiant de session dans le cas où le client les
accepterait. Il est possible d’éviter cela, il suffit de désactiver
l'option de configuration session.use_cookies dans le fichier
[Link].
[Session]
session.use_cookies 0; //désactive la gestion des sessions par cookie

[Link] Programmation Web II 116


Les sessions(6)
Exemple
<!-- Fichier : [Link] -->
<html><body>
<form method="post" action="[Link]">
<table border="0">
<tr>
<td><u>Nom :</u></td>
<td><input type="text" name="Nom" size="20" value="RIVES"></td></tr>
<tr>
<td><u>Prénom :</u></td>
<td><input type="text" name="Prenom" size="20" value="Jean-Pierre"></td></tr>
<tr>
<td><u>eMail :</u></td>
<td><input type="text" name="cEmail" size="20" value=”du@[Link]"></td></tr>
<tr><td> </td>
<td><input type="submit" name="soumettre" value="Envoyer"></td></tr></table>
</form>
</body
</html>

[Link] Programmation Web II 117


Les sessions(7)
<?
session_start();
$nom = $_POST["Nom"];
$prenom = $_POST["Prenom"];
$email = $_POST["cEmail"];
session_register("nom");
session_register("prenom");
session_register("email");
$_SESSION["nom"]=$nom;
$_SESSION["prenom"]=$prenom;
$_SESSION["email"]=$email;
header("Location: [Link]?" . session_name() . "=" . session_id());
?>

[Link] Programmation Web II 118


Les sessions(8)
<?
session_start();
?>
<html><body><?
echo("<u>Identifiant de session :</u> <b>"
. session_id() . "</b><br>");
echo("<u>Nom de la session :</u> <b>"
. session_name() . "</b><br><br>");
echo("<u>Nom :</u> <b>". $_SESSION["nom"] . "</b><br>");
echo("<u>Prénom :</u> <b>" . $_SESSION["prenom"] . "</b><br>");
echo("<u>eMail :</u> <b>" . $_SESSION["email"] . "</b><br>");
//session_destroy();
?>
</body>
</html>
[Link] Programmation Web II 119
Les sessions (9)
 Les fonctions de sessions
session_start() -- Initialise les données de session
session_id() -- Affecte et/ou retourne l'identifiant de session courante
session_name() -- Affecte et/ou retourne le nom de la session courante
session_register() -- Enregistre une variable dans la session courante
session_destroy() -- Détruit toutes les données enregistrées d'une session
session_is_registered() -- Indique si une variable a été enregistrée dans la session ou pas
session_unregister() -- Supprime une variable dans la session courante
session_unset() -- Détruit toutes les variables de session
session_cache_expire() -- Retourne la date d'expiration du cache de la session
session_save_path() -- Affecte et/ou retourne le chemin de sauvegarde de la session courante
session_decode() -- Décode les données de session à partir d'une chaîne
session_encode() -- Encode les données de session dans une chaîne

[Link] Programmation Web II 120


Les sessions (10)
 Quelles sont les erreurs possibles ?
 Répertoire de session inaccessible
Warning: open(/tmp\sess_3c80883ca4e755aa72803b05bce40c12, O_RDWR)
failed: m (2) in c:\phpdev\www\bp\[Link] on line 2
Le répertoire de sauvegarde est défini dans le [Link] : session.save_path = /tmp
Il faut donc
Créer un répertoire
Lui donner les droits d'écriture pour tous
En spécifier le chemin dans le [Link]

 PHP n'est pas autorisé à utiliser les sessions


Il faut s'assurer que le PHP est bien autorisé a créer des sessions. C'est juste un paramètre
à activer. Faire un phpinfo() pour voir ces paramètres. La commande phpinfo() se contente
d'afficher dans le navigateur le contenu du fichier de configuration [Link] .
[Link] Programmation Web II 121
Les sessions (11)
 Quelles sont les erreurs possibles ?
 Avoir déjà écrit dans la page
Warning: Cannot send session cookie - headers already sent by (output started at
/home/SiteWeb/SiteAnalyse/[Link]) in /home/SiteWeb/SiteAnalyse/[Link] on
line 6
Cette erreur survient lorsqu'on tente d'ouvrir une session après avoir déjà écrit dans le
document, ce qui interdit.
Ce qu'il ne faut pas faire :
<html>
<body>
<?php session_start();
...
ceci non plus :
<?php echo "<html>";
...
session_start();

[Link] Programmation Web II 122


Références
$a = 12 ; $$aa 84
12
12
84
$b = $a ;
$c = &$a ; $$bb ""coucou
12coucou""
$b = "coucou" ; $$cc ""hello
hello""
$c = 84 ;
echo "\$a : $a\n" ;
$a
$a :: 84
echo 84
"\$b : $b\n" ;
$b
$b :: coucou
echo coucou
"\$c : $c\n" ;
unset($c)
$c
$c :: 84
84 ;
$c = "hello" ;

[Link] Programmation Web II 123


Gestion des erreurs
• 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

[Link] Programmation Web II 124


Gestion des erreurs – (Mauvais) Exemple
<?php PHP <html> HTML
$html = <<<HTML <head>
<html> <title>die-exit</title>
<head> </head>
<title>die-exit</title> <body>
</head> problème val
<body>
HTML;
if (!isset($val)) { HTML non
HTML non
die($html."problème val") ;
valide…
valide …
/* Au delà de ce point, Navigateur
fin du script */
} problème val
$html .= <<<HTML
Choix: $val
</body>
</html>

[Link] Programmation Web II 125


Gestion de l'affichage des erreurs
• int error_reporting ( Constante
[int
Ancien
Ancien niveau
niveau d'erreur
d'erreur
level] ) E_ERROR
E_WARNING
E_PARSE

e
Débogag
Sur E_NOTICE
Sur un
un serveur
serveur en
en production,
production,
E_CORE_ERROR
toute
toute erreur
erreur affichée
affichée donne
donne E_CORE_WARNING
des
des indices
indices sur
sur les
les scripts
scripts et
et E_COMPILE_ERROR
rend
rend lele site
site vulnérable
vulnérable E_COMPILE_WARNING
E_USER_ERROR
E_USER_WARNING
[Link]
[Link] E_USER_NOTICE
E_ALL
display_errors
display_errors boolean
boolean E_STRICT
[Link] Programmation Web II 126
Opérateur de contrôle d'erreur en
phase de développement
Fichier
Fichier absent
absent
$v = file("[Link]")
or die("Problème
Warning
Warning:: file([Link]):
de
file([Link]): failed
failed to
to open
open
lecture")
stream:
stream: No ; file
No such
such file or
or directory
directory in
in
[Link]
[Link] on
on line
line 68
68
Problème
Problème de
de lecture
lecture

$v = @file("[Link]")
or die("Problème de lecture") ;
Problème
Problème de
de lecture
lecture

[Link] Programmation Web II 127


[Link] Programmation Web II 128
ALIMENTATION D’UNE BASEE DE DONNEE

VIA LES

INTERFACES

[Link] Programmation Web II 129


• En PHP, on peut difficilement se passer d'une
base de données. Cet outil incontournable
sert à enregistrer des données de façon
efficace et organisée.
• Tout ce que vous voulez enregistrer sur votre
site va se retrouver stocké dans une base de
données : liste des membres, messages des
forums, news, etc.
• Objectifs : Familiarisé l’étudiant à Insérer,
afficher, modifier, supprimer des données en
PHP
[Link] Programmation Web II 130
• Il y a deux manières de créer une base de
données en php:
1) On peut utiliser les interfaces graphiques dont les
scripts de création sont prédéfinis avant dans
l’application phpMyAdmin et c’est la manière dont
nous allons adopter pour être rapide.
2) On peut écrire des scripts ou commandes de
création dans la fenêtre de requette SQl

[Link] Programmation Web II 131


• Pour créer la base de données, nous
utiliserons le SGBD MYSQL.
• On peut installer MYSQL individuellement ou
on peut utiliser l’outil Wampserver ou Easyphp
.
• Dans ces outils ,MYSQL est intégré
• La base de données sera crée dans
phpmyadmin qui est intégré dans Easyphp et
Wampserver

[Link] Programmation Web II 132


Introduction à PHPMYADMIN
• MySQL dèrive directement de SQL (Structured Query
• Language)
• L’outil phpMyAdmin est développé en PHP et offre une interface
pour l’administration des base de données
• cet outil permet de :
• créer de nouvelles bases
• créer/modifier/supprimer des tables
• afficher/ajouter/modifier/supprimer des tuples dans des tables
• effectuer des sauvegardes de la structure et/ou des données
• effectuer des requêtes
• gérer les privilèges des utilisateurs

[Link] Programmation Web II 133


[Link] Programmation Web II 134
[Link] Programmation Web II 135
[Link] Programmation Web II 136
[Link] Programmation Web II 137
[Link] Programmation Web II 138
[Link] Programmation Web II 139
[Link] Programmation Web II 140
[Link] Programmation Web II 141
[Link] Programmation Web II 142
[Link] Programmation Web II 143
[Link] Programmation Web II 144
[Link] Programmation Web II 145
[Link] Programmation Web II 146
[Link] Programmation Web II 147
[Link] Programmation Web II 148
Gestion des clés étrangères avec
phpmyadmin
Nous allons vous montrer comment définir
des clés étrangères en utilisant l'interface
graphique de phpmyadmin.
Nous allons prendre un exemple d’une base de
données de gestion d’une bibliothèque qui
contient trois tables :
Livre(codeBarre,titre,auteur,genre,résumé),
Client(numClient,nom,prénom,adresse,téléph
one)
Emprunter(numLivre,numClient,date)
[Link] Programmation Web II 149
Gestion des clés étrangères avec
phpmyadmin(2)
Pour commencer, vous devez vérifier que toutes
les tables ont été stockées avec le moteur de
stockage InnoDB. Pour le vérifier, cliquez sur le
nom de votre base de données. Comme le
montre la figure ci-dessous, vous devez alors
visualiser un tableau récapitulant le nom des
tables enregistrées dans votre base de
données, ainsi que d'autres renseignements
comme le nombre d'enregistrements, le type,
l'interclassement ... Le type correspond au
moteur de stockage utilisé pour stocker la table
dans la base de données.
[Link] Programmation Web II 150
Gestion des clés étrangères avec
phpmyadmin(3)

[Link] Programmation Web II 151


Gestion des clés étrangères avec
phpmyadmin(4)
• Si le moteur de stockage n’est pas INNODB
comme la table test montrée dans la figure ci-
dessous ,vous changez la table concernée

[Link] Programmation Web II 152


Gestion des clés étrangères avec
phpmyadmin(5)
Vous devez alors cliquer sur la table que vous souhaitez
modifier (symbolisé par le 1 sur la figure ci-dessous)
puis cliquer sur l'onglet opérations (symbolisé par le 2
sur la figure ci-dessous).

[Link] Programmation Web II 153


Gestion des clés étrangères avec
phpmyadmin(6)
L'option permettant de modifier le type de stockage est
alors disponible comme le montre la figure suivante. Il
vous suffit de sélectionner InnoDB parmi les choix
proposés.

[Link] Programmation Web II 154


Gestion des clés étrangères avec
phpmyadmin(7)
Reprenons notre exemple de bibliothèque. Logiquement un livre
ne peut être emprunté que s'il existe dans la bibliothèque. De la
même façon, on ne peut insérer un nouvel emprunt dans la table
Emprunter que si la valeur donnée à l'attribut numLivre
référence un livre dans la table Livre. C'est pourquoi l'attribut
numLivre est une clé étrangère qui référence la clé primaire
codeBarre de la table Livre. Pour spécifier cette contrainte de
référence en utilisant phpmyadmin, commencez par cliquer sur
la table Emprunter (1) (ou sur la table où un attribut doit en
référencer un autre), puis cliquez sur "Gestion des relations" (2).
La figure suivante vous indique où cliquer :

[Link] Programmation Web II 155


Gestion des clés étrangères avec
phpmyadmin(8)

[Link] Programmation Web II 156


Gestion des clés étrangères avec
phpmyadmin(9)
• Il est alors possible d'ajouter des références
pour l'attribut numLivre (1) et de spécifier
comment cette contrainte s'applique sur la
suppression d'un enregistrement ou sur la
mise à jour d'un enregistrement(2).

[Link] Programmation Web II 157


Gestion des clés étrangères avec
phpmyadmin(10)

[Link] Programmation Web II 158


Gestion des clés étrangères avec
phpmyadmin(11)
Phpmyadmin vous propose d'ailleurs les
attributs pouvant être référencés (1). Sur notre
exemple, nous avons tous les attributs de
chaque table qui ont été déclaré comme
appartenant à la clé de la table et dont le type
est le même que celui de numLivre(c'est-à-dire
int). Il nous suffit donc de choisir l'attribut
codeBarre de la table Livre.

[Link] Programmation Web II 159


Gestion des clés étrangères avec
phpmyadmin(12)

[Link] Programmation Web II 160


Gestion des clés étrangères avec
phpmyadmin(13)
Comme vous pouvez le voir il est possible de référencer un
attribut de la même table : numLivre pourrait référencer
numClient. Dans notre exemple de bibliothèque cela n'a aucun
sens. Mais imaginez une table employé qui stocke l'ensemble
des employés d'une société et dont les attributs sont
(numEmployé, nom, prénom, chef). Le chef d'un employé étant
lui même un employé, il est alors pratique de pouvoir faire un
lien entre l'attribut chef et l'attribut numEmployé afin de
spécifier que le chef d'un employé est obligatoirement un
employé. Ceci permettra des mises à jour cohérentes.

[Link] Programmation Web II 161


Activez la fenetre d’authentification
de PHPMYADMIN(1)
Normalement, lors de l’ouverture de
phpmyadmin , il devrait s’oouvrir sur
une fenetre d’authentification pour la
securité des bases de données qu’il
héberge mais c’est pas toujours le cas .

[Link] Programmation Web II 162


Activez la fenetre d’authentification
de PHPMYADMIN(2)
Voici l’exemple de la fenetre d’ouverture si elle
est activée

[Link] Programmation Web II 163


Activez la fenetre d’authentification
de PHPMYADMIN(3)
Si elle n’est pas activée, voici comment l’activer
sous wampserver
Vous allez éditer le fichier [Link]
Se trouvant dans le répertoire ci-dessous

 commenter la ligne ci- dessous

Ajouter la ligne ci-dessous

[Link] Programmation Web II 164


Interfaçage avec une base de
données(1)
 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
 Php fournit un grand choix de fonctions permettant de manipuler les
bases de données.
 Quatre fonctions sont essentielles:
– La fonction de connexion au serveur
– La fonction de choix de la base de données
– La fonction de requête
– La fonction de déconnexion
[Link] Programmation Web II 165
Interfaçage avec une base de
données(2)
 Principe
 Avec le SGBD MySQL, les fonctions de
manipulation sont :
 mysql_connect

 mysql_select_db

 mysql_query

 mysql_close

[Link] Programmation Web II 166


Se connecter à la base de données en PHP
• Pour pouvoir travailler avec la base de
données en PHP, il faut d'abord s'y connecter.
• Nous allons apprendre à lire des données dans
une BDD (base de données). Or, je vous
rappelle que PHP doit faire l'intermédiaire
entre vous et MySQL.

[Link] Programmation Web II 167


Comment se connecte-t-on à la base de données en PHP ?
• PHP propose plusieurs moyens de se connecter à une base de
données MySQL.
• L'extension mysql_ : ce sont des fonctions qui permettent
d'accéder à une base de données MySQL et donc de
communiquer avec MySQL. Leur nom commence toujours par
mysql_. Toutefois, ces fonctions sont vieilles et on recommande
de ne plus les utiliser aujourd'hui.
• L'extension mysqli_ : ce sont des fonctions améliorées d'accès à
MySQL. Elles proposent plus de fonctionnalités et sont plus à
jour.
• L'extension PDO : c'est un outil complet qui permet d'accéder à
n'importe quel type de base de données. On peut donc l'utiliser
pour se connecter aussi bien à MySQL que PostgreSQL ou
Oracle.
[Link] Programmation Web II 168
Quel moyen choisir parmi tous ceux-là ?
• PDO car c'est cette méthode d'accès aux bases de données la
plus utilisée. D'autre part, le gros avantage de PDO est que
vous pouvez l'utiliser de la même manière pour vous
connecter à n'importe quel autre type de base de données
(PostgreSQL, Oracle…)

[Link] Programmation Web II 169


Se connecter à MySQL avec PDO(1)
• Nous pouvons nous connecter à MySQL. Nous allons avoir
besoin de quatre renseignements :
• Le nom de l'hôte : c'est l'adresse de l'ordinateur où MySQL
est installé (comme une adresse IP). Le plus souvent, MySQL
est installé sur le même ordinateur que PHP : dans ce cas,
mettez la valeur localhost (cela signifie « sur le même
ordinateur »). Néanmoins, il est possible que votre hébergeur
web vous indique une autre valeur à renseigner (qui
ressemblerait à ceci : [Link]). Dans ce cas, il
faudra modifier cette valeur lorsque vous enverrez votre site
sur le Web ;
• La base : c'est le nom de la base de données à laquelle vous
voulez vous connecter. Dans notre cas, la base s'appelle test.
Nous l'avons créée avec phpMyAdmin dans le chapitre
précédent ;
[Link] Programmation Web II 170
Se connecter à MySQL avec PDO (2)
• Le login : il permet de vous identifier. Renseignez-vous auprès
de votre hébergeur pour le connaître. Le plus souvent (chez
un hébergeur gratuit), c'est le même login que vous utilisez
pour le FTP ;
• Le mot de passe : il y a des chances pour que le mot de passe
soit le même que celui que vous utilisez pour accéder au FTP.
Renseignez-vous auprès de votre hébergeur. ;
• $bdd = new PDO('mysql:host=localhost;dbname=NomBase;charset=utf8', 'root', '');

[Link] Programmation Web II 171


Insertion des données
• Prenons un exemple suivant
• Notre base de donnée est nommée formation et elle est composée par
une seule table nommée messagef avec 3 colonnes (idmessage,contenu
et DatePublication) dont voici sa structure

[Link] Programmation Web II 172


Insertion des données (2)

• Connexion à la base de
données
• $bdd = new
PDO('mysql:host=localhost;dbna
me=formation;charset=utf8',
'root', '');

[Link] Programmation Web II 173


Insertion des données(3)
• Formulaire d’insertion

[Link] Programmation Web II 174


Insertion des données(4)
• Formulaire d’insertion

[Link] Programmation Web II 175


Voici le formulaire généré par ce code

Notez bien la méthode utilisée par notre


formulaire, ici c'est une méthode POST ce qui
permet de ne pas afficher les variables dans URL,
comme le ferait la méthode GET. IL faut toujours
utiliser la méthode POST cela évite de laisser
certains trous de sécurité. Pour bien voir la
différence entre les deux méthodes, changez POST
en GET dans ce formulaire, et regardez bien votre
URL
Sur la même page, Je passe sur la méthode pour
récupérer les données provenant d'un formulaire.

[Link] Programmation Web II 176


Insertion des données (5)
 Première Methode

if(isset($_POST['boutonValider']))
{
$RecupContenu=$_POST[‘Contenu'];
$RecupDate=$_POST[‘Datee'];
$InsertionMessage = "INSERT INTO messagef
(contenu,DatePublication)
VALUES($RecupContenu, $RecupDate)";
$bdd >exec($InsertionMessage );
}
[Link] Programmation Web II 177
Insertion des données (6)
 Deuxieme Methode
Avec cette méthode on utilise des requetés préparés
requetés préparés: une requête e sécurisée et gagnée en performance
Elle est crée et exécuté en trois étapes:
 une étape de préparation: créer un schéma de requête, en ne précisant
pas les valeurs réelles dans notre requête mais en utilisant plutôt des
marqueurs nommés (sous le forme :nom) ou des marqueurs interrogatifs
(sous la forme ?).
 une étape de compilation: Une fois le schéma créé, la base de données va
analyser, compiler, faire des optimisations sur notre schéma de requête
SQL et va stocker le résultat sans l’exécuter.
 une dernière étape d’exécution: Finalement, nous allons lier des valeurs à
nos marqueurs et la base de données va exécuter la requête

[Link] Programmation Web II 178


Insertion des données (7)
• Les méthodes execute()
Pour exécuter une requête préparée, nous allons cette fois-ci devoir utiliser la
méthode execute() et non plus exec() comme on utilisait depuis le début
de cette partie
En utilisant des marqueurs dans nos requêtes préparées, nous allons avoir
deux grandes options pour exécuter la méthode execute() :
On va pouvoir lui passer un tableau de valeurs de paramètres (uniquement en
entrée) donc execute(array)
Avec execute(array) et des marqueurs nommés

[Link] Programmation Web II 179


Insertion des données (8)
 Première Cas
if(isset($_POST['boutonValider']))
{
$RecupContenu=$_POST[‘Contenu'];
$RecupDate=$_POST[‘Datee'];
$InsertionMessage = $bdd->prepare( "INSERT INTO messagef
(contenu,DatePublication)
VALUES(?, ?) ’’ );
$InsertionMessage ->execute(array($RecupContenu,
$RecupDate));
Echo “Insertion avec succes “;
}

[Link] Programmation Web II 180


Insertion des données (9)
 Deuxième Cas
if(isset($_POST['boutonValider']))
{
$RecupContenu=$_POST[‘Contenu'];
$RecupDate=$_POST[‘Datee'];
$InsertionMessage = $bdd->prepare( "INSERT INTO messagef
(contenu,DatePublication)
VALUES(:contenu,:DatePublication ) ’’ );
$InsertionMessage ->execute(array(‘contenu ‘=>$RecupContenu,
‘DatePublication’=>$RecupDate));
Echo “Insertion avec succes “;
}

[Link] Programmation Web II 181


Insertion d’une image (10)
Configurer le fichier "[Link]"
Tout d'abord, assurez-vous que PHP est configuré pour
autoriser les téléchargements de fichiers.
Dans votre fichier "[Link]", recherchez la
file_uploadsdirective et définissez-la sur On :
file_uploads = On
créez un formulaire HTML permettant aux utilisateurs
de choisir le fichier image qu'ils souhaitent télécharger ,
il faut ajouter l’attribut enctype=« multipart/form-
data » dans la balise <POST> :

[Link] Programmation Web II 182


Insertion d’une image (11)
Quelques règles à suivre pour le formulaire HTML ci-dessus :
•Assurez-vous que le formulaire utilise method="post"
•Le formulaire a également besoin de l'attribut suivant :
enctype="multipart/form-data". Il spécifie le type de contenu à utiliser lors de
la soumission du formulaire
Sans les exigences ci-dessus, le téléchargement de fichier ne fonctionnera
pas.
Autres choses à noter :
•L'attribut type="file" de la balise <input> affiche le champ d'entrée comme
un contrôle de sélection de fichier, avec un bouton "Parcourir" à côté du
contrôle d'entrée

[Link] Programmation Web II 183


Insertion d’une image (12)
Nous allons créer une table nommée Files qui contiendra les fichiers à
télécharger

[Link] Programmation Web II 184


Insertion d’une image (13)
Sachez que les fichiers ou images ne sont pas stockés directement dans la
base de données , on y stocke l’url ( le chemin d’acces ) si non la base de
données sera lourde.
Donc dans le dossier qui stocke les fichiers de mon site , je vais créer un sous
fichier nommé Files qui stockera l’ensemble de mes fichiers
(Images,pdf,audio,video)

[Link] Programmation Web II 185


Insertion d’une image (14)
Je vais commencer à mettre quelques codes HTML et PHP
1) HTML

[Link] Programmation Web II 186


Insertion d’une image (15)
2)PHP

Apres avoir téléchargé le fichier nous le résultat ci-dessous

[Link] Programmation Web II 187


Insertion d’une image (16)
Si j’ai besoin d’afficher par exemple le nom du fichier et le type

[Link] Programmation Web II 188


Insertion d’une image (17)
Si j’ai besoin d’afficher par exemple le nom du fichier et le type
Ici nous avons téléchargé deux fichiers
Un document PDF et une image

[Link] Programmation Web II 189


Insertion d’une image (18)
Si j’ai besoin de récupérer l’extension du document

[Link] Programmation Web II 190


Insertion d’une image (19)
Le résultat qui récupère les extensions de deux documents téléchargés est

[Link] Programmation Web II 191


Insertion d’une image (20)
Comme je sais comment récupérer les extensions , je peux autoriser
uniquement les fichiers pfd et les images en png

[Link] Programmation Web II 192


Insertion d’une image (21)

Voici le message si on charge un document qui n’est pas de ces extensions

[Link] Programmation Web II 193


Insertion d’une image (22)

Maintenant je peux envoyer les fichiers dans le dossier Files crée , j’utilise la
fonction move_uploaded_file mais je commence à donner le répertoire
temporaire dans lequel mon fichier est stocké et pour le savoir je fais comme
j’ai fait pour récupérer le nom du fichier mais cette fois ci j’utilise tmp_name

[Link] Programmation Web II 194


Insertion d’une image (24)
Les deux documents sont dans le répertoire Files comme le montre la
figure ci-dessous ,maintenant il faut stocker le nom et url dans la base de
données.

Rappelez –vous que nous avons crée une table nommée documents avec
cette structure

[Link] Programmation Web II 195


Insertion d’une image (25)
Le code utulisé est en dessous

Notons que les documents PNG peuvent etre sockés dans la base de donnée

[Link] Programmation Web II 196


Insertion d’une image (23)

Maintenant deux documents sont déjà envoyés dans le dossier Files

[Link] Programmation Web II 197


Code d’afficher les données insérées

[Link] Programmation Web II 198


VOICI LE RESULTAT

[Link] Programmation Web II 199


Code de supprimer les données
Nous avons crée les liens qui vont nous permettre de modifier nos
données et de les supprimer en cas de besoin, étant ici sur cette
même page d’affichage nous allons créer un script de suppression
qui est le suivant.

Un script facile et simple

[Link] Programmation Web II 200


Code modifier les données(1)
La requête UPDATE permet de modifier une entrée.

Vous venez de vous rendre compte que les


données insérées ou ajoutées ne sont pas
correctes et vous commencez à vous casser la
tête mais ne vous inquiétez pas une requête
simple peut corriger tout. Mais nous allons
commencer à créer le formulaire de
modification et afficher les données à modifier
dans les zones dédiées , le formulaire de
modification se nomme :[Link]
[Link] Programmation Web II 201
Code modifier les données(2)

[Link] Programmation Web II 202


Code modifier les données(3)

[Link] Programmation Web II 203


Les données à modifier (4)
Si on veut faire la modification on doit cliquer sur lien
Modifier

[Link] Programmation Web II 204


Les données à modifier (5)
Et on obtient le formulaire de modification suivant

Supposons nous voulons modifier contenu du message changer


Formation en Java et
mettre Formation Oracle qui est un SGBD le plus utilisé. Nous
saisissons FORMATION ORACLE dans la zone de saisie et nous
obtenons le formulaire suivant
[Link] Programmation Web II 205
Les données à modifier (6)
Apres un clic sur le bouton Modifier, nous sera rederigé
sur la page d’affichage pour voir que la
modification a été effectué avec succes.

[Link] Programmation Web II 206


Formulaire de connexion avant toutes actions(1)

Pour éviter que n’importe qui puisse


entrer dans le système , une connexion
est obligatoire, voici un formulaire
([Link]) de connexion partie
administration . Le css vous allez
améliorer

[Link] Programmation Web II 207


Formulaire de connexion avant toutes actions(2)

[Link] Programmation Web II 208


Formulaire de connexion avant toutes actions(3)

[Link] Programmation Web II 209


Retour sur Insertion des données sans les
doublons(1)

une base de données ne doit pas avoir des données qui


se répètent deux fois ou plusieurs c’est qu’on appelle les
doublons.

[Link] Programmation Web II 210


Tester l’éxistence d’un enregistrement dans la base de
données avant insertion(1)
 Cas pratique
if(isset($_POST['boutonValider']))
{
$RecupContenu=$_POST[‘Contenu'];
$RecupDate=$_POST[‘Datee'];
$AffichageMessage = ‘’select * messagef where contenu=:contenuMess and
DatePublication=:DatePublication ’’ ;
$dataMessage= $bdd->prepare($AffichageMessage );
$dataMessage->execute(array(‘contenuMess ’=>
$RecupContenu,’ DatePublication ’=> $RecupDate));
$count= $dataMessage->rowCount();

[Link] Programmation Web II 211


Tester l’éxistence d’un enregistrement dans la base de
données avant insertion(2)
if($count >0)
{
Echo “Enregistrement existe deja “;
}
Else
{
$InsertionMessage = $bdd->prepare( "INSERT INTO
messagef (contenu,DatePublication)
VALUES(:contenu,:DatePublication ) ’’ );
$InsertionMessage ->execute(array(‘contenu
‘=>$RecupContenu, ‘DatePublication’=>$RecupDate));
Echo “Insertion avec succes “;
}
}
[Link] Programmation Web II 212
LE COURS SE TERMINERA PAR LA
REALISATION D’UN PROJET

[Link] Programmation Web II 213

Vous aimerez peut-être aussi