Cours 2 : Le langage
Applications web et mobiles
Christophe Gonzales
©CG(2023)
Architecture autour de PHP
1 requête
client serveur web
(browser) (apache)
4 page HTML
3 page HTML 2 script
interpréteur
PHP
=⇒ But : les scripts PHP produisent du texte HTML !
ils sont aussi utiles pour produire des données JSON
Cours 2 : PHP 1/24
Scripts PHP
Cours 2 : PHP 2/24
PHP à l’intérieur de balises HTML
Cours 2 : PHP 3/24
Déclarer des variables/affecter des valeurs
Cours 2 : PHP 4/24
Les chaı̂nes de caractères
Cours 2 : PHP 5/24
Les nombres
Cours 2 : PHP 6/24
Les tableaux
Cours 2 : PHP 7/24
Les constantes
Cours 2 : PHP 8/24
Les fonctions
Cours 2 : PHP 9/24
La portée des variables (1/4)
Cours 2 : PHP 10/24
La portée des variables (2/4)
Cours 2 : PHP 11/24
La portée des variables (3/4)
Cours 2 : PHP 12/24
La portée des variables (4/4)
Cours 2 : PHP 13/24
Les variables superglobales
▶ Superglobal : accessible dans tous les scopes
▶ Ce sont des tableaux ($GLOBALS['x'])
▶ Variables contenant les infos transmises par l’utilisateur
au serveur web :
▶ $_POST
▶ $_GET
▶ $_REQUEST = $_POST + $_GET
▶ Variables contenant les infos sur le serveur web :
▶ $_SERVER
▶ Variables contenant les infos sur les fichiers uploadés :
▶ $_FILES
▶ Variables de session et cookies :
▶ $_SESSION
▶ $_COOKIE
Cours 2 : PHP 14/24
Forms HTML et variables superglobales PHP
Cours 2 : PHP 15/24
Backend PHP et transfert d’informations en JSON
Cours 2 : PHP 16/24
Les boucles
Cours 2 : PHP 17/24
Les alternatives
Cours 2 : PHP 18/24
Les importations
Cours 2 : PHP 19/24
mysql et PDO
Requêtes MySQL =⇒ utiliser un ≪ database abstraction layer ≫
▶ ici : utilisation de PDO (PHP Data Objects)
▶ Avantages :
▶ sécurité (≪ prepared statements ≫)
▶ facilité d’utilisation (≪ helpers ≫)
▶ réutilisabilité (≪ API unifiée de bases de données ≫)
▶ applicabilité (≪ compatible avec de nombreuses bases :
MySQL, SQLite, Firebird, Oracle, etc.)
Cours 2 : PHP 20/24
Petit aperçu de PDO : création d’une instance
<?php
// creation de l'instance PDO et connexion à la BD
$dsn = "mysql:host=$mysqlHost;" .
"dbname=$mysqlDatabase;" .
"charset=$charset";
// les options
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
];
$PDO = new PDO($dsn, $mysqlLogin, $mysqlPassword, $opt);
?>
Cours 2 : PHP 21/24
Petit aperçu de PDO : utilisation de l’instance
<?php
// définition de la requête
$query = "SELECT * FROM $mysqlTable ".
"WHERE field1=? AND field2 IN (?,?)";
$data = ['f1', 3, 5];
// envoi et exécution de la requête à la base
$statement = $PDO->prepare($query); // préparation
$exec = $statement->execute($data); // exécution
// récupération du résultat
$resultats = $statement->fetchAll(PDO::FETCH_ASSOC);
// affichages
print_r($resultats);
?>
Cours 2 : PHP 22/24
fetchColumn, fetch, fetchAll
▶ Récupérer des données de la BD
1 valeur : fetchColumn
=⇒ 1 ligne : fetch
plusieurs lignes : fetchAll
▶ Options pour fetch et fetchAll :
▶ PDO::FETCH NUM : indices = nombres
▶ PDO::FETCH ASSOC : indices = noms des champs dans la BD
PDO::FETCH NUM : PDO::FETCH ASSOC :
array ( array (
0 => 'toto', 'nom' => 'toto',
1 => 'titi' 'prenom' => 'titi'
); );
Cours 2 : PHP 23/24
Quelques astuces
▶ Documentation :
https ://[Link]/manual/fr/[Link]
▶ Visualisation des erreurs :
En début de programme :
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Cours 2 : PHP 24/24