SlideShare une entreprise Scribd logo
Langage PHP 
les fondamentaux 
M. DIENG Abdoulaye Juillet 2014
Objectif général 
Acquérir les compétences nécessaires pour 
développer des sites Web dynamiques.
Objectifs opérationnels 
 Stocker et utiliser des données à l’aide des variables 
et des opérateurs. 
 Manipuler des tableaux et des chaînes de caractères. 
 Contrôler le flux d’exécution des instructions. 
 Définir et utiliser des fonctions. 
 Transférer des données. 
 Interfacer PHP avec MySQL.
Le Sommaire 
1. Présentation de PHP. 
2. Principe de 
fonctionnement. 
3. Exemple introductif. 
4. Les types de base. 
5. Les constantes. 
6. Les tableaux. 
7. Les opérateurs. 
8. Les structures de contrôle. 
9. Les fonctions. 
10. Le transfert de données. 
11. La gestion de sessions 
12. PHP ↔ MySQL.
Présentation de PHP 
 PHP est un langage de script exécuté du côté serveur et utilisé 
essentiellement pour créer des pages Web dynamiques. 
 A la différence des pages statiques, les pages dynamiques 
doivent s'adapter (besoin de l'heure, accès à des bases de 
données, réponse personnalisée, traitement de formulaire, etc.).
Principe de fonctionnement 
1. Requête de données. 
2. Activation du moteur PHP. 
3. Connexion au serveur BDD. 
4. Extraction des données. 
5. Formatage en HTML. 
6. Réponse. 
2 
4 
3 
6 
5 
1 
serveur BDD 
moteur PHP 
serveur Web 
client Web
Exemple introductif 
<? 
/* la variable titre stocke le 
titre du script */ 
$titre = ' Script introductif ' 
?> 
<html> 
<head> 
<?php 
# affiche le titre de la page 
echo (" <title> $titre </title>") 
?> 
</head> 
<body> 
<% 
// affiche le contenu de la page 
echo ('Hello, world !'); 
%> 
</body> 
</html> 
Les syntaxes d’intégration : 
• <?php … ?> 
• <? … ?> : à activer via short_open_tag 
• <% … %>: à activer via asp_tags 
Les commentaires: 
• // ou # : une seule ligne. 
• /* … */ : plusieurs lignes. 
Les variables sont précédées du signe $. 
La variable est "déclarée" à son utilisation. 
La valeur qui lui est affectée détermine son type. 
echo affiche une chaîne de caractères : 
• telle quelle, si ' … ' est utilisés ; 
• en interprétant les variables, sinon. 
Toute instruction se termine par (;) sauf si elle est 
suivie de ?>.
Types de base 
numériques et booléen 
 Type entier: 
• un entier ou integer représente un entier relatif (32 bits) 
• généralement entre –2 147 843 648 et 2 147 843 647 
 Type réel: 
• Un réel ou double représente un nombre à virgule. 
• de -1,7e308 à 1,7e308 avec 14 chiffres après la virgule. 
 Type booléen: 
• exprime la valeur TRUE ou la valeur FALSE 
• seuls les constantes FALSE et NULL, les nombres 0 et 0.0, les 
chaînes "0" et vide, le tableau vide et l’objet vide valent FALSE. 
• TRUE convertit en entier donne 1 et FALSE donne 0 
• TRUE convertit en chaine donne "1" et false donne ""
Types de base 
chaîne de caractères 
 Une string représente une suite de caractères. 
 Il y a 256 caractères, mais une string est illimitée. 
 Une constante string est délimitée par des guillemets ( ' ou " ). 
 Les guillemets doubles permettent d’interpréter d’éventuels 
caractères d’action ou variables présents dans la chaîne qu’ils 
délimitent. 
 l’anti-slash () permet d’échapper ou de déspécialiser les 
caractères (', ", , $). 
App1
Types de base 
quelques fonctions 
 gettype($var) : retourne le type de $var. 
 settype($var, "type_désiré") : renvoie true si le type de $var est 
modifiée. 
 intval($var), doubleval($var), strval($var) : permettent de 
convertir. 
 is_string($var), is_bool($var), is_int($var), is_double($var), 
is_numeric($var), is_array($var) : permettent de tester un type. 
 isset($var) : renvoie false si $var n’est pas initialisée ou vaut 
NULL. 
 empty($var) : renvoie true si $var n’est pas initialisée ou vaut 
NULL, 0, 0.0, "" ou "0". 
 unset($var) : détruit la variable $var.
Types de base 
quelques fonctions sur les strings 
 strlen($str) : renvoie la longueur de $str. 
 strcmp($str1, $str2): compare alphabétiquement $str1 et $str2. 
 trim($str): supprime des espaces de début et de fin de chaîne. 
 addslashes($str): déspécialise les caractères (', ", ). 
 stripslashes($str): supprime les antislashs. 
 substr($str,$i,$j) : retourne une sous chaîne de $str de taille $j et 
débutant à la position $i. 
 explode ($sep , $str) 
retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne 
du paramètre $str extraite en utilisant le séparateur $sep.
Notion de constante 
 Une constante est un identificateur qui représente une valeur 
restant inchangée durant l’exécution d’un script. 
 Cet identificateur est en majuscules (fortement recommandé) 
et n’est pas préfixée par $. 
 Syntaxe de définition d’une constante : 
define("NOM_CTE", val_cte); 
 Exemple : define ("TVA", 0.18); 
 Une constante ne doit pas être redéfinie.
Tableaux 
présentation 
 Un tableau est un regroupement de données de types distincts 
ou non, désignées par un identificateur unique. 
 Chaque donnée est repérée par une clé (ou indice) de type entier 
positif ou de type string. 
 Syntaxe de création d’un tableau numéroté : 
$nomTab=array(valeur1,valeur2,valeur3,...) 
 Syntaxe de création d’un tableau associatif : 
$nomTab=array(cle1=>valeur1, cle2=>valeur2,...) 
 Syntaxe d’accès à un élément : 
$nomTab[cle] 
App2
Tableaux 
quelques fonctions 
 reset($tab) : déplace le pointeur de $tab au début et retourne la 
première valeur de celui-ci. 
 count($tab) : retourne le nombre d’élément d’un tableau. 
 each($tab) : retourne le couple clé/valeur courant. 
 extract($tab) : reçoit un tableau associatif $tab et crée des 
variables dont les noms sont les clés de $tab, et leur affecte les 
valeurs associées. 
 list($var1, $var2, …): assigne une liste de variables en une seule 
instruction. 
 sort($tab) et rsort($tab) : la première permet le tri alphanumérique 
des éléments de $tab, et le second fait l’inverse. 
 array_merge($tab1, $tab2, …): concatène les tableaux passés en 
argument.
Opérateurs 
 Opérateurs arithmétiques 
+, -, *, /, % (modulo), ++(incrément), --(décrément) 
 Opérateurs d’assignation 
= (affectation), += (ajouter à), *=, /=, -=, %= 
 Opérateurs de comparaison 
== (égalité), <, <=, >, >=, != 
 Opérateurs logiques 
AND, && (et), OR, || (ou), ! (non) 
 Opérateur de concaténation 
Noté par un point (.), il « fusionne » deux strings App3
Structures conditionnelles 
Elles permettent d'exécuter un traitement en fonction d’une (ou 
de plusieurs) condition(s). 
 if (condition_1) 
{traitement_1} 
[else 
{traitement_2}] 
 if (condition_1) 
{traitement_1} 
elseif (condition_2) 
{traitement_2} 
… // suite de elseif 
else 
{traitement_n}
Structures itératives 
Elles permettent la répétition d’un traitement en fonction d’une condition. 
 while(condition) { traitement } 
 do { traitement } while(condition); 
 for (exp1 ; condition ; exp2 ) { traitement } 
 foreach ($tableau as $valeur){traitement} 
 foreach ($tableau as $cle => $valeur) 
{traitement} 
App4&5
Fonctions 
syntaxe 
 Syntaxe de la définition d’une fonction 
function nomDeLaFonction( [arg_1[, arg_2, …] ]) 
{ 
corpsDeLaFonction 
} 
 Un argument (ou paramètre) permet à la fonction de 
communiquer avec son environnement. 
 return dans le corps de la fonction lui permet de retourner une 
valeur résultat. 
 A défaut de return, une fonction peut utiliser un argument 
pour renvoyer une valeur.
Fonctions 
rappel sur les paramètres 
 La communication entre la fonction appelée et le code 
appelant se fait par l'intermédiaire de variables particulières et 
locales à la fonction appelée que l’on nomme paramètres 
formels. 
 Lors de l’appel, tout paramètre formel est associé à une 
variable ou constante de même type nommée paramètre 
effectif. 
 Il existe deux types d'association ou de passage de paramètre : 
• passage par valeur : 
oCopie de la valeur du param eff dans le param formel 
oLa fonction accède au param eff uniquement en lecture 
• passage par référence : 
oLe param eff et le param formel « se confondent » 
oLa fonction accède au param eff en lecture et en 
App6
Transfert de données 
donnée interne transmise d’une page à une autre 
 L’URL (Uniform Ressource Location ou adresse) d’une page 
permet le transfert de données d’une page à une autre 
 Ajouter à l’URL le caractère ? suivi des couples nom/valeur des 
données à transférer. Séparer les couples par le caractère &. 
 Exemple : 
<a href="page2.php?id=3&montant=10000"> 
Aller à la page 2 en transmettant l’identifiant du client et le 
montant de sa commande 
</a> 
 La page2 accède aux données transmises par le biais du tableau 
associatif $_GET. 
Exemple : echo $_GET['montant']; // affiche 10000 
App7
Transfert de données 
données transmises via formulaire 
 Principaux attributs de l’élément form : 
• action="adresse_script_cible" 
script côté serveur qui traitera les données du formulaire. 
• method="get|post" 
méthode HTTP employée pour envoyer les données 
 Tout champ du formulaire doit avoir un nom 
• Attribut name="nomChamp" 
• Choix multiple : name="nomChamp[]" 
 Le script cible accède aux données transmises comme suit : 
• $_GET['nomChamp'] si method="get" 
• $_POST['nomChamp'] si method="post" 
• $_REQUEST['App8&9 nomChamp'] dans tous les cas
Transfert de données 
fichier uploadé via formulaire 
 Pour joindre un fichier à un formulaire : 
• attribut enctype="multipart/form-data" de l’élément form 
• méthode d’envoi : post 
• champ input de type file muni de l’attr name="nomChamp" 
 Le script destinataire accède aux infos (nom, type, taille, … ) sur 
un fichier joint par le biais du tableau super global 
$_FILES['nomChamp']. 
 Tout fichier uploadé est placé dans un répertoire temporaire 
 move_uploaded_file($nom_temporaire,$nom_definitif) 
déplace un fichier uploadé et retourne un booléen. 
App10
Gestion de sessions 
présentation 
 La gestion d’une session permet d'enregistrer (côté serveur) des 
infos sur un internaute afin de les réutiliser durant toute sa visite. 
 Ces informations doivent être explicitement enregistrées dans le 
tableau associatif $_SESSION. 
 Ce qui permet ainsi de suivre un internaute de page en page, de 
sauvegarder un caddie, de sécuriser un site, etc. 
 Tout visiteur se voit assigner un "identifiant de session" 
permettant de retrouver des informations sur lui. 
 Cet identifiant est stocké dans un cookie (chez le client) ou 
propagé dans l'URL des pages visitées (méthode à risques). 
 Dans les versions récentes de PHP, réactiver la propagation par 
l’URL en modifiant, dans le fichier php.ini, les directives : 
• session.use_only_cookies = 0 
• session.use_trans_sid = 1 
 Une session doit obligatoirement démarrer avant l’envoi de toute 
information au navigateur.
Gestion de sessions 
exemple 
 Stockage d’une information dans une variable 
$total = 35000; // Montant d’une commande par exemple 
 Création ou prolongement d’une session 
session_start(); 
 Enregistrement de la variable ‘total’ dans la session 
$_SESSION[‘total’] = $total ; 
 Test de l’enregistrement de la variable ‘total’ dans la session 
if ( isset( ($_SESSION[‘total']) ) 
 Affichage de l’information (dans une autre page) 
echo $_SESSION[‘total’]; 
 Suppression de la variable de session associée à ‘total’ 
unset($_SESSION[‘total']); 
 Destruction de toutes les variables de session 
$_SESSION = array(); // Tableau vide 
 Destruction de la session 
session_destroy(); App11
PHP ↔ MySQL 
présentation de MySQL 
 Le SGBDR (Système de Gestion de Bases de données 
Relationnelles) open source le plus utilisé sur le Web. 
 Logiciel permettant de créer des bases de données, de les 
exploiter (en y effectuant notamment des recherches des 
modifications ou des tris) et de contrôler l’accès aux données. 
 Ses principaux concurrents sont PostgreSQL, Microsoft SQL 
Server, DB2 et Oracle mais ses atouts majeurs sont : 
 performances élevées ; 
 coût réduit ; 
 simplicité de configuration et d’apprentissage ; 
 portabilité ; 
 accessibilité du code source ; 
 disponibilité du support (www.mysql.com).
PHP ↔ MySQL 
étapes de la communication 
Pour que PHP travaille avec MySQL, il faut une : 
1. connexion au serveur 
 authentification 
 création d'un objet ou d’un identifiant 
1. sélection d’une base de données 
2. utilisation des tables 
 Lecture 
 écriture 
4. déconnexion du serveur 
(facultative si la connexion et non persistante) 
NB : Dans ce cours, l’extension mysqli (i pour improved çàd 
amélioré) est choisie du fait d’une forte recommandation du 
« The PHP group ».
PHP ↔ MySQL 
Connexion/Déconnexion 
• Connexion à l’aide du constructeur de la classe mysqli qui reçoit 
les 4 chaînes : $serveur, $user, $passwd et $dbname. 
• Retourne, en cas de succès, un objet qui représente la 
connexion au serveur MySQL. 
• Il est recommandé de vérifier la réussite de la connexion via 
l’attribut mysqli::$connect_error. 
• Pour une connexion persistante, préfixer l’adresse IP ou le nom 
du serveur par p: . 
• La déconnexion se fait soit automatiquement à la fin de 
l'exécution du script (si la connexion n’est pas persistante), soit 
explicitement en appelant la méthode : 
bool mysqli::close ( void )
PHP ↔ MySQL 
Connexion/Déconnexion : exemple 
//Définition des paramètres de connexion 
define('SERVER','localhost'); 
define('USER','toto'); 
define('PASSWD','secret'); 
define('DBNAME','mabdd'); 
//Connexion 
$cnx = new mysqli(SERVER, USER, PASSWD,DBNAME) or 
die('Erreur de connexion : ' . $cnx->connect_error); 
… 
//Déconnexion explicite 
$cnx->close(); 
App12
PHP ↔ MySQL 
exécution d’une requête de lecture ou d’écriture 
mixed mysqli::query (string $req) 
 Invoquer sur un objet mysqli 
 Reçoit $req, une requête écrite en SQL 
 Retourne un jeu de résultats ou objet mysqli_result pour une 
requête select. 
 Retourne TRUE pour les requêtes insert, update et delete. 
 retourne FALSE en cas d’échec de n’importe quelle requête. 
 Il est recommandé de vérifier la réussite de l’exécution de la 
requête via l’attribut mysqli::$error.
PHP ↔ MySQL 
exploitation d’une select via tableau associatif 
mixed mysqli_result::fetch_assoc( ) 
 Invoquer sur un objet mysqli_result 
 Retourne une ligne de ce résultat sous la forme d’un tableau 
associatif dont les clés sont les noms des attributs (de la clause 
SELECT) et leurs valeurs associées étant leurs valeurs ds la BDD ; 
 Chaque nouvel appel à fetch_assoc() retournera la prochaine 
ligne dans le jeu de résultats, ou NULL s'il n'y a plus de lignes. 
Exemple : consultation sur la table membres(id, nom, prenom) 
$liste= $cnx->query("select prenom, nom from membres"); 
while($ligne = $liste->fetch_assoc() ){ 
echo 'Prenom :'.$ligne['prenom'].' Nom : '.$ligne['nom'].'<br />'; 
}
PHP ↔ MySQL 
exploitation d’une select via objet 
mixed mysqli_result::fetch_object( ) 
 Invoquer sur un objet mysqli_result 
 Retourne une ligne de ce résultat sous la forme d’un objet dont 
les attributs sont les noms des attributs (de la clause SELECT) et 
leurs valeurs associées étant leurs valeurs dans la BDD ; 
 Chaque nouvel appel à fetch_object() retournera la prochaine 
ligne dans le jeu de résultats, ou NULL s'il n'y a plus de lignes. 
Exemple : consultation sur la table membres(id, nom, prenom) 
$liste= $cnx-> query("select prenom, nom from membres"); 
while($ligne = $liste->fetch_object() ){ 
echo 'Prenom :'.$ligne->prenom.' Nom: '.$ligne->nom.'<br />'; 
} 
App13
PHP ↔ MySQL 
autres méthodes 
 mysqli_result::free_result() 
Libère la mémoire associée à l'objet mysqli_result. 
 mysqli::$insert_id 
retourne le dernier identifiant généré par un champs de type 
AUTO_INCREMENT. 
 mysqli_result::$num_rows 
retourne le nombre de lignes d'un résultat d’une SELECT. 
 mysqli_stmt::$affected_rows 
retourne le nombre de lignes affectées par la dernière requête 
INSERT, UPDATE ou DELETE. 
 string mysqli::real_escape_string($chaine_a_echapper) 
ajoute un slash à tout caractère spécial de la chaîne à échapper. 
Cette fonction doit toujours (avec quelques exceptions) être 
utilisée pour protéger les données à insérer dans la BDD. 
App14

Contenu connexe

Tendances

Cours php
Cours php Cours php
Cours php
Yassine Badri
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
L’Université Hassan 1er Settat
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
webreaker
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
NadaBenLatifa
 
Les collections en Java
Les collections en JavaLes collections en Java
Les collections en Java
Papa Cheikh Cisse
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
Lilia Sfaxi
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
Amir Souissi
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
Mariem ZAOUALI
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
vangogue
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
Haytam EL YOUSSFI
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
Lilia Sfaxi
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
Abdoulaye Dieng
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
Mouna Torjmen
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
kemenaran
 
Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18
Wael Ismail
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
Ines Ouaz
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
Yassine Badri
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
IbtissameAbbad1
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
L’Université Hassan 1er Settat
 

Tendances (20)

Cours php
Cours php Cours php
Cours php
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Les collections en Java
Les collections en JavaLes collections en Java
Les collections en Java
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 

En vedette

Atelier école : recherche d'information, ressources et outils collaboratifs
Atelier école : recherche d'information, ressources et outils collaboratifsAtelier école : recherche d'information, ressources et outils collaboratifs
Atelier école : recherche d'information, ressources et outils collaboratifs
chauvinclo
 
Clase2 metodos exacavacion_1
Clase2 metodos exacavacion_1Clase2 metodos exacavacion_1
Clase2 metodos exacavacion_1
Jorge Lujan
 
Wcms 154234
Wcms 154234Wcms 154234
Wcms 154234
mohammedbensaid
 
8vo lenguaje
8vo lenguaje8vo lenguaje
8vo lenguaje
Olga GoNzAleZ
 
Plaquette de la plateforme Deucalion
Plaquette de la plateforme DeucalionPlaquette de la plateforme Deucalion
Plaquette de la plateforme Deucalion
Stéphane Gasser
 
Présentation is power point
Présentation is power pointPrésentation is power point
Présentation is power point
0dboss0
 
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANODECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
Rafa Valdivia
 
Plaquette de presentation green roof
Plaquette de presentation green roofPlaquette de presentation green roof
Plaquette de presentation green roofdemellethomas
 
Portafolio unidad 3
Portafolio unidad 3Portafolio unidad 3
Portafolio unidad 3
Bellanith Aguilar Vásquez
 
À la découverte du bilan électrique 2013 de nos régions
À la découverte du bilan électrique 2013 de nos régionsÀ la découverte du bilan électrique 2013 de nos régions
À la découverte du bilan électrique 2013 de nos régions
RTE
 
Le fils de l'autre
Le fils de l'autreLe fils de l'autre
Le fils de l'autreTxaruka
 
Sites de réseautage social, un petit monde où la confiance est aveugle
Sites de réseautage social, un petit monde où la confiance est aveugleSites de réseautage social, un petit monde où la confiance est aveugle
Sites de réseautage social, un petit monde où la confiance est aveugle
ISACA Chapitre de Québec
 
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
Anact
 
Diaporama livret-personnel-de-competences
Diaporama livret-personnel-de-competencesDiaporama livret-personnel-de-competences
Diaporama livret-personnel-de-competencesFranck Dupont
 
Cpp2
Cpp2Cpp2
Tutorial slideshare
Tutorial slideshareTutorial slideshare
Tutorial slideshare
Dani Torres
 
Vandenyno bangos
Vandenyno bangosVandenyno bangos
Vandenyno bangosSofija J.
 
resumen
 resumen resumen
resumen
Naty Albin
 

En vedette (20)

Atelier école : recherche d'information, ressources et outils collaboratifs
Atelier école : recherche d'information, ressources et outils collaboratifsAtelier école : recherche d'information, ressources et outils collaboratifs
Atelier école : recherche d'information, ressources et outils collaboratifs
 
Clase2 metodos exacavacion_1
Clase2 metodos exacavacion_1Clase2 metodos exacavacion_1
Clase2 metodos exacavacion_1
 
Wcms 154234
Wcms 154234Wcms 154234
Wcms 154234
 
8vo lenguaje
8vo lenguaje8vo lenguaje
8vo lenguaje
 
Plaquette de la plateforme Deucalion
Plaquette de la plateforme DeucalionPlaquette de la plateforme Deucalion
Plaquette de la plateforme Deucalion
 
Présentation is power point
Présentation is power pointPrésentation is power point
Présentation is power point
 
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANODECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
DECLARACIÓN DE BIENES Y DE LA RENTA DE MANOLO LOZANO
 
Plaquette de presentation green roof
Plaquette de presentation green roofPlaquette de presentation green roof
Plaquette de presentation green roof
 
Articles
ArticlesArticles
Articles
 
Portafolio unidad 3
Portafolio unidad 3Portafolio unidad 3
Portafolio unidad 3
 
À la découverte du bilan électrique 2013 de nos régions
À la découverte du bilan électrique 2013 de nos régionsÀ la découverte du bilan électrique 2013 de nos régions
À la découverte du bilan électrique 2013 de nos régions
 
Le fils de l'autre
Le fils de l'autreLe fils de l'autre
Le fils de l'autre
 
Sites de réseautage social, un petit monde où la confiance est aveugle
Sites de réseautage social, un petit monde où la confiance est aveugleSites de réseautage social, un petit monde où la confiance est aveugle
Sites de réseautage social, un petit monde où la confiance est aveugle
 
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
Parcours professionnels : vers une mise en oeuvre opérationnelle - Bruggeman ...
 
Diaporama livret-personnel-de-competences
Diaporama livret-personnel-de-competencesDiaporama livret-personnel-de-competences
Diaporama livret-personnel-de-competences
 
Cpp2
Cpp2Cpp2
Cpp2
 
Jobb french
Jobb frenchJobb french
Jobb french
 
Tutorial slideshare
Tutorial slideshareTutorial slideshare
Tutorial slideshare
 
Vandenyno bangos
Vandenyno bangosVandenyno bangos
Vandenyno bangos
 
resumen
 resumen resumen
resumen
 

Similaire à .php1 : les fondamentaux du PHP

Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
YasushiTsubakik
 
Php1
Php1Php1
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.ppt
AmineReal
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
Club Scientifique de l'ESI - CSE
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
EL JAOUARI Ahmed
 
Php cours
Php coursPhp cours
Php cours
funinformatique
 
introJavaScript.ppt
introJavaScript.pptintroJavaScript.ppt
introJavaScript.ppt
MarwenJAZI
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascript
Abdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
Abdoulaye Dieng
 
PHP - get started
PHP - get startedPHP - get started
PHP - get startedmazenovi
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
Abdoulaye Dieng
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
HamdiBaklouti
 
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkrCours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
JulienKhalil3
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
Cours php
Cours phpCours php
Cours php
csskaled
 
Algorithmique&Langage C-Partie1 BTS.pptx
Algorithmique&Langage C-Partie1 BTS.pptxAlgorithmique&Langage C-Partie1 BTS.pptx
Algorithmique&Langage C-Partie1 BTS.pptx
Facebokma
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academy
Soufiane SAHMI
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
Régis Lutter
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
Olivier Pinette
 

Similaire à .php1 : les fondamentaux du PHP (20)

Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
 
Php1
Php1Php1
Php1
 
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.ppt
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
introJavaScript.ppt
introJavaScript.pptintroJavaScript.ppt
introJavaScript.ppt
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascript
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
PHP - get started
PHP - get startedPHP - get started
PHP - get started
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkrCours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
Cours_Java. Skzozibb nsif keizijfbjzozzml keiei tjeiz9rkr
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 
Cours php
Cours phpCours php
Cours php
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
Algorithmique&Langage C-Partie1 BTS.pptx
Algorithmique&Langage C-Partie1 BTS.pptxAlgorithmique&Langage C-Partie1 BTS.pptx
Algorithmique&Langage C-Partie1 BTS.pptx
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academy
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
 

Plus de Abdoulaye Dieng

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Abdoulaye Dieng
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
Abdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
Abdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
Abdoulaye Dieng
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
Abdoulaye Dieng
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
Abdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
Abdoulaye Dieng
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
Abdoulaye Dieng
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
Abdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
Abdoulaye Dieng
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
Abdoulaye Dieng
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
Abdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
Abdoulaye Dieng
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
Abdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
Abdoulaye Dieng
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
Abdoulaye Dieng
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
Abdoulaye Dieng
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
Abdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 

.php1 : les fondamentaux du PHP

  • 1. Langage PHP les fondamentaux M. DIENG Abdoulaye Juillet 2014
  • 2. Objectif général Acquérir les compétences nécessaires pour développer des sites Web dynamiques.
  • 3. Objectifs opérationnels  Stocker et utiliser des données à l’aide des variables et des opérateurs.  Manipuler des tableaux et des chaînes de caractères.  Contrôler le flux d’exécution des instructions.  Définir et utiliser des fonctions.  Transférer des données.  Interfacer PHP avec MySQL.
  • 4. Le Sommaire 1. Présentation de PHP. 2. Principe de fonctionnement. 3. Exemple introductif. 4. Les types de base. 5. Les constantes. 6. Les tableaux. 7. Les opérateurs. 8. Les structures de contrôle. 9. Les fonctions. 10. Le transfert de données. 11. La gestion de sessions 12. PHP ↔ MySQL.
  • 5. Présentation de PHP  PHP est un langage de script exécuté du côté serveur et utilisé essentiellement pour créer des pages Web dynamiques.  A la différence des pages statiques, les pages dynamiques doivent s'adapter (besoin de l'heure, accès à des bases de données, réponse personnalisée, traitement de formulaire, etc.).
  • 6. Principe de fonctionnement 1. Requête de données. 2. Activation du moteur PHP. 3. Connexion au serveur BDD. 4. Extraction des données. 5. Formatage en HTML. 6. Réponse. 2 4 3 6 5 1 serveur BDD moteur PHP serveur Web client Web
  • 7. Exemple introductif <? /* la variable titre stocke le titre du script */ $titre = ' Script introductif ' ?> <html> <head> <?php # affiche le titre de la page echo (" <title> $titre </title>") ?> </head> <body> <% // affiche le contenu de la page echo ('Hello, world !'); %> </body> </html> Les syntaxes d’intégration : • <?php … ?> • <? … ?> : à activer via short_open_tag • <% … %>: à activer via asp_tags Les commentaires: • // ou # : une seule ligne. • /* … */ : plusieurs lignes. Les variables sont précédées du signe $. La variable est "déclarée" à son utilisation. La valeur qui lui est affectée détermine son type. echo affiche une chaîne de caractères : • telle quelle, si ' … ' est utilisés ; • en interprétant les variables, sinon. Toute instruction se termine par (;) sauf si elle est suivie de ?>.
  • 8. Types de base numériques et booléen  Type entier: • un entier ou integer représente un entier relatif (32 bits) • généralement entre –2 147 843 648 et 2 147 843 647  Type réel: • Un réel ou double représente un nombre à virgule. • de -1,7e308 à 1,7e308 avec 14 chiffres après la virgule.  Type booléen: • exprime la valeur TRUE ou la valeur FALSE • seuls les constantes FALSE et NULL, les nombres 0 et 0.0, les chaînes "0" et vide, le tableau vide et l’objet vide valent FALSE. • TRUE convertit en entier donne 1 et FALSE donne 0 • TRUE convertit en chaine donne "1" et false donne ""
  • 9. Types de base chaîne de caractères  Une string représente une suite de caractères.  Il y a 256 caractères, mais une string est illimitée.  Une constante string est délimitée par des guillemets ( ' ou " ).  Les guillemets doubles permettent d’interpréter d’éventuels caractères d’action ou variables présents dans la chaîne qu’ils délimitent.  l’anti-slash () permet d’échapper ou de déspécialiser les caractères (', ", , $). App1
  • 10. Types de base quelques fonctions  gettype($var) : retourne le type de $var.  settype($var, "type_désiré") : renvoie true si le type de $var est modifiée.  intval($var), doubleval($var), strval($var) : permettent de convertir.  is_string($var), is_bool($var), is_int($var), is_double($var), is_numeric($var), is_array($var) : permettent de tester un type.  isset($var) : renvoie false si $var n’est pas initialisée ou vaut NULL.  empty($var) : renvoie true si $var n’est pas initialisée ou vaut NULL, 0, 0.0, "" ou "0".  unset($var) : détruit la variable $var.
  • 11. Types de base quelques fonctions sur les strings  strlen($str) : renvoie la longueur de $str.  strcmp($str1, $str2): compare alphabétiquement $str1 et $str2.  trim($str): supprime des espaces de début et de fin de chaîne.  addslashes($str): déspécialise les caractères (', ", ).  stripslashes($str): supprime les antislashs.  substr($str,$i,$j) : retourne une sous chaîne de $str de taille $j et débutant à la position $i.  explode ($sep , $str) retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne du paramètre $str extraite en utilisant le séparateur $sep.
  • 12. Notion de constante  Une constante est un identificateur qui représente une valeur restant inchangée durant l’exécution d’un script.  Cet identificateur est en majuscules (fortement recommandé) et n’est pas préfixée par $.  Syntaxe de définition d’une constante : define("NOM_CTE", val_cte);  Exemple : define ("TVA", 0.18);  Une constante ne doit pas être redéfinie.
  • 13. Tableaux présentation  Un tableau est un regroupement de données de types distincts ou non, désignées par un identificateur unique.  Chaque donnée est repérée par une clé (ou indice) de type entier positif ou de type string.  Syntaxe de création d’un tableau numéroté : $nomTab=array(valeur1,valeur2,valeur3,...)  Syntaxe de création d’un tableau associatif : $nomTab=array(cle1=>valeur1, cle2=>valeur2,...)  Syntaxe d’accès à un élément : $nomTab[cle] App2
  • 14. Tableaux quelques fonctions  reset($tab) : déplace le pointeur de $tab au début et retourne la première valeur de celui-ci.  count($tab) : retourne le nombre d’élément d’un tableau.  each($tab) : retourne le couple clé/valeur courant.  extract($tab) : reçoit un tableau associatif $tab et crée des variables dont les noms sont les clés de $tab, et leur affecte les valeurs associées.  list($var1, $var2, …): assigne une liste de variables en une seule instruction.  sort($tab) et rsort($tab) : la première permet le tri alphanumérique des éléments de $tab, et le second fait l’inverse.  array_merge($tab1, $tab2, …): concatène les tableaux passés en argument.
  • 15. Opérateurs  Opérateurs arithmétiques +, -, *, /, % (modulo), ++(incrément), --(décrément)  Opérateurs d’assignation = (affectation), += (ajouter à), *=, /=, -=, %=  Opérateurs de comparaison == (égalité), <, <=, >, >=, !=  Opérateurs logiques AND, && (et), OR, || (ou), ! (non)  Opérateur de concaténation Noté par un point (.), il « fusionne » deux strings App3
  • 16. Structures conditionnelles Elles permettent d'exécuter un traitement en fonction d’une (ou de plusieurs) condition(s).  if (condition_1) {traitement_1} [else {traitement_2}]  if (condition_1) {traitement_1} elseif (condition_2) {traitement_2} … // suite de elseif else {traitement_n}
  • 17. Structures itératives Elles permettent la répétition d’un traitement en fonction d’une condition.  while(condition) { traitement }  do { traitement } while(condition);  for (exp1 ; condition ; exp2 ) { traitement }  foreach ($tableau as $valeur){traitement}  foreach ($tableau as $cle => $valeur) {traitement} App4&5
  • 18. Fonctions syntaxe  Syntaxe de la définition d’une fonction function nomDeLaFonction( [arg_1[, arg_2, …] ]) { corpsDeLaFonction }  Un argument (ou paramètre) permet à la fonction de communiquer avec son environnement.  return dans le corps de la fonction lui permet de retourner une valeur résultat.  A défaut de return, une fonction peut utiliser un argument pour renvoyer une valeur.
  • 19. Fonctions rappel sur les paramètres  La communication entre la fonction appelée et le code appelant se fait par l'intermédiaire de variables particulières et locales à la fonction appelée que l’on nomme paramètres formels.  Lors de l’appel, tout paramètre formel est associé à une variable ou constante de même type nommée paramètre effectif.  Il existe deux types d'association ou de passage de paramètre : • passage par valeur : oCopie de la valeur du param eff dans le param formel oLa fonction accède au param eff uniquement en lecture • passage par référence : oLe param eff et le param formel « se confondent » oLa fonction accède au param eff en lecture et en App6
  • 20. Transfert de données donnée interne transmise d’une page à une autre  L’URL (Uniform Ressource Location ou adresse) d’une page permet le transfert de données d’une page à une autre  Ajouter à l’URL le caractère ? suivi des couples nom/valeur des données à transférer. Séparer les couples par le caractère &.  Exemple : <a href="page2.php?id=3&montant=10000"> Aller à la page 2 en transmettant l’identifiant du client et le montant de sa commande </a>  La page2 accède aux données transmises par le biais du tableau associatif $_GET. Exemple : echo $_GET['montant']; // affiche 10000 App7
  • 21. Transfert de données données transmises via formulaire  Principaux attributs de l’élément form : • action="adresse_script_cible" script côté serveur qui traitera les données du formulaire. • method="get|post" méthode HTTP employée pour envoyer les données  Tout champ du formulaire doit avoir un nom • Attribut name="nomChamp" • Choix multiple : name="nomChamp[]"  Le script cible accède aux données transmises comme suit : • $_GET['nomChamp'] si method="get" • $_POST['nomChamp'] si method="post" • $_REQUEST['App8&9 nomChamp'] dans tous les cas
  • 22. Transfert de données fichier uploadé via formulaire  Pour joindre un fichier à un formulaire : • attribut enctype="multipart/form-data" de l’élément form • méthode d’envoi : post • champ input de type file muni de l’attr name="nomChamp"  Le script destinataire accède aux infos (nom, type, taille, … ) sur un fichier joint par le biais du tableau super global $_FILES['nomChamp'].  Tout fichier uploadé est placé dans un répertoire temporaire  move_uploaded_file($nom_temporaire,$nom_definitif) déplace un fichier uploadé et retourne un booléen. App10
  • 23. Gestion de sessions présentation  La gestion d’une session permet d'enregistrer (côté serveur) des infos sur un internaute afin de les réutiliser durant toute sa visite.  Ces informations doivent être explicitement enregistrées dans le tableau associatif $_SESSION.  Ce qui permet ainsi de suivre un internaute de page en page, de sauvegarder un caddie, de sécuriser un site, etc.  Tout visiteur se voit assigner un "identifiant de session" permettant de retrouver des informations sur lui.  Cet identifiant est stocké dans un cookie (chez le client) ou propagé dans l'URL des pages visitées (méthode à risques).  Dans les versions récentes de PHP, réactiver la propagation par l’URL en modifiant, dans le fichier php.ini, les directives : • session.use_only_cookies = 0 • session.use_trans_sid = 1  Une session doit obligatoirement démarrer avant l’envoi de toute information au navigateur.
  • 24. Gestion de sessions exemple  Stockage d’une information dans une variable $total = 35000; // Montant d’une commande par exemple  Création ou prolongement d’une session session_start();  Enregistrement de la variable ‘total’ dans la session $_SESSION[‘total’] = $total ;  Test de l’enregistrement de la variable ‘total’ dans la session if ( isset( ($_SESSION[‘total']) )  Affichage de l’information (dans une autre page) echo $_SESSION[‘total’];  Suppression de la variable de session associée à ‘total’ unset($_SESSION[‘total']);  Destruction de toutes les variables de session $_SESSION = array(); // Tableau vide  Destruction de la session session_destroy(); App11
  • 25. PHP ↔ MySQL présentation de MySQL  Le SGBDR (Système de Gestion de Bases de données Relationnelles) open source le plus utilisé sur le Web.  Logiciel permettant de créer des bases de données, de les exploiter (en y effectuant notamment des recherches des modifications ou des tris) et de contrôler l’accès aux données.  Ses principaux concurrents sont PostgreSQL, Microsoft SQL Server, DB2 et Oracle mais ses atouts majeurs sont :  performances élevées ;  coût réduit ;  simplicité de configuration et d’apprentissage ;  portabilité ;  accessibilité du code source ;  disponibilité du support (www.mysql.com).
  • 26. PHP ↔ MySQL étapes de la communication Pour que PHP travaille avec MySQL, il faut une : 1. connexion au serveur  authentification  création d'un objet ou d’un identifiant 1. sélection d’une base de données 2. utilisation des tables  Lecture  écriture 4. déconnexion du serveur (facultative si la connexion et non persistante) NB : Dans ce cours, l’extension mysqli (i pour improved çàd amélioré) est choisie du fait d’une forte recommandation du « The PHP group ».
  • 27. PHP ↔ MySQL Connexion/Déconnexion • Connexion à l’aide du constructeur de la classe mysqli qui reçoit les 4 chaînes : $serveur, $user, $passwd et $dbname. • Retourne, en cas de succès, un objet qui représente la connexion au serveur MySQL. • Il est recommandé de vérifier la réussite de la connexion via l’attribut mysqli::$connect_error. • Pour une connexion persistante, préfixer l’adresse IP ou le nom du serveur par p: . • La déconnexion se fait soit automatiquement à la fin de l'exécution du script (si la connexion n’est pas persistante), soit explicitement en appelant la méthode : bool mysqli::close ( void )
  • 28. PHP ↔ MySQL Connexion/Déconnexion : exemple //Définition des paramètres de connexion define('SERVER','localhost'); define('USER','toto'); define('PASSWD','secret'); define('DBNAME','mabdd'); //Connexion $cnx = new mysqli(SERVER, USER, PASSWD,DBNAME) or die('Erreur de connexion : ' . $cnx->connect_error); … //Déconnexion explicite $cnx->close(); App12
  • 29. PHP ↔ MySQL exécution d’une requête de lecture ou d’écriture mixed mysqli::query (string $req)  Invoquer sur un objet mysqli  Reçoit $req, une requête écrite en SQL  Retourne un jeu de résultats ou objet mysqli_result pour une requête select.  Retourne TRUE pour les requêtes insert, update et delete.  retourne FALSE en cas d’échec de n’importe quelle requête.  Il est recommandé de vérifier la réussite de l’exécution de la requête via l’attribut mysqli::$error.
  • 30. PHP ↔ MySQL exploitation d’une select via tableau associatif mixed mysqli_result::fetch_assoc( )  Invoquer sur un objet mysqli_result  Retourne une ligne de ce résultat sous la forme d’un tableau associatif dont les clés sont les noms des attributs (de la clause SELECT) et leurs valeurs associées étant leurs valeurs ds la BDD ;  Chaque nouvel appel à fetch_assoc() retournera la prochaine ligne dans le jeu de résultats, ou NULL s'il n'y a plus de lignes. Exemple : consultation sur la table membres(id, nom, prenom) $liste= $cnx->query("select prenom, nom from membres"); while($ligne = $liste->fetch_assoc() ){ echo 'Prenom :'.$ligne['prenom'].' Nom : '.$ligne['nom'].'<br />'; }
  • 31. PHP ↔ MySQL exploitation d’une select via objet mixed mysqli_result::fetch_object( )  Invoquer sur un objet mysqli_result  Retourne une ligne de ce résultat sous la forme d’un objet dont les attributs sont les noms des attributs (de la clause SELECT) et leurs valeurs associées étant leurs valeurs dans la BDD ;  Chaque nouvel appel à fetch_object() retournera la prochaine ligne dans le jeu de résultats, ou NULL s'il n'y a plus de lignes. Exemple : consultation sur la table membres(id, nom, prenom) $liste= $cnx-> query("select prenom, nom from membres"); while($ligne = $liste->fetch_object() ){ echo 'Prenom :'.$ligne->prenom.' Nom: '.$ligne->nom.'<br />'; } App13
  • 32. PHP ↔ MySQL autres méthodes  mysqli_result::free_result() Libère la mémoire associée à l'objet mysqli_result.  mysqli::$insert_id retourne le dernier identifiant généré par un champs de type AUTO_INCREMENT.  mysqli_result::$num_rows retourne le nombre de lignes d'un résultat d’une SELECT.  mysqli_stmt::$affected_rows retourne le nombre de lignes affectées par la dernière requête INSERT, UPDATE ou DELETE.  string mysqli::real_escape_string($chaine_a_echapper) ajoute un slash à tout caractère spécial de la chaîne à échapper. Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger les données à insérer dans la BDD. App14