PHP5
Introduction(1)
• Internet et les pages web
• HTML : conception de pages destinées à être publiées sur
Internet
• Page html : contient le texte à afficher et des instructions de
mise en page
• HTML est un langage de description de page et non pas un
langage de programmation
• pas d’instructions de calcul ou pour faire des traitements suivant des
conditions
• Des sites de plus en plus riches en informations
• Nécessité croissante d’améliorer le contenu de sites
• Mises à jour manuelles trop complexes
• Pourquoi ne pas automatiser les mises à jour ?
Introduction(2)
• Pages web statiques : fonctionnement
• Leurs contenus ne changent ni en fonction du demandeur ni en
fonction d’autres paramètres éventuellement inclus dans la
requête adressée au serveur. Toujours le même résultat.
• Rôle du serveur : localiser le fichier correspondant au
document demandé et répond au navigateur en lui envoyant
le contenu de ce fichier
• Pages web statiques : limites
• Besoin de réponses spécifiques : passage de pages statiques à
pages dynamiques
Introduction(3)
Tous les documents sont dans le serveur Serveur
Requête pour un fichier html
Document réclamé .html
Introduction(4)
• Les langages de script-serveur : Définition
• Un langage de script -serveur est :
• un programme stocké sur un serveur et exécuté par celui-ci,
• qui passe en revue les lignes d’un fichier source pour en modifier
une partie du contenu,
• avant de renvoyer à l’appelant ( un navigateur par exemple) le
résultat du traitement.
• La tâche d’interprétation des ordres à exécuter est déléguée à un
composant, souvent appelé moteur,
• installé sur le serveur,
• qui est doté d’une API et d’un fonctionnement identique quel que
soit la plate-forme utilisée pour gérer le serveur
Introduction(5)
Le programme utilise
l’information brute d’une base de
données
Pour composer une page HTML ad
hoc
Qui sera envoyée au requérant
Requête pour un fichier .asp ou. php
Document réclamé .html
Introduction(6)
• Pages web dynamiques côté serveur ou côté client
• Langage côté client : traité par la machine qui accueille le
logiciel de navigation.
• Ses résultats peuvent varier en fonction de plate-forme utilisée. Un
programme en JavaScript pourra fonctionner sous Netscape et poser
problème sous Internet explorer.
• Les résultats peuvent être différents suivant la machine (PC, Mac)
• Nécessité de tests importants
• Ne permettent pas de masquer les sources du programme
• Sont indépendants du serveur et donc de l’hébergement
Introduction(7)
• Pages web dynamiques côté serveur ou côté client
• Langage côté serveur : le travail d’interprétation du programme
est réalisé par le serveur
• Sont indépendants de la machine et du logiciel de navigation utilisés
pour la consultation.
• Sont compatibles avec tous les navigateurs et toutes leurs versions.
• Permettent de masquer les sources de ses programmes
• Nécessitent de recharger la page chaque fois que celle-ci est modifiée.
• Pages côté serveur et côté client :
• Script côté client pour des calculs et des traitement simples
• Scripts côté serveur pour des calculs, des traitements et des mises à
jours plus conséquents
Introduction(8)
• Les langages de création de pages web dynamiques côté
serveur
• Les CGI
• Sont des composants exécutables (fichiers .exe ou .dll) qui
produisent sur le serveur des contenus html à envoyer aux
clients.
• Les CGI sont compilés. Ils sont rapides mais fortement liés à la
plate-forme sur laquelle ils tournent.
• PERL
• Surcharge rapide du serveur par la création de plusieurs processus
• Employé sur de nombreux serveurs. Il tourne sur de nombreuses
plateformes : Unix, Linux, Windows, Mac
• Prévu à l'origine pour la manipulation de chaînes de caractères, il est
rapidement devenu un véritable langage orienté objet.
• Abord difficile et faible lisibilité.
Introduction(9)
• Les langages de création de pages web
dynamiques côté serveur
• ASP
• Basé sur des scripts écrits en VBscript, Jscript ou Javascript.
• Largement répandu,
• Facilité de mise en œuvre
• Plusieurs outils de développement intégrés (Macromédia Ultradev,
Microsoft Visual Interdev).
• Intimement liée à l'environnement Windows NT/2000 et au serveur
IIS (Internet Information Server) de Microsoft.
• L’environnement Microsoft est nécessaire
Introduction(10)
• Les langages de création de pages web dynamiques
côté serveur
• JSP
• Constitue la réponse de Sun aux ASP de Microsoft
• Utilisation de Java
• Au départ simple extension du langage Java
• Est devenu un véritable langage de développement web
• Possède une interface de qualité
• Lenteur relative
Introduction(11)
• Les langages de création de page web dynamiques côté
serveur
• PHP
• Connaît un succès toujours croissant sur le Web et se
positionne comme un rival important pour ASP
• L'environnement Linux est sa plateforme de prédilection
• Combiné avec le serveur Web Apache et la base de données
MySQL, PHP offre une solution particulièrement robuste,
stable et efficace
• Gratuité : Tous les logiciels sont issus du monde des logiciels
libres (Open Source).
Un peu d’histoire
• Histoire et Origine
• PHP : Hypertext PreProcessor
• Première version de PHP a été mis au point au début d'automne
par Rasmus Lerdorf en 1994
• Version appelée à l'époque Personal Home Pages
• Pour conserver la trace des utilisateurs venant consulter son CV sur
son site, grâce à l'accès à une base de données par l'intermédiaire de
requêtes SQL
• La version 3.0 de PHP fut disponible le 6 juin 1998
• A la fin de l'année 1999, une version bêta de PHP, baptisée PHP4
est apparue
• En 2001 cinq millions de domaines utilisent PHP
• trois fois plus que l’année 2000
PHP : C’est QUOI ?
• Définition
• Un langage de scripts permettant la création d’applications Web
• Indépendant de la plate-forme utilisée puisqu’il est exécuté côté
serveur et non côté client.
• La syntaxe du langage provient de celles du langage C, du Perl et de
Java.
• Ses principaux atouts sont:
• La gratuité et la disponibilité du code source (PHP4 est distribué
sous licence GNU GPL)
• La simplicité d'écriture de scripts
• La possibilité d'inclure le script PHP au sein d'une page HTML
• La simplicité d'interfaçage avec des bases de données
• L'intégration au sein de nombreux serveurs web (Apache,
Microsoft IIS, ...)
Intégration PHP et HTML (1)
• Principe
• Les scripts PHP sont généralement intégrés dans le code d’un
document HTML
• L’intégration nécessite l’utilisation de balises
• avec le style xml : <? ligne de code PHP ?>
• Avec le style php: <?php ligne de code PHP ?>
• avec le style JavaScript :
<script language=«php»> ligne de code PHP </script>
• avec le style des ASP : <% ligne de code ASP %>
Intégration PHP et HTML (2)
• Forme d’une page PHP
• Intégration directe
< ?php
//ligne de code PHP
?>
<html>
<head> <title> Mon script PHP
</title> </head>
<body>
//ligne de code HTML
< ?php
//ligne de code PHP
?>
//ligne de code HTML
….
</body> </html>
Intégration PHP et HTML (3)
Forme d’une page PHP
Inclure un fichier PHP dans un fichier HTML : include()
Fichier à inclure :
Fichier Prinipal [Link]
<html>
<head> <?php
<title> Fichier d’appel </title> $chaine=$salut. “ , C’est PHP
“ ;
</head>
echo “
<body> <table>
<?php <tr>
$salut = “ BONJOUR” ; <td>
include “[Link]” ; <h2>
?> $chaine</h2>
</td>
</body> </tr>
</html> </table> “;
?>
Intégration PHP et HTML (4)
• Envoi du code HTML par PHP
• La fonction echo : echo Expression;
• echo "Chaine de caracteres";
• echo (1+2)*87;
• La fonction print : print(expression);
• print("Chaine de caracteres");
• print ((1+2)*87);
• La fonction printf : printf (chaîne formatée);
• printf ("Le périmètre du cercle est %d",$Perimetre);
INSTALLATION
Syntaxe de base : Introduction
• Typologie
• Toute instruction se termine par un point-virgule ;
• Sensible à la casse
• Sauf par rapport aux fonctions
• Les commentaires
• /* Voici un commentaire! */
• // un commentaire sur une ligne
Syntaxe de base : Les constantes
• Les constantes
• Define("nom_constante", valeur_constante )
• define (“ma_const”, “Vive PHP4”) ;
• define (“an”, 2002) ;
• Les constantes prédéfinies
• NULL
• _FILE_
• _LINE_
• PHP_VERSION
• PHP_OS
• TRUE et FALSE
• E_ERROR
Syntaxe de base : Les variables (1)
• Principe
• Commencent par le caractère $
• N'ont pas besoin d'être déclarées
• Fonctions de vérifications de variables
• Doubleval(), empty(), gettype(), intval(),
• is_array(), is_bool(), is_double(), is_float(), is_int(),
is_integer, is_long(), is_object(), is_real(), is_numeric(),
is_string()
• Isset(), settype(), strval(), unset()
• Affectation par valeur et par référence
• Affectation par valeur : $b=$a
• Affectation par (référence) variable : $c = &$a
Syntaxe de base : Les variables(2)
• Visibilité des variables
• Variable locale
• Visible uniquement à l’intérieur d’un contexte d’utilisation
• Variable globale
• Visible dans tout le script
• Utilisation de l’instruction global() dans des contextes
locales
<?
$var = 100;
function test(){
global $var;
return $var;}
$resultat = test();
if ($resultat) echo $resultat; else echo " erreur ";
?>
Syntaxe de base : Les variables (4)
• Variables prédéfinies
• Les variables d'environnement dépendant du client
Variable Description
$_SERVER["HTTP_HOST"] Nom d'hôte de la machine du client
(associée à l'adresse IP)
$_SERVER["HTTP_REFERER"] URL de la page qui a appelé le script PHP
$_SERVER["HTTP_ACCEPT_LANGUAG Langue utilisée par le serveur (par défaut
E"] en-us)
$_SERVER["HTTP_ACCEPT"] Types MIME reconnus par le serveur
(séparés par des virgules)
$_SERVER["CONTENT_TYPE"] Type de données contenu présent dans le
corps de la requête. Il s'agit du type
MIME des données
$_SERVER["REMOTE_ADDR"] L'adresse IP du client appelant le script
CGI
$_SERVER["PHP_SELF"] Nom du script PHP
Syntaxe de base : Les variables (5)
• Variables prédéfinies
• Les variables d'environnement dépendant du serveur
Variable Description
$_SERVER["SERVER_NAME"] Le nom du serveur
$_SERVER["HTTP_HOST"] Nom de domaine du serveur
$_SERVER["SERVER_ADDR"] Adresse IP du serveur
$_SERVER["SERVER_PROTOCOL"] Nom et version du protocole
utilisé pour envoyer la requête
au script PHP
$_SERVER["DATE_GMT"] Date actuelle au format GMT
$_SERVER["DATE_LOCAL"] Date actuelle au format local
$_SERVER["$DOCUMENT_ROOT"] Racine des documents Web sur le
serveur
Syntaxe de base : Les variables (6)
• Variables prédéfinies
• Affichage des variables d'environnement
• la fonction phpinfo()
• <? phpinfo(); ?>
• echo phpinfo(constante);
INFO_CONFIGURATION affiche les informations de configuration.
INFO_CREDITS affiche les informations sur les auteurs du module
PHP
INFO_ENVIRONMENT affiche les variables d'environnement.
INFO_GENERAL affiche les informations sur la version de PHP.
INFO_LICENSE affiche la licence GNU Public
INFO_MODULES affiche les informations sur les modules associés à
PHP
INFO_VARIABLES affiche les variables PHP prédéfinies.
• la fonction getenv()
• <? echo getenv("HTTP_USER_AGENT");?>
Exercices :
Exercices :
Solution Exercice 1
Syntaxe de base : Les types de données
• Principe
• Pas besoin d’affecter un type à une variable avant de l’utiliser
• La même variable peut changer de type en cours de script
• Les variables issues de l’envoi des données d’un formulaire sont du
type string
• Les différents types de données
• Les entiers : le type Integer
• Les flottants : le type Double
• Les tableaux : le type array
• Les chaînes de caractères : le type string
• Les objets
Syntaxe de base : Les types de données (2)
• Le transtypage
• La fonction settype() permet de convertir le type auquel
appartient une variable
<? $nbre=10;
Settype($nbre, " double ");
Echo " la variable $nbre est de type " , gettype($nbre); ?>
• Transtypage explicite : le cast
• (int), (integer) ; (real), (double), (float); (string); (array); (object)
<? $var=" 100 FRF ";
Echo " pour commencer, le type de la variable est $var, gettype($var);
$var =(double) $var;
Echo <br> Après le cast, le type de la variable est $var ", gettype($var);
Echo "<br> et a la valeur $var "; ?>
• Détermination du type de données
• Gettype(), Is_long(), Is_double(), Is_string(), Is_array(), Is_object(),
Is_bool()
Exercices :
Exercice 2
• Créer une variable « a » contient une
chaine « 100,54 DH », stocker la
valeur double de a dans une variable
« b », ensuite stocker la valeur entière
de b dans une variable « c »
Syntaxe de base : Les chaînes de caractères(1)
• Principe
• Peuvent être constituées de n'importe quel caractère alphanumérique et de
ponctuation, y compris les caractères spéciaux
\tLa nouvelle monnaie unique, l' €uro, est enfin là...\n\r
• Une chaîne de caractères doit être toujours entourée par des guillemets
simples (')ou doubles (")
" Ceci est une chaîne de caractères valide."
'Ceci est une chaîne de caractères valide.'
"Ceci est une chaîne de caractères invalide.'
• Des caractères spéciaux à insérer directement dans le texte, permettent de
créer directement certains effets comme des césures de lignes
Car Code ASCII Code hex Description
\car échappe un caractère spécifique.
"" 32 0x20 un espace simple.
\t 9 0x09 tabulation horizontale
\n 13 0x0D nouvelle ligne
\r 10 0x0A retour à chariot
\0 0 0x00 caractère NUL
\v 11 0x0B tabulation verticale
Syntaxe de base : Les chaînes de caractères(2)
• Quelques fonctions de manipulation
chaîne_result = addCSlashes(chaîne, liste_caractères);
ajoute des slashs dans une chaîne
chaîne_result = addSlashes(chaîne);
ajoute un slash devant tous les caractères spéciaux.
chaîne_result = chop(chaîne);
supprime les espaces blancs en fin de chaîne.
caractère = chr(nombre);
retourne un caractère en mode ASCII
chaîne_result = crypt(chaîne [, chaîne_code])
code une chaîne avec une base de codage.
echo expression_chaîne;
affiche à l'écran une ou plusieurs chaînes de caractères.
$tableau = explode(délimiteur, chaîne);
scinde une chaîne en fragments à l'aide d'un délimiteur et retourne un tableau.
Exercices :
Exercice 3
• Créer une variable qui contient
« Bonjour_tout_le_monde »
• Retourner le caractere « j » fonction chr(nb)
• Decouper la chaine et afficher chaque mot.
Explode
• Retrourner le nombre de caractere de la chaine
strlen()
• Inverser un mot (exemple: bonjour roujnob)
Syntaxe de base : les opérateurs (1)
• Les opérateurs
• les opérateurs de calcul
• les opérateurs d'assignation
• les opérateurs d'incrémentation
• les opérateurs de comparaison
• les opérateurs logiques
• les opérateurs bit-à-dit
• les opérateurs de rotation de bit
Syntaxe de base : Les opérateurs(2)
• Les opérateurs de calcul
Opérateur Dénomination Effet Exemple Résultat
+ opérateur d'addition Ajoute deux valeurs $x+3 10
- opérateur de soustraction Soustrait deux valeurs $x-3 4
opérateur de
* Multiplie deux valeurs $x*3 21
multiplication
plus: opérateur de
/ Divise deux valeurs $x/3 2.3333333
division
Affecte une valeur à une Met la valeur 3 dans la variable
= opérateur d'affectation $x=3
variable $x
Exercices :
Exercice 4
• Créer deux variables et calculer leurs:
• Somme
• Soustraction
• Division
• multiplucation
Syntaxe de base : Les opérateurs(3)
• Les opérateurs d'assignation
Opérateur Effet
+= addition deux valeurs et stocke le résultat dans la variable (à gauche)
-= soustrait deux valeurs et stocke le résultat dans la variable
*= multiplie deux valeurs et stocke le résultat dans la variable
/= divise deux valeurs et stocke le résultat dans la variable
%= donne le reste de la division deux valeurs et stocke le résultat dans la variable
|= Effectue un OU logique entre deux valeurs et stocke le résultat dans la variable
^= Effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable
&= Effectue un Et logique entre deux valeurs et stocke le résultat dans la variable
.= Concatène deux chaînes et stocke le résultat dans la variable
Exercices :
Exercice 5
• Créer une variable « a » contient 5,
une variable « b » contient 4, puis
ajouter « b » à « a » ($a=$a+$b) avec
+=
• Meme operation avec -= , *= , /= et
%=
Syntaxe de base : Les opérateurs(4)
• Les opérateurs d'incrémentation
Opérateur Dénomination Effet Syntaxe Résultat (avec x valant 7)
++ Incrémentation Augmente d'une unité la variable $x++ 8
-- Décrémentation Diminue d'une unité la variable $x-- 6
• Les opérateurs de comparaison
Opérateur Dénomination Effet Exemple Résultat
== Compare deux valeurs et vérifie Retourne 1 si $X est égal à 3,
opérateur d'égalité $x==3
leur égalité sinon 0
opérateur d'infériorité Vérifie qu'une variable est Retourne 1 si $X est inférieur
< $x<3
stricte strictement inférieure à une valeur à 3, sinon 0
Vérifie qu'une variable est Retourne 1 si $X est inférieur
<= opérateur d'infériorité $x<=3
inférieure ou égale à une valeur à 3, sinon 0
opérateur de supériorité Vérifie qu'une variable est Retourne 1 si $X est
> $x>3
stricte strictement supérieure à une valeur supérieur à 3, sinon 0
Vérifie qu'une variable est Retourne 1 si $X est
>= opérateur de supériorité $x>=3
supérieure ou égale à une valeur supérieur ou égal à 3, sinon 0
Vérifie qu'une variable est Retourne 1 si $X est différent
!= opérateur de différence $x!=3
différente d'une valeur de 3, sinon 0
Exercices :
Exercice 6
• Créer une variable « a » contient 5
• Incrementer la variable et afficher le
resultat
• Decrementer la variable et afficher le
resultat
Syntaxe de base : Les opérateurs(5)
• Les opérateurs logiques
Opérateur Dénomination Effet Syntaxe
|| ou OR OU logique Vérifie qu'une des conditions est réalisée ((condition1)||(condition2))
&& ou
ET logique Vérifie que toutes les conditions sont réalisées ((condition1)&&(condition2))
AND
XOR OU exclusif Opposé du OU logique ((condition1)XOR(condition2))
Inverse l'état d'une variable booléenne (retourne la valeur
! NON logique (!condition)
1 si la variable vaut 0, 0 si elle vaut 1)
• Les opérateurs bit-à-bit
Opérateur Dénomination Effet Syntaxe Résultat
9 & 12 (1001 &
& ET bit-à-bit Retourne 1 si les deux bits de même poids sont à 1 8 (1000)
1100)
Retourne 1 si l'un ou l'autre des deux bits de même 9 | 12 (1001 |
| OU bit-à-bit 13 (1101)
poids est à 1 (ou les deux) 1100)
Retourne 1 si l'un des deux bits de même poids est à 1 9 ^ 12 (1001 ^
^ OU bit-à-bit 5 (0101)
(mais pas les deux) 1100)
Complément
~ Retourne 1 si le bit est à 0 (et inversement) ~9 (~1001) 6 (0110)
(NON)
Syntaxe de base : Les opérateurs(7)
• Les priorités Priorité des opérateurs
() []
-- ++ ! ~ -
* / %
+ -
< <= >= >
== !=
&
^
|
&&
||
? :
= += -= *= /= %= <<= >>= >>>= &= ^= |=
AND
XOR
Syntaxe de base : Les instructions conditionnelles(1)
• L'instruction if
• if (condition réalisée) { liste d'instructions }
• L'instruction if ... Else
• if (condition réalisée) {liste d'instructions}
else { autre série d'instructions }
• L'instruction if ... elseif ... Else
• if (condition réalisée) {liste d'instructions}
elseif (autre condition ) {autre série d'instructions }
else { série d'instructions }
• Opérateur ternaire
• (condition) ? instruction si vrai : instruction si faux;
Exercices :
Exercice 7
• Créer 3 variables « entier », afficher
la plus petite et la plus grande
variable.
• Créer deux chaines de caractères et
comparer les.
• Utiliser l’operateur ternaire pour la
comparaison de deux entiers
Syntaxe de base : Les instructions conditionnelles(2)
• L'instruction switch
switch (Variable) {
case Valeur1: Liste d'instructions break;
case Valeur2: Liste d'instructions break;
case Valeurs...: Liste d'instructions break;
default: Liste d'instructions break;
}
Exercices :
Exercice 8
• Créer une variable « jour », affecter a
cette variable une valeur comprise
entre 1 et 7 (exp: 5), afficher le jour
correspondant en utilisant l’instruction
« switch ».
• 1: lundi
• 2: mardi
• ….
• 7: dimanche
Syntaxe de base : Les instructions conditionnelles(3)
• La boucle for
• for ($i=1; $i<6; $i++) { echo "$i<br>"; }
• La boucle while
• While(condition) {bloc d’instructions ;}
• While (condition) :Instruction1 ;Instruction2 ;
…. endwhile ;
• La boucle do…while
• Do {bloc d’instructions ;}while(condition) ;
• La boucle foreach (PHP4)
• Foreach ($tableau as $valeur) {insts utilisant $valeur ;}
Exercices :
Exercice 9
• Créer une boucle qui affiche
« bonjour » 10 fois, chaqu’une dans
une ligne. (for)
• Créer une boucle qui affiche les
nombres de 1 a 10 (while)
• Créer une boucle qui calcule le
factorielle. (for)
Syntaxe de base : Les fonctions(1)
• Déclaration et appel d’une fonction
function nom_fonction($arg1, $arg2, …$argn)
{
déclaration des variables ;
bloc d’instructions ;
return $resultat ;
}
Syntaxe de base : Les fonctions(2)
• Variables locales et variables globales
• variables en PHP : global, static, local
• toute variable déclarée en dehors d’une fonction est globale
• utiliser une variable globale dans une fonction, l’instruction global suivie du
nom de la variable
• Pour conserver la valeur acquise par une variable entre deux appels de la même
fonction : l’instruction static.
• Les variables statiques restent locales à la fonction et ne sont pas réutilisables à
l’extérieur.
<?php
function cumul ($prix)
{
$cumul = 0 ;
$i = 1 ;
echo "Total des achats $i = ";
$cumul += $prix;
$i++ ;
return $cumul ;
}
echo cumul (175), "<br />" ;
echo cumul (65), "<br />" ;
echo cumul (69), "<br />" ;
?>
Exercices :
Exercice 10
• Créer une fonction qui permet de
calculer la somme de deux variables.
• Créer une fonction qui permet de
retourner le max de deux variables.
Syntaxe de base : Les tableaux(1)
• Principe
• Création à l’aide de la fonction array()
• Uniquement des tableaux à une dimension
• Les éléments d’un tableau peuvent appartenir à des types
distincts
• L’index d’un tableau en PHP commence de 0
• Pas de limites supérieures pour les tableaux
• La fonction count() pour avoir le nombre d’éléments d’un
tableau
Syntaxe de base : Les tableaux(2)
• Les tableaux indicés et les tableaux associatifs
• Tableau indicé
• Accéder aux éléments par l’intermédiaire de numéros
$tableau[indice] = valeur;
$jour[3] = "Mercredi";
$note[0] = 20;
$tableau = array(valeur0, valeur1,..., valeurN);
$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi",
"Jeudi", "Vendredi", "Samedi");
$note = array(20, 15, 12.6, 17, 10, 20, 11, 18, 19);
$variable = $tableau[indice];
$JJ = $jour[6]; // affecte "Samedi" à $JJ
echo $note[1] + $note[5];
Syntaxe de base : Les tableaux(3)
• 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
$tableau["indice"] = valeur;
$jour["Dimanche"] = 7
$jour["Mercredi"] = "Le jour des enfants"
$tableau = array(ind0 => val0, ind1 => val1,..., indN =>
valN);
$jour = array("Dimanche" => 1, "Lundi" => 2, "Mardi" =>
3, "Mercredi" => 4, "Jeudi" => 5, "Vendredi" => 6,
"Samedi" => 7);
$variable = $tableau["indice"];
$JJ = $jour["Vendredi"]; //affecte 6 à $JJ
echo $jour["Lundi"]; //retourne la valeur 2
Syntaxe de base : Les tableaux(5)
• Lecture des éléments d’un tableau
• Avec une boucle for
for ($i=0; $i<count($tab) ; $i++)
{
echo $tab[$i];
}
• Avec une boucle while
$i=0;
while ($i<count($tab)) { echo $tab[$i]; $i++; }
• Avec La boucle foreach
$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi",
"Jeudi", "Vendredi", "Samedi");
foreach($jour as $JJ) { echo $JJ;}
Exercices :
Exercice 11
• Créer un tableau contenant 5 notes,
et calculer ça moyenne, la valeur
minimale et la valeur maximale.
• $t=array(12, 10, 18, 9, 15);
• Moyenne =12,8
• Min = 9 et max=18
Syntaxe de base : Les tableaux(6)
• Lecture des éléments d’un tableau
• Parcours d'un tableau associatif
• Réalisable en ajoutant avant la variable $valeur, la clé associée
$tableau = array(clé1 => val1, clé2 => val2, ..., cléN =>
valN);
foreach($tableau as $cle => $valeur) {
echo "Valeur ($cle): $valeur"; }
$jour = array("Dimanche" => 7, "Lundi" => 1, "Mardi" => 2,
"Mercredi" => 3, "Jeudi" => 4, "Vendredi" => 5, "Samedi" =>
6);
foreach($jour as $sJJ => $nJJ) {
echo "Le jour de la semaine n° ". $nJJ . " : " . $sJJ .
"<br>"; }
Syntaxe de base : Les tableaux(7)
• Fonctions de tri
• Tri selon les valeurs
• La fonction sort() effectue un tri sur les valeurs des éléments d’un tableau
selon un critère alphanumérique :selon les codes ASCII :
• « a » est après « Z » et « 10 » est avant « 9 »)
• Le tableau initial est modifié et non récupérables dans son ordre original
• Pour les tableaux associatifs les clés seront perdues et remplacées par un indice
créé après le tri et commencant à 0
• La fonction rsort() effectue la même action mais en ordre inverse des
codes ASCII.
• La fonction asort() trie également les valeurs selon le critère des codes
ASCII, mais en préservant les clés pour les tableaux associatifs
• La fonction arsort() la même action mais en ordre inverse des codes
ASCII
• la fonction natcasesort() effectue un tri dans l’ordre alphabétique non
ASCII (« a » est avant « z » et « 10 » est après « 9 »)
Syntaxe de base : Les tableaux(8)
• Fonctions de tri
• Tri sur les clés
• La fonction ksort() trie les clés du tableau selon le critère des codes
ASCII, et préserve les associations clé /valeur
• La fonction krsort() effectue la même action mais en ordre inverse des codes
ASCII
<?php
$tab2 = array ("1622"=>"Molière","1802"=>"Hugo","1920"=>"Vian") ;
ksort ($tab2);
echo "<h3 > Tri sur les clés de \$tab2 </h3>" ;
foreach ($tab2 as $cle=>$valeur) {
echo "<b> l’élément a pour clé : $clé; et pour valeur : $ valeur
</b> <br />";
}
?>
Syntaxe de base : Les tableaux(9)
• Les fonctions de tableaux
$tableau = array_count_values($variable);
retourne un tableau comptant le nombre d'occurrences des valeurs d'un tableau.
$tableau = array_diff($var_1, $var_2, ..., $var_N);
retourne dans un tableau contenant les valeurs différentes entre deux ou plusieurs
tableaux.
$tableau = array_intersect($var_1, $var_2, ..., $var_N);
retourne un tableau contenant les enregistrements communs aux tableaux entrés en
argument.
$tableau = array_flip($variable);
intervertit les paires clé/valeur dans un tableau.
$tableau = array_keys($variable [, valeur]);
retourne toutes les clés d'un tableau ou les emplacements d'une valeur dans un
tableau.
Syntaxe de base : Les tableaux(11)
• Les fonctions de tableaux
$tableau = array_map($var_1 [, $var_2, ..., $var_N], 'fonction');
applique une fonction à un ou plusieurs tableaux.
$tableau = array_merge($var_1, $var_2, ..., $var_N);
enchaîne des tableaux entrés en argument afin d'en retourner un unique.
$tableau = array_merge_recursive($var_1, $var_2, ..., $var_N);
enchaîne des tableaux en conservant l'ordre des éléments dans le tableau résultant.
Dans le cas de clés communes, les valeurs sont placées dans un tableau.
true | false = array_multisort($var, critère1, critère2 [, ..., $var_N, critère1, critère2])
trie un ou plusieurs tableaux selon un ordre croissant ou décroissant (SORT_ASC ou
SORT_DESC) et selon une comparaison alphabétique, numérique ou de chaîne de
caractères (SORT_REGULAR, SORT_NUMERIC ou SORT_STRING).
$tableau = array_pad($variable, taille, valeur);
recopie tout un tableau en ajustant sa taille à l'argument correspondant et en bourrant
d'une valeur spécifiée les éléments vides.
Syntaxe de base : Les classes et les objets(1)
• Manipulation des classes et des objets
• Php n'inclue pas dans sa version 4 de niveaux de visibilité des
éléments de la classe, il n'y a donc pas de concept d'encapsulation
• Creation de la classe
• Class Nom_de_la_classe{ // corp de la classe }
• Instanciation de la classe
• $Nom_de_l_objet = new Nom_de_la_classe;
• Accéder aux propriétés d'un objet
• $Nom_de_l_objet->Nom_de_la_donnee_membre = Valeur;
• Accéder aux méthodes d'un objet
• $Nom_de_l_objet-
>Nom_de_la_fonction_membre(parametre1,parametre2,...);
• La variable $this
• $this->age = $Age;
Syntaxe de base : Les classes et les objets(2)
• Création d’une classe et d’un objet
• Une classe est composée de deux parties:
• Les attributs: il s'agit des données représentant l'état de l'objet
• Les méthodes : il s'agit des opérations applicables aux objets
<?php
class client {
var $nom; var $ville; var $age;
function age() { echo $nom." a ".$age." ans"; }
}
//création d’un objet
$client1 = new client() ;
//affectation des propriétés de l’objet
$client1 -> nom = "Simo"; $client1-> age = 25; $client1->ville = "Casa";
//utilisation des propriétés
echo "le nom du client1 est ", $client1->nom, "<br />" ;
echo "la ville du client1 est ", $client1-> ville, "<br />" ;
echo "le client1 a ", $client1->age, "<br />" ;
//appel de la méthode age()
$client1->age() ;
?>
Syntaxe de base : Les classes et les objets(3)
• L’héritage
• Instruction extends : class nouvelle_classe extends super_classe
• La nouvelle classe hérite des attributs et des méthodes appartenant à la
super-classe tout en définissant ses propres fonctions et variables.
• Le langage PHP ne supporte pas l'héritage multiple
• Le constructeur
• Une fonction qui est appelée automatiquement par la classe lors de son
instanciation avec l'opérateur new
• Doit posséder un nom identique à celle de la classe
• Avec PHP 3, une fonction définie dans une classe héritée devient un
constructeur si son nom est similaire à celle de la nouvelle classe
• Avec PHP 4, une fonction constructeur ne peut être définie que dans sa
propre classe
• Lorsqu'une classe héritant d'une autre est instanciée et si aucun
constructeur n'est défini dans cette classe, alors la fonction constructeur
sollicitée sera celle de la super-classe
La gestion des fichiers avec PHP (1)
• Principe
• PHP prend en charge l’accès au système de fichiers du système
d’exploitation du serveur
• Les opérations sur les fichiers concernent la création, l’ouverture, la
suppression, la copie, la lecture et l’écriture de fichiers
• Les possibilités d’accès au système de fichiers du serveur sont
réglementées par les différents droits d’accès accordés au
propriétaire, à son groupe et aux autres utilisateurs
• La communication entre le script PHP et le fichier est repérée par une
variable, indiquant l'état du fichier et qui est passée en paramètre
aux fonctions spécialisées pour le manipuler
La gestion des fichiers avec PHP (2)
• Ouverture de fichiers
• La fonction fopen() permet d'ouvrir un fichier, que ce soit pour le lire,
le créer ou y écrire
• fopen(nom_du_fichier, mode);
• mode : indique le type d'opération qu'il sera possible d'effectuer
sur le fichier après ouverture. Il s'agit d'une lettre (en réalité une
chaîne de caractères) indiquant l'opération possible:
• r (comme read) indique une ouverture en lecture seulement
• w (comme write) indique une ouverture en écriture seulement (la
fonction crée le fichier s'il n'existe pas)
• a (comme append) indique une ouverture en écriture seulement avec
ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe
pas)
• lorsque le mode est suivie du caractère + celui-ci peut être lu et
écrit
La gestion des fichiers avec PHP (3)
• Ouverture de fichiers
Mode Description
r ouverture en lecture seulement
w ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas)
ouverture en écriture seulement avec ajout du contenu à la fin du fichier (la fonction
a
crée le fichier s'il n'existe pas)
r+ ouverture en lecture et écriture
w+ ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas)
ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (la fonction
a+
crée le fichier s'il n'existe pas)
La gestion des fichiers avec PHP (4)
• Ouverture de fichiers
• Exemple
$fp = fopen("[Link]","r"); //lecture
$fp = fopen("[Link]","w"); //écriture depuis début du fichier
• De plus, la fonction fopen permet d'ouvrir des fichiers présents sur le
web grâce à leur URL.
• Exemple : un script permettant de récupérer le contenu d'une page d'un site
web:
<?
$fp = fopen("[Link] //lecture du fichier
while (!feof($fp)) { //on parcoure toutes les lignes
$page .= fgets($fp, 4096); // lecture du contenu de la ligne}
?>
La gestion des fichiers avec PHP (5)
• Ouverture de fichiers
• Il est généralement utile de tester si l'ouverture de fichier s'est bien
déroulée ainsi que d'éventuellement stopper le script PHP si cela
n'est pas le cas
<?
if (!$fp = fopen(”[Link]","r")) {
echo "Echec de l'ouverture du fichier";
exit;}
else {// votre code;}
?>
• Un fichier ouvert avec la fonction fopen() doit être fermé, à la fin de
son utilisation, par la fonction fclose() en lui passant en paramètre
l'entier retourné par la fonction fopen()
La gestion des fichiers avec PHP (6)
• Lecture et écriture de fichiers
• Il est possible de lire le contenu d’un fichier et d'y écrire des
informations grâce aux fonctions:
• fputs() (ou l’alias fwrite() ) permet d'écrire une chaîne de caractères
dans le fichier. Elle renvoie 0 en cas d'échec, 1 dans le cas contraire
• booléen fputs(entier Etat_du_fichier, chaine Sortie);
• fgets() permet de récupérer une ligne du fichier. Elle renvoie 0 en cas
d'échec, 1 dans le cas contraire
• fgets(entier Etat_du_fichier, entier Longueur);
• Le paramètre Longueur désigne le nombre de caractères
maximum que la fonction est sensée récupérer sur la ligne
• Pour récupérer l'intégralité du contenu d'un fichier, il faut
insérer la fonction fgets() dans une boucle while. On utilise la
fonction feof(), fonction testant la fin du fichier.
La gestion des fichiers avec PHP (7)
• Lecture et écriture de fichiers
<?
if (!$fp = fopen("[Link]","r"))
{
echo "Echec de l'ouverture du fichier";
}
else
{
$Fichier="";
while(!feof($fp))
{
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo $Ligne;
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne. "<BR>";
}
fclose($fp); // On ferme le fichier
}
?>
La gestion des fichiers avec PHP (8)
• Lecture et écriture de fichiers
• Pour stocker des informations dans le fichier, il faut dans un
premier temps ouvrir le fichier en écriture en le créant s’il n'existe
pas
• Deux choix : le mode 'w' et le mode 'a'.
<?
$nom="Jean"; $email="jean@[Link]";
$fp = fopen("[Link]","a"); // ouverture du fichier en
écriture
fputs($fp, "\n"); // on va a la ligne
fputs($fp, $nom."|".$email); // on écrit le nom et email
dans le fichier
fclose($fp);
?>
74
Les formulaires
• Saisie dynamique d’information
• Traitement adapté
• Enregistrement d’information
• Sélection de l’information en fonction des besoins
75
1. Saisie d’information
• Formulaire HTML pour recueillir les informations de
l’utilisateur
76
Saisie d’information : HTML
<form name="saisie" action="[Link]" method="get">
Votre nom : <input type="text" name="nom"/>
Votre âge : <input type="text" name="age"/>
<input type="submit" name="OK" value="OK"/>
</form>
• <FORM> a trois attributs principaux :
• name : le nom de l'objet formulaire
• action : l'url du script à activer
• method : le mode de transmission des données au
script : GET ou POST
• Par défaut, la méthode GET est utilisée
77
Saisie d’information : HTML
<form name="saisie" action="[Link]" method="get">
Votre nom : <input type="text" name="nom"/>
Votre âge : <input type="text" name="age"/>
<input type="submit" name="OK" value="OK"/>
</form>
• Un champ de formulaire est composé de :
• Un type
• Un nom : attribut name
• Une valeur : saisie par utilisateur / attribut value
78
2. Transmission
• Transmettre les valeurs saisies par l’utilisateur
pour en faire un traitement
79
Transmission
<form name="saisie" action="[Link]" method="get">
Votre nom : <input type="text" name="nom"/>
Votre âge : <input type="text" name="age"/>
<input type="submit" name="OK" value="OK"/>
</form>
• Transmission à un script par une méthode
• GET : transmet les paramètres dans l’URL de façon visible
• POST : transmet les paramètres de façon cachée (dans l’en-tête HTTP)
80
Transmission
• Ces méthodes sont en fait des variables
globales ou tableaux super-globaux
<form name="saisie" action="[Link]" method="post">
Votre nom : <input type="text" name="nom"/>
Votre âge : <input type="text" name="age"/>
<input type="submit" name="OK" value="OK"/>
</form>
• Pour récupérer la valeur d’un champ par la méthode POST :
$valeur = $_POST[‘name’];
<?php
$nom_user = $_POST[‘nom’];
$prenom_user = $_ POST[‘age’];
$soumettre= $_ POST[‘OK’];
?>
81
Les champs texte
• Valeur : saisie par l’utilisateur
<form name="saisie" action="[Link]" method="get">
Votre nom : <input type="text" name="nom"/>
Votre avis : <textarea name="avis" ></textarea>
<input type="submit" name="OK" value="OK"/>
</form>
• input text : $_GET[‘nom’];
• textarea : $_GET[‘avis’];
• Submit : $_GET[‘OK’];
82
Boutons radio
• Valeur : attribut value de la case cochée
• Un seul coché à la fois : tous les boutons ont le même name
<form name="saisie" action="[Link]" method="get">
<input type="radio" name="genre" value="Femme"/> une femme
<input type="radio" name="genre" value="Homme"/> un homme
<input type="submit" name="OK" value="OK"/>
</form>
<?php
//si j’ai coché une femme, $genre_user ="Femme"
$genre_user=$_GET[‘genre’];
?>
83
Cases à cocher
• Un ensemble de cases à cocher ayant le même
name sont en fait un tableau simple
<form name="saisie" action="[Link]" method="get">
Sport <input type="checkbox" name="loisirs[]" value="sport" />
Théâtre <input type="checkbox" name="loisirs[]" value="theatre" />
Cinéma <input type="checkbox" name="loisirs[]" value="cinema" />
<input type="submit" name="OK" value="OK"/>
</form>
• Valeur : sont ajoutées dans le tableau les valeurs
des seules cases cochées
84
Cases à cocher
• Les valeurs sont enregistrées dans un tableau
• On peut faire des tableaux de tableaux !
$tab_loisirs = $_GET[‘loisirs’];
• Donc faire un parcours de tableaux
<?php
//Le tableau $_GET contient le tableau loisirs[]
$loisirs = $_GET["loisirs"];
for ($i=0; $i<count($loisirs); $i++) {
echo $loisirs[$i];
}
?>
85
Listes déroulantes
• Normalement, une seule valeur sélectionnée
• Valeur : attribut value sélectionné
<form name="saisie" action="[Link]" method="get">
<select name="choix">
<option value="choix1">Choix 1</option>
<option value="choix2">Choix 2</option>
<option value="choix3">Choix 3</option>
</select>
<input type="submit" name="OK" value="OK"/>
</form>
<?php
$choix_user = $_GET["choix"];
?>
86
3. Traitement
• Maintenant que nous avons récupérer les
données, quels traitement ?
87
Traitement des données
• Le script reçoit les données en GET/POST
• Vérifier la validité des données
• S'il y a des erreurs dans les données
• Afficher un message d'erreur (explicite!)
• Sinon s'il n'y a pas d'erreur dans les données
• Effectuer le traitement demandé
• Afficher un message de confirmation
88
Traitement des données
1. Erreurs :
• Champs vides
• empty($variable) teste si la variable est vide
• isset($variable) teste si la variable existe
• Suite de caractères attendue (selon un pattern)
• Expressions régulières
• Longueur d’une chaîne (voir le manuel PhP)
2. Traitements :
• Calculs
• Preparation de la requete SQL
• Execution de la requete SQL
• Enregistrement dans la BD
• Construction de réponse
Exercices
• Écrire un formulaire qui demande le nom et l'âge de
l'utilisateur. Le bouton submit de ce formulaire provoquera
l'affichage d'une page qui saluera l'utilisateur avec cette
phrase : « Bonjour Mohamed, vous avez 28 ans... » (avec
les bonnes valeurs, bien entendu).
Exercices
• Écrire un formulaire qui demande le nom et le sexe de
l'utilisateur (M ou Mme). Ce formulaire appelle une page
qui affichera «Bonjour monsieur Mohamed» ou «Bonjour
madame Amal» suivant le cas (avec le vrai nom de la
personne, bien entendu!)
Exercices
• 1. Authentification:
• pseudo & mot de passe cliquez sur valider,Si votre
mot de passe= inverse(pseudo) l’authentifation sera
réussie, si ce n’est pas le cas l’authentification échouera.
Exercices
• Écrire un formulaire « calculatrice », : 2 champ textes
pour la saisie des opérandes, un groupe de 4 cases à
cocher (ou une liste déroulante) pour le choix de
l'opération, et affichage du résultat de l'opération.
93
PHP
PHP et MySQL
Le langage SQL et les bases de données
• La base de données (BD) est un système
qui enregistre des données.
• Les données dans la (BD) sont
toujours classées.
• La (BD) est un moyen simple de ranger des
informations.
• Mais qui s’occupe du stockage ????
Le langage SQL et les bases de données
• Les SGBD s'occupent du stockage
• les SGBD (Systèmes de Gestion de Bases de Données) sont
les programmes qui se chargent du stockage de vos données.
• Les plus connus sont :
• MySQL : libre et gratuit, c'est probablement le SGBD le plus
connu.
• PostgreSQL : libre et gratuit comme MySQL, avec plus de
fonctionnalités ;
• SQLite: libre et gratuit, très léger mais très limité en
fonctionnalités ;
• Oracle : utilisé par les très grosses entreprises ; sans aucun
doute un des SGBD les plus complets,
• Microsoft SQL Server : le SGBD de Microsoft.
Le langage SQL et les bases de données
• Pour stocker des informations dans la
BD, on doit donnez des ordres au SGBD
en langage SQL.
• On doit communiquer avec le SGBD pour
lui donner l'ordre de récupérer ou
d'enregistrer des données. Pour lui
« parler », on utilise le langage SQL.
Le langage SQL et les bases de données
• Le langage SQL est un standard, c'est-à-dire que quel
que soit le SGBD que vous utilisez, vous vous servirez du
langage SQL.
• il faut apprendre le langage SQL pour travailler avec les
bases de données.
• Ce langage n'a rien à voir avec le PHP, mais nous allons
impérativement en avoir besoin.
• Voici un exemple de commande en langage SQL:
SELECT id, auteur, message, datemsg FROM livreor ORDER BY
datemsg DESC
Le langage SQL et les bases de données
• PHP fait la jonction entre l’utilisateur et MySQL
Le langage SQL et les bases de données
• Structure d'une base de données
• Dans une base de donnée, on peut avoir plusieurs tables.
• Les champs dans cet exemple sont : « Numéro »,
« Pseudonyme », « E-mail » et « Âge ».
• Chaque ligne est une entrée. Ici, il y en a quatre, ….
Le langage SQL et les bases de données
• Pour Résumé :
1. Une base de données est un outil qui stocke vos
données de manière organisée et vous permet de les
retrouver facilement par la suite.
2. On communique avec MySQL grâce au langage SQL.
Ce langage est commun à tous SGBD.
3. PHP fait l'intermédiaire entre l’utilisateur et MySQL.
4. Une base de données contient plusieurs tables.
5. Chaque table est un tableau où les colonnes sont
appelées « champs » et les lignes « entrées ».
PHP MY ADMIN
• Il existe plusieurs façons d'accéder à la base de
données et d'y faire des modifications.
• On peut utiliser une ligne de commande
(console), exécuter les requêtes en PHP ou faire
appel à un programme
• phpMyAdmin, un des outils les plus connus
permettant de manipuler une base de données
MySQL.
• phpMyAdmin est livré avec WAMP.
PHP MY ADMIN
• Créer une base de donnée.
PHP MY ADMIN
• Créer une base de donnée.
PHP MY ADMIN
• Créer une table.
PHP MY ADMIN
• Créer une table.
• id : le champ id. C'est le numéro d'identification.
• titre : ce champ contiendra le titre de la news.
• contenu : enfin, ce champ contiendra la news elle-même.
PHP MY ADMIN
• Créer une table.
• Les types de champs MySQL
PHP MY ADMIN
• Insertion dans une table.
PHP MY ADMIN
• Insertion dans une table.
PHP MY ADMIN
Autres opérations :
• SQL ;
• Importer ;
• Exporter ;
• Opérations ;
• Vider ;
• Supprimer;
• SELECT * FROM news
Se connecter à la BD en PHP
• 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. ‘veille’
• 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.
Se connecter à la BD en PHP
• Comment se connecte-t-on à la base de
données en PHP ?
Se connecter à la BD en PHP
• Se connecter à MySQL avec PDO
• Pour se 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 »).
• la base : c'est le nom de la base de données à laquelle vous voulez
vous connecter.
• le login : il permet de vous identifier.
• le mot de passe : votre mot de passe.
$bdd = new PDO('mysql:host=localhost;dbname=test’, 'root', ‘pass');
PHP et BD
• Récupérer les données
• Pour récupérer les données depuis la BD on doit
effectuer des requêtes « SQL » .
• On va demander à MySQL de nous dire tout ce
que contient la table « news ».
• Pour récupérer des informations de la base de
données, nous avons besoin de notre objet
représentant la connexion à la base. « $bdd ».
$reponse = $bdd->query('Tapez votre requête SQL ici');
PHP et BD
• Récupérer les données
• Pour récupérer les données avec SQL on utilise la
requête suivante :
<?php
include("[Link]");
$sql = "SELECT * FROM news";
$reponse = $bdd->query($sql);
?>
PHP et BD
• Récupérer les données
• Pour récupérer les données avec SQL on utilise la
requête suivante :
$sql = "SELECT * FROM news";
<?php
$stmt = $bdd->prepare($sql); // Préparer la requête
$stmt->execute(); // Exécuter la requête
?>
PHP et BD
• Afficher les résultats d’une requête
• Pour récupérer les entrées, on prend la réponse
de MySQL et on y exécute fetchAll(), ce qui nous
renvoie la première ligne.
$reponse = $bdd->query('SELECT * FROM news');
$donnees = $reponse->fetchAll();
PHP et BD
• Afficher les résultats d’une requête
$reponse = $bdd->query('SELECT * FROM news');
$data= $reponse->fetch();
while ($data)
{
echo $data['id'];
echo $data[‘titre'];
echo $data[‘contenu'];
}
$reponse->closeCursor();
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « WHERE »
$reponse = $bdd->query('SELECT * FROM news where cotenu like
‘football’');
while ($donnees = $reponse->fetchAll())
{
echo $donnees['id'];
echo $donnees[‘titre'];
echo $donnees[‘contenu'];
}
$reponse->closeCursor();
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « WHERE »
$sql = 'SELECT * FROM news WHERE contenu LIKE :keyword';
// Préparer la requête
$stmt = $bdd->prepare($sql);
// Remplacer le paramètre par la valeur réelle
$keyword = '%football%';
$stmt->bindParam(':keyword', $keyword);
// Exécuter la requête
$stmt->execute();
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « WHERE »
// Requête SQL avec un paramètre à remplacer
$sql = 'SELECT * FROM news WHERE contenu LIKE :keyword';
// Préparer la requête
$stmt = $bdd->prepare($sql);
// Remplacer le paramètre par la valeur réelle
$keyword = '%football%';
$stmt->bindValue(':keyword', $keyword);
// Exécuter la requête
$stmt->execute();
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « WHERE »
$sql = 'SELECT * FROM example WHERE id = ?';
// Préparer la requête
$stmt = $bdd->prepare($sql);
// Valeur à lier au marqueur de position
$valeur = 42;
// Exécuter la requête en passant la valeur en tant que tableau
d'arguments à execute
$stmt->execute([$valeur]);
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « ORDER BY »
$reponse = $bdd->query('SELECT * FROM news order by id’');
while ($donnees = $reponse->fetch())
{
echo $donnees['id'];
echo $donnees[‘titre'];
echo $donnees[‘contenu'];
}
$reponse->closeCursor();
PHP et BD
• Afficher les résultats d’une requête ‘Les
critères de sélection’ « LIMIT »
$reponse = $bdd->query('SELECT * FROM news limit 1,10');
while ($donnees = $reponse->fetch())
{
echo $donnees['id'];
echo $donnees[‘titre'];
echo $donnees[‘contenu'];
}
$reponse->closeCursor();
PHP et BD
• En Résumé:
• Pour interroger MySQL depuis PHP, on fait appel à l'extension PDO de PHP.
• Avant d’interroger MySQL, il faut se connecter. On a besoin de l'adresse IP
de la machine où se trouve MySQL, du nom de la base de données ainsi que
d'un login et d'un mot de passe.
• Les requêtes SQL commençant par SELECT permettent de récupérer des
informations dans une base de données.
• Il faut faire une boucle en PHP pour récupérer ligne par ligne les données
renvoyées par MySQL.
• Le langage SQL propose de nombreux outils pour préciser nos requêtes, à
l'aide notamment des mots-clés WHERE (filtre), ORDER BY (tri)
et LIMIT (limitation du nombre de résultats).
• Pour construire une requête en fonction de la valeur d'une variable, on passe
par un système de requête préparée qui permet d'éviter les dangereuses
failles d'injection SQL
PHP et BD
• Insertion dans la BD depuis PHP
• La requête INSERT INTO permet d'ajouter une entrée
• Pour rajouter une entrée, vous aurez besoin de connaître
la requête SQL. En voici une par exemple qui ajoute une
news :
• INSERT INTO news VALUES(‘barca vs real‘,’le
classico ce week end qui va gagner !!!’)
PHP et BD
• Insertion dans la BD depuis PHP
$bdd->exec(INSERT INTO news
VALUES(‘barca vs real‘,’le classico ce week
end qui va gagner !!!’) ');
PHP et BD
• Insertion de données variables grâce à une
requête préparée
$titre=‘barca vs real’
$contenu=‘le classico ce week end qui va gagner !!!’
$sql = 'INSERT INTO news (titre, contenu) VALUES (?, ?)';
// Préparer la requête
$req = $bdd->prepare($sql);
// Exécuter la requête en passant les valeurs en tant que tableau
d'arguments à execute
$req->execute([$titre, $contenu]);
PHP et BD
• Insertion de données variables grâce à une
requête préparée
$titre=‘barca vs real’
$contenu=‘le classico ce week end qui va gagner !!!’
$sql = 'INSERT INTO news (titre, contenu) VALUES (:titre,
:contenu)';
// Préparer la requête
$req = $bdd->prepare($sql);
// Lier les paramètres avec bindParam
$req->bindParam(':titre', $titre);
$req->bindParam(':contenu', $contenu);
// Exécuter la requête
$req->execute();
PHP et BD
• Insertion de données variables grâce à une
requête préparée
$titre=‘barca vs real’
$contenu=‘le classico ce week end qui va gagner !!!’
$sql = 'INSERT INTO news (titre, contenu) VALUES (:titre,
:contenu)';
// Préparer la requête
$req = $bdd->prepare($sql);
// Lier les paramètres avec bindParam
$req->bindValue(':titre', $titre);
$req->bindValue(':contenu', $contenu);
// Exécuter la requête
$req->execute();
PHP et BD
• UPDATE : modifier des données
• La requête UPDATE permet de modifier une
entrée
• Avec une requête SQL « update », on peut
modifier des enregistrement dans la BD. En effet,
en utilisant UPDATE vous allez pouvoir modifier
l'entrée que vous voulez :
• UPDATE news SET titre=‘fc barcelona vs real madrid’,
contenu=‘barca 5-0 real madrid’ WHERE ID = 3
PHP et BD
• UPDATE : modifier des données sous ‘PHP’
• De la même manière, en PHP on fait appel à exec() pour effectuer
des modifications :
• $bdd->exec (''UPDATE news SET titre=‘fc barcelona vs real
madrid’, contenu=‘barca 5-0 real madrid’ WHERE ID = 3'');
• $titre=‘fc barcelona vs real madrid’
• $contenu=‘barca 5-0 real madrid’
• $bdd->exec (''UPDATE news SET titre=‘$titre’,
contenu=‘$contenu’ WHERE ID = 3'');
PHP et BD
• UPDATE : modifier des données sous ‘PHP’
• De la même manière, en PHP on fait appel à exec() pour effectuer des
modifications :
// Requête SQL UPDATE avec des marqueurs de position
$sql = 'UPDATE news SET titre = ?, contenu = ? WHERE id = ?';
// Préparer la requête
$req = $bdd->prepare($sql);
// Exécuter la requête en passant les valeurs en tant que tableau
d'arguments à execute
$req->execute([$titre, $contenu, $id]);
PHP et BD
• UPDATE : modifier des données sous ‘PHP’
• De la même manière, en PHP on fait appel à exec() pour effectuer des
modifications :
// Requête SQL UPDATE avec bindParam
$sql = 'UPDATE news SET titre = :titre, contenu = :contenu WHERE id = :id';
// Préparer la requête
$req = $bdd->prepare($sql);
// Lier les paramètres avec bindParam
$req->bindParam(':titre', $titre);
$req->bindParam(':contenu', $contenu);
$req->bindParam(':id', $id);
// Exécuter la requête
$req->execute();
PHP et BD
• UPDATE : modifier des données sous ‘PHP’
• De la même manière, en PHP on fait appel à exec() pour effectuer des
modifications :
// Requête SQL UPDATE avec bindValue
$sql = 'UPDATE news SET titre = :titre, contenu = :contenu WHERE id = :id';
// Préparer la requête
$req = $bdd->prepare($sql);
// Lier les paramètres avec bindValue
$req->bindValue(':titre', $titre);
$req->bindValue(':contenu', $contenu);
$req->bindValue(':id', $id);
// Exécuter la requête
$req->execute();
PHP et BD
• DELETE : supprime les données sous ‘PHP’
$sql = "DELETE FROM news WHERE id = 1";
$id= 1;
$rowCount = $bdd->exec($sql);
$sql = 'DELETE FROM news WHERE id = :id';
$stmt = $bdd->prepare($sql);
$stmt->bindValue(':id', $id);
$stmt->execute(); $sql = 'DELETE FROM news WHERE id = ?';
$stmt = $bdd->prepare($sql);
$stmt->execute([$idToDelete]);
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
PHP et BD
• En résumé
• On utilise différents mots-clés en fonction du type de
modification que l'on souhaite effectuer :
• INSERT INTO : ajout d'une entrée ;
• UPDATE : modification d'une ou plusieurs entrées ;
• DELETE : suppression d'une ou plusieurs entrées.
• Comme pour la sélection de données, on utilise les
requêtes préparées pour personnaliser nos requêtes en
fonction de variables.
• Lorsqu'on utilise UPDATE ou DELETE, il faut penser à
filtrer avec un WHERE sinon toute la table sera affectée
par l'opération !