Table des matières Avant-propos xv Première partie – Programmation web avec MySQL/PHP Chapitre 1 – Introduction à MySQL et PHP 3 1.1 IntroductionauWebetàlaprogrammationweb 3 1.1.1 Serveurs web 4 1.1.2 Documents web : le langage XHTML 4 1.1.3 Programmation web 7 1.1.4 Sessions 16 1.2 Programmation web avec MySQL et PHP 18 1.2.1 MySQL 18 1.2.2 PHP 20 1.3 UnepremièrebaseMySQL 24 1.3.1 Création d’une table 25 1.3.2 L’utilitaire mysql 25 1.3.3 L’interface PhpMyAdmin 34 1.4 Accès à MySQL avec PHP 36 1.4.1 L’interface MySQL/PHP 37 1.4.2 Formulaires d’interrogation 42 1.4.3 Formulaires de mises à jour 46 vi Pratique de MySQL et PHP Chapitre 2 – Techniques de base 55 2.1 Programmation avec fonctions . . . . . . 56 2.1.1 Création de fonctions 56 2.1.2 Utilisation des fonctions 59 2.1.3 À propos de require et include 60 2.1.4 Passage par valeur et passage par référence 61 2.2 Traitement des données transmises par HTTP 64 2.2.1 Échappement et codage des données HTTP 67 2.2.2 Contrôle des données HTTP 70 2.2.3 Comment insérer dans la base de données : insertion dans MySQL 72 2.2.4 Traitement de la réponse 74 2.2.5 Comment obtenir du texte « pur » : envoi de l’e-mail 76 2.2.6 En résumé : traitement des requêtes et des réponses 77 2.3 Mise à jour d’une base par formulaire . . 78 2.3.1 Script d’insertion et de mise à jour 78 2.3.2 Validation des données et expressions régulières 86 2.4 Transfert et gestion de fichiers . . . . . . . 90 2.4.1 Transfert du client au serveur 91 2.4.2 Transfert du serveur au client 95 2.5 Sessions 98 2.5.1 Comment gérer une session web ? 99 2.5.2 Gestion de session avec cookies 101 2.5.3 Prise en charge des sessions dans PHP 106 2.6 SQL dynamique et affichage multi-pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 2.6.1 Affichage d’une requête dynamique 110 2.6.2 Affichage multi-pages 111 Chapitre 3 – Programmation objet 115 3.1 Tour d’horizon de la programmation objet 116 3.1.1 Principes de la programmation objet 117 3.1.2 Objets et classes 120 3.1.3 Les exceptions 124 3.1.4 Spécialisation : classes et sous-classes 126 3.1.5 Spécialisation et classes abstraites : la classe BD 129 Table des matières vii 3.1.6 Résumé 138 3.2 La classe Tableau 140 3.2.1 Conception 140 3.2.2 Utilisation 144 3.2.3 Implantation 148 3.3 La classe Formulaire 152 3.3.1 Conception 152 3.3.2 Utilisation 154 3.3.3 Implantation 157 3.4 La classe IhmBD 167 3.4.1 Utilisation 168 3.4.2 Implantation 171 Deuxième partie – Conception et création d’un site Chapitre 4 – Création d’une base MySQL 181 4.1 Conceptiondelabase 181 4.1.1 Bons et mauvais schémas 181 4.1.2 Principes généraux 185 4.1.3 Création d’un schéma E/A 187 4.2 Schéma de la base de données . . . . . . . . . 193 4.2.1 Transcription des entités 193 4.2.2 Associations de un à plusieurs 194 4.2.3 Associations de plusieurs à plusieurs 195 4.3 Création de la base Films avecMySQL 197 4.3.1 Tables 198 4.3.2 Contraintes 199 4.3.3 Modification du schéma 204 Chapitre 5 – Organisation du développement 207 5.1 Choixdesoutils 208 5.1.1 Environnement de développement intégré Eclipse 208 5.1.2 Développement en équipe : Subversion 210 5.1.3 Production d’une documentation avec PhpDoc 213 viii Pratique de MySQL et PHP 5.1.4 Tests unitaires avec PhpUnit 216 5.1.5 En résumé 220 5.2 Gestiondeserreurs 221 5.2.1 Erreurs syntaxiques 222 5.2.2 Gestion des erreurs en PHP 225 5.2.3 Les exceptions PHP 227 5.2.4 Gestionnaires d’erreurs et d’exceptions 230 5.3 Portabilité multi-SGBD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 5.3.1 Précautions syntaxiques 233 5.3.2 Le problème des séquences 235 5.3.3 PDO, l’interface générique d’accès aux bases relationnelles 238 Chapitre 6 – Architecture du site : le pattern MVC 241 6.1 Le motif de conception MVC . . . . . . . . . 242 6.1.1 Vue d’ensemble 242 6.1.2 Le modèle 243 6.1.3 La vue 243 6.1.4 Contrôleurs et actions 243 6.1.5 Organisation du code et conventions 243 6.2 Structured’uneapplicationMVC:contrôleursetactions 245 6.2.1 Le fichier index.php 245 6.2.2 Le contrôleur frontal 248 6.2.3 Créer des contrôleurs et des actions 249 6.3 Structure d’une application MVC : la vue 251 6.3.1 Les templates 252 6.3.2 Combiner des templates 256 6.3.3 Utilisation d’un moteur de templates comme vue MVC 260 6.3.4 Exemple complet 261 6.3.5 Discussion 265 6.4 Structured’uneapplicationMVC:lemodèle 267 6.4.1 Modèle et base de données : la classe TableBD 267 6.4.2 Un exemple complet de saisie et validation de données 273 6.4.3 Pour conclure 277 Table des matières ix Chapitre 7 – Production du site 279 7.1 Authentification 280 7.1.1 Problème et solutions 280 7.1.2 Contrôleur d’authentification et de gestion des sessions 281 7.1.3 Les actions de login et de logout 286 7.2 Recherche,présentation,notationdesfilms 289 7.2.1 Outil de recherche et jointures SQL 289 7.2.2 Notation des films 295 7.3 Affichage des films et forum de discussion 299 7.4 Recommandations 304 7.4.1 Algorithmes de prédiction 305 7.4.2 Agrégation de données avec SQL 307 7.4.3 Recommandations de films 309 Chapitre 8 – XML 317 8.1 IntroductionàXML 318 8.1.1 Pourquoi XML ? 319 8.1.2 XML et HTML 320 8.1.3 Syntaxe de XML 320 8.2 Export de données XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 8.2.1 Comment passer d’une base MySQL à XML 323 8.2.2 Application avec PHP 328 8.3 Import de données XML dans MySQL . . 332 8.3.1 SimpleXML 333 8.3.2 L’API SAX 335 8.3.3 Une classe de traitement de documents XML 339 8.4 Mise en forme de documents avec XSLT 348 8.4.1 Quelques mots sur XSLT 349 8.4.2 Application d’un programme XSLT avec PHP 353 . actions de login et de logout 286 7.2 Recherche,présentation,notationdesfilms 289 7.2.1 Outil de recherche et jointures SQL 289 7.2.2 Notation des films 295 7.3 Affichage des films et forum de discussion. d’une documentation avec PhpDoc 213 viii Pratique de MySQL et PHP 5.1.4 Tests unitaires avec PhpUnit 216 5.1.5 En résumé 220 5.2 Gestiondeserreurs 221 5.2.1 Erreurs syntaxiques 222 5.2.2 Gestion des. objet 115 3.1 Tour d’horizon de la programmation objet 116 3.1.1 Principes de la programmation objet 117 3.1.2 Objets et classes 120 3.1.3 Les exceptions 124 3.1.4 Spécialisation : classes et