1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P75 pot

5 194 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Table des Matières

  • Avant-propos

  • Première partie – Programmation web avec MySQL/PHP

    • Chapitre 1 – Introduction à MySQL et PHP

      • 1.1 Introduction au Web et à la programmation web

        • 1.1.1 Serveurs web

        • 1.1.2 Documents web : le langage XHTML

        • 1.1.3 Programmation web

        • 1.1.4 Sessions

      • 1.2 Programmation web avec MySQL et PHP

        • 1.2.1 MySQL

        • 1.2.2 PHP

      • 1.3 Une première base MySQL

        • 1.3.1 Création d'une table

        • 1.3.2 L'utilitaire mysql

        • 1.3.3 L'interface PhpMyAdmin

      • 1.4 Accès à MySQL avec PHP

        • 1.4.1 L'interface MySQL/PHP

        • 1.4.2 Formulaires d'interrogation

        • 1.4.3 Formulaires de mises à jour

    • Chapitre 2 – Techniques de base

      • 2.1 Programmation avec fonctions

        • 2.1.1 Création de fonctions

        • 2.1.2 Utilisation des fonctions

        • 2.1.3 À propos de require et include

        • 2.1.4 Passage par valeur et passage par référence

      • 2.2 Traitement des données transmises par HTTP

        • 2.2.1 Échappement et codage des données HTTP

        • 2.2.2 Contrôle des données HTTP

        • 2.2.3 Comment insérer dans la base de données : insertion dans MySQL

        • 2.2.4 Traitement de la réponse

        • 2.2.5 Comment obtenir du texte « pur » : envoi de l'e-mail

        • 2.2.6 En résumé : traitement des requêtes et des réponses

      • 2.3 Mise à jour d'une base par formulaire

        • 2.3.1 Script d'insertion et de mise à jour

        • 2.3.2 Validation des données et expressions régulières

      • 2.4 Transfert et gestion de fichiers

        • 2.4.1 Transfert du client au serveur

        • 2.4.2 Transfert du serveur au client

      • 2.5 Sessions

        • 2.5.1 Comment gérer une session web ?

        • 2.5.2 Gestion de session avec cookies

        • 2.5.3 Prise en charge des sessions dans PHP

      • 2.6 SQL dynamique et affichage multi-pages

        • 2.6.1 Affichage d'une requête dynamique

        • 2.6.2 Affichage multi-pages

    • Chapitre 3 - Programmation objet

      • 3.1 Tour d'horizon de la programmation objet

        • 3.1.1 Principes de la programmation objet

        • 3.1.2 Objets et classes

        • 3.1.3 Les exceptions

        • 3.1.4 Spécialisation : classes et sous-classes

        • 3.1.5 Spécialisation et classes abstraites : la classe BD

        • 3.1.6 Résumé

      • 3.2 La classe Tableau

        • 3.2.1 Conception

        • 3.2.2 Utilisation

        • 3.2.3 Implantation

      • 3.3 La classe Formulaire

        • 3.3.1 Conception

        • 3.3.2 Utilisation

        • 3.3.3 Implantation

      • 3.4 La classe IhmBD

        • 3.4.1 Utilisation

        • 3.4.2 Implantation

  • Deuxième partie – Conception et création d’un site

    • Chapitre 4 – Création d'une base MySQL

      • 4.1 Conception de la base

        • 4.1.1 Bons et mauvais schémas

        • 4.1.2 Principes généraux

        • 4.1.3 Création d'un schéma E/A

      • 4.2 Schéma de la base de données

        • 4.2.1 Transcription des entités

        • 4.2.2 Associations de un à plusieurs

        • 4.2.3 Associations de plusieurs à plusieurs

      • 4.3 Création de la base Films avec MySQL

        • 4.3.1 Tables

        • 4.3.2 Contraintes

        • 4.3.3 Modification du schéma

    • Chapitre 5 – Organisation du développement

      • 5.1 Choix des outils

        • 5.1.1 Environnement de développement intégré Eclipse

        • 5.1.2 Développement en équipe : Subversion

        • 5.1.3 Production d'une documentation avec PhpDoc

        • 5.1.4 Tests unitaires avec PhpUnit

        • 5.1.5 En résumé

      • 5.2 Gestion des erreurs

        • 5.2.1 Erreurs syntaxiques

        • 5.2.2 Gestion des erreurs en PHP

        • 5.2.3 Les exceptions PHP

        • 5.2.4 Gestionnaires d'erreurs et d'exceptions

      • 5.3 Portabilité multi-SGBD

        • 5.3.1 Précautions syntaxiques

        • 5.3.2 Le problème des séquences

        • 5.3.3 PDO, l'interface générique d'accès aux bases relationnelles

    • Chapitre 6 – Architecture du site : le pattern MVC

      • 6.1 Le motif de conception MVC

        • 6.1.1 Vue d'ensemble

        • 6.1.2 Le modèle

        • 6.1.3 La vue

        • 6.1.4 Contrôleurs et actions

        • 6.1.5 Organisation du code et conventions

      • 6.2 Structure d'une application MVC : contrôleurs et actions

        • 6.2.1 Le fichier index.php

        • 6.2.2 Le contrôleur frontal

        • 6.2.3 Créer des contrôleurs et des actions

      • 6.3 Structure d'une application MVC : la vue

        • 6.3.1 Les templates

        • 6.3.2 Combiner des templates

        • 6.3.3 Utilisation d'un moteur de templates comme vue MVC

        • 6.3.4 Exemple complet

        • 6.3.5 Discussion

      • 6.4 Structure d'une application MVC : le modèle

        • 6.4.1 Modèle et base de données : la classe TableBD

        • 6.4.2 Un exemple complet de saisie et validation de données

        • 6.4.3 Pour conclure

    • Chapitre 7 – Production du site

      • 7.1 Authentification

        • 7.1.1 Problème et solutions

        • 7.1.2 Contrôleur d'authentification et de gestion des sessions

        • 7.1.3 Les actions de login et de logout

      • 7.2 Recherche, présentation, notation des films

        • 7.2.1 Outil de recherche et jointures SQL

        • 7.2.2 Notation des films

      • 7.3 Affichage des films et forum de discussion

      • 7.4 Recommandations

        • 7.4.1 Algorithmes de prédiction

        • 7.4.2 Agrégation de données avec SQL

        • 7.4.3 Recommandations de films

    • Chapitre 8 – XML

      • 8.1 Introduction à XML

        • 8.1.1 Pourquoi XML ?

        • 8.1.2 XML et HTML

        • 8.1.3 Syntaxe de XML

      • 8.2 Export de données XML

        • 8.2.1 Comment passer d'une base MySQL à XML

        • 8.2.2 Application avec PHP

      • 8.3 Import de données XML dans MySQL

        • 8.3.1 Simple XML

        • 8.3.2 L'API SAX

        • 8.3.3 Une classe de traitement de documents XML

      • 8.4 Mise en forme de documents avec XSLT

        • 8.4.1 Quelques mots sur XSLT

        • 8.4.2 Application d'un programme XSLT avec PHP

  • Troisième partie – Compléments

    • Chapitre 9 – Introduction au Zend Framework

      • 9.1 Mise en route

        • 9.1.1 Installation d'une application ZF

        • 9.1.2 Redirection des requêtes avec le ZF

        • 9.1.3 Organisation et conventions

        • 9.1.4 Routage des requêtes dans une application Zend

        • 9.1.5 Configuration

        • 9.1.6 Connexion à la base de données

        • 9.1.7 Le registre

        • 9.1.8 Contrôleurs, actions et vues

      • 9.2 Accès à la base de données

        • 9.2.1 Interrogation

        • 9.2.2 Insertion et mise à jour

      • 9.3 Le MVC du Zend Framework

        • 9.3.1 L'objet request

        • 9.3.2 L'objet response

        • 9.3.3 Gérer les exceptions

      • 9.4 La vue dans le Zend Framework

        • 9.4.1 Les vues sont des scripts PHP

        • 9.4.2 Le layout

        • 9.4.3 Créer des Helpers

      • 9.5 Le composant Modèle du Zend Framework

        • 9.5.1 L'ORM du Zend Framework

        • 9.5.2 Le modèle ORM de l'application

        • 9.5.3 Manipulation des données avec les classes ORM

      • 9.6 Pour conclure

    • Chapitre 10 – Récapitulatif SQL

      • 10.1 Sélections

        • 10.1.1 Renommage, fonctions et constantes

        • 10.1.2 La clause DISTINCT

        • 10.1.3 La clause ORDER BY

        • 10.1.4 La clause WHERE

        • 10.1.5 Dates

        • 10.1.6 Valeurs nulles

        • 10.1.7 Clauses spécifiques à MySQL

      • 10.2 Jointures

        • 10.2.1 Interprétation d'une jointure

        • 10.2.2 Gestion des ambiguïtés

        • 10.2.3 Jointures externes

      • 10.3 Opérations ensemblistes

      • 10.4 Requêtes imbriquées

        • 10.4.1 Exemples de requêtes imbriquées

        • 10.4.2 Requêtes corrélées

        • 10.4.3 Requêtes avec négation

      • 10.5 Agrégation

        • 10.5.1 La clause GROUP BY

        • 10.5.2 La clause HAVING

      • 10.6 Mises à jour

        • 10.6.1 Insertion

        • 10.6.2 Destruction

        • 10.6.3 Modification

    • Chapitre 11 – Récapitulatif PHP

      • 11.1 Généralités

        • 11.1.1 Commentaires

        • 11.1.2 Variables et littéraux

        • 11.1.3 Constantes

      • 11.2 Types

        • 11.2.1 Types numériques et booléens

        • 11.2.2 Chaînes de caractères

        • 11.2.3 Tableaux

        • 11.2.4 Conversion et typage

      • 11.3 Expressions

      • 11.4 Opérateurs

        • 11.4.1 Concaténation de chaînes

        • 11.4.2 Incrémentations

        • 11.4.3 Opérateurs de bits

        • 11.4.4 Opérateurs logiques

      • 11.5 Structures de contrôle

        • 11.5.1 Tests

        • 11.5.2 Boucles

        • 11.5.3 Les instructions break et continue

      • 11.6 Fonctions

        • 11.6.1 Passage des arguments

        • 11.6.2 Valeurs par défaut

        • 11.6.3 Fonctions et variables

      • 11.7 Programmation orientée-objet

        • 11.7.1 Classes et objets

        • 11.7.2 Constructeurs et destructeurs

        • 11.7.3 Sous-classes

        • 11.7.4 Manipulation des objets

        • 11.7.5 Compléments

  • Quatrième partie – Annexes

    • Annexe A – Installation Apache/PHP/MySQL

      • A. 1 Mot de passe root

      • A. 2 Création de bases et d'utilisateurs

        • A. 2.1 La commande GRANT

        • A. 2.2 Modification des droits d'accès

      • A. 3 Fichiers de configuration

        • A. 3.1 Format d'un fichier de configuration

        • A. 3.2 Les différents fichiers

        • A. 3.3 Configuration du serveur

        • A. 3.4 Configuration d'un compte administrateur

      • A. 4 Sauvegardes

      • A. 5 phpMyAdmin

    • Annexe B – Référence MySQL

      • B. 1 Types de données MySQL

      • B. 2 Commandes de MySQL

      • B. 3 Fonctions MySQL

    • Annexe C – Fonctions PHP

      • C. 1 Fonctions générales

      • C. 2 Chaînes de caractères

      • C. 3 Dates

      • C. 4 Tableaux

      • C. 5 Fonctions XML

      • C. 6 Accès aux fichiers

      • C. 7 Interface PHP/MySQL

  • Index général

  • Index des fonctions PHP

  • Index des commandes SQL

  • Table des figures

Nội dung

348 Chapitre 8. XML // Il y a un problème. Affichage du formulaire de saisie // avec les valeurs du tableau $this−>vue−>contenu = "Problème: $message<br/>" . $tbl_film−>formulaire (TableBD::INS_BD, "saisie" , "inserer"); } else { // Insertion , avec la fonction du modèle $tbl_film−>insertion (); // On affiche ce qu’on vient d’insérer $this−>vue−>id_film = $tbl_film−>id ; $this−>vue−>titre = $tbl_film−>titre ; $this−>vue−>annee = $tbl_film−>annee ; $this−>vue−>realisateur = $tbl_film−>nomRealisateur () ; $this−>vue−>fichier_xml = $_FILES [ ’ fichierXML ’ ][ ’name ’ ]; $this−>vue−>setFile ("contenu" , "xml_import . tpl ") ; } } echo $this−>vue−>render ("page") ; } En résumé, nous avons vu dans cette section comment écrire un module d’analyse de documents XML simple mais limité, puis comment utiliser des aspects avancés de la programmation orientée-objet pour obtenir des outils beaucoup plus puis- sants, comprenant une bonne partie de code réutilisable en toutes circonstances. On peut noter que cette programmation permet notamment d’éviter le recours aux variables globales, qui mène rapidement à des scripts difficilement compréhen- sibles. 8.4 MISE EN FORME DE DOCUMENTS AVEC XSLT Pour conclure cette présentation des possibilités d’utilisation de documents XML en association avec MySQL/PHP, nous montrons comment transformer un document obtenu par export d’une base MySQL en un format quelconque avec le langage de transformation XSLT. La motivation est la même que celle déjà explorée avec les templates : on voudrait pouvoir séparer complètement le traitement du contenu,ici obtenu par de la programmation PHP/MySQL, et la présentation de ce contenu. Dans le cas des templates on utilisait des « modèles » HTML comprenant des « entités » et on remplaçait ensuite, par programmation, ces entités par des chaînes de caractères PHP construites dynamiquement. La technique XML/XSLT est comparable, avec deux différences notables : • les modèles de templates sont remplacés par des règles et autres instructions XSLT ; • au lieu de placer le contenu dans une chaîne de caractères, on le représente de manière structurée dans un document XML. 8.4 Mise en forme de documents avec XSLT 349 Contrairement aux systèmes de templates, des solutions ad hoc dépendantes de la bonne volonté d’un petit groupe de programmeurs, XSLT est un langage offi- ciellement promu et défini par le World Wide Web Consortium, conçu pour offrir toute la puissance nécessaire à la publication de contenus complexes, et offrant incontestablement de solides garanties de pérennité. De plus, pour un même type de document XML, il est possible de définir plusieurs programmes XSLT, chacun correspondant à un format de sortie différent. XSLT est une solution à considérer si on construit un site publiant un même contenu à destination de plusieurs médias. En contrepartie, XSLT est un langage complexe à apprendre et à maîtriser, et qu’avant de s’engager dans une solution technique comprenant des langages aussi différents que HTML, PHP, SQL, XML, XSLT, etc., il faut réfléchir sérieusement à ses avantages et inconvénients. La présentation qui suit a essentiellement pour objectif de vous permettre d’ap- précier les caractéristiques d’une telle solution, à charge pour vous ensuite de faire vos choix en connaissance de cause. Il exclu de se lancer ici dans une présentation du langage XSLT. Les quelques exemples présentés se veulent suffisamment intuitifs pour saisir les principes de base. 8.4.1 Quelques mots sur XSLT Un programme XSLT est un document XML, constitué d’un élément racine <xsl:stylesheet>, comprenant lui-même d’autres éléments parmi lesquels ceux qui correspondent à des instructions XSLT sont tous préfixés par « xsl: ». Les principaux éléments XSLT sont les règles,denom<xsl:template>. Un programme XSLT s’applique à un document source XML en entrée et produit un document résultat (qui est lui aussi du XML). La production du document résultat s’appuie sur les règles du programme. Intuitivement, le processeur XSLT commence par parcourir le document source, lequel est considéré comme une arborescence de nœuds. Pour chaque nœud, le processeur regarde si une des règles du programme XSLT s’applique au nœud. Si c’est le cas, un fragment du document résultat décrit dans la règle va être produit. L’assemblage de tous les fragments produits au cours de l’exécution d’un programme constitue le document résultat complet. Nous allons présenter un programme XSLT qui s’applique aux documents XML exportésdelabaseFilms (voir par exemple KillBill.xml, page 331) et les transforme en un document HTML. Voici le programme XSLT « principal », avec une seule règle. Exemple 8.17 La règle XSLT pour la production d’une page HTML <?xml version=" 1.0" encoding="ISO−8859−1"?> <xsl:stylesheet version="1.0 " xmlns:xsl="http: //www.w3. org/1999/XSL/Transform"> <xsl:include href="Film . xsl " /> <xsl:output method="html" encoding="ISO−8859−1"/> 350 Chapitre 8. XML <xsl:template match="/"> <!−− Entête de la page −−> <html> <head> <title>Page produite avec XSLT</ title> <link rel="stylesheet" href="films . css" type="text/ css"/> </ head> <body> <center><h1>Résultat de la mise en forme XSLT</h1></ center> Voici la liste des films , mis au format HTML. <!−− Mise en forme du document XML −−> <xsl:apply−templates /> </ body> </ html> </xsl:template> </ xsl:stylesheet> Ce programme est bien un document XML, avec un élément racine <xsl:stylesheet>, contenant deux instructions <xsl:include> et <xsl:output> sur lesquelles nous reviendrons plus tard, et une règle <xsl:template>. Le principe d’un tel programme est d’exécuter les instructions XSLT et de les remplacer par le résultat de cette exécution qui doit être un fragment XML bien formé. Quand toutes les instructions ont été traitées, il reste un document XML résultat sans traces d’instructions XSLT. Ici le « dialecte » choisi pour la sortie est du (X)HTML. L’attribut match de la règle indique les nœuds du document source pour lesquels elle va être déclenchée. La valeur de cet attribut doit être une expression d’un autre langage, XPath, qui permet d’exprimer des chemins dans une arborescence XML. L’expression « / » indique en l’occurrence que la règle s’applique à la racine du document XML. Quand le processeur va rencontrer ce nœud (il s’agit du premier rencontré), la règle est déclenchée et produit la version intermédiaire suivante du document résultat. Exemple 8.18 Regle1.xml : Résultat intermédiaire après application de la première règle <html> <head> <title>Page produite avec XSLT</title> <link rel="stylesheet" href="films.css" type="text/css"/> </head> <body> <center><h1>Mise en forme XSLT</h1></center> 8.4 Mise en forme de documents avec XSLT 351 Voici la liste des films, mis au format HTML. <! Mise en forme du document XML > <xsl:apply-templates/> </body> </html> Ce document est déjà un document XML bien formé, mais pas encore un docu- ment HTML. Il contient encore une instruction XSLT, <xsl:apply-templates>, ce qui indique que le traitement n’est pas fini. Le processeur XSLT va donc continuer à parcourir le document source, en cherchant les règles qui s’appliquent à ses nœuds et en déclenchant les règles appropriées. Dans notre premier programme nous avions une instruction <xsl:include>. Comme son nom l’indique, elle inclut un autre programme XSLT, Film.xsl, qui contient une unique autre règle. Exemple 8.19 La règle XSLT pour la présentation d’un film <?xml version=" 1.0" encoding=" iso −8859−1"?> <xsl:stylesheet version="1.0 " xmlns:xsl="http: //www.w3. org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:template match="Film"> <h1><i><xsl:value−of select="titre"/></i></h1> <!−− Genre , pays , et année du film −−> <xsl:value−of select="genre"/>, <i> <xsl:value−of select="code_pays"/></ i>, <xsl:value−of select="annee"/>. <!−− Auteur du film −−> Mis en scène par <b><xsl:value−of select="concat( realisateur /prenom , ’ ’ , realisateur /nom)"/> </b> <h3>Acteurs</h3> <xsl:for−each select="Acteur"> <b><xsl:value−of select="concat(prenom , ’ ’ ,nom)"/></b> : <xsl:value−of select="nom_role"/><br/> </ xsl:for−each> <!−− Résumé du film −−> <h3>Résumé</h3> 352 Chapitre 8. XML <xsl:value−of select="resume" /> </ xsl:template> </ xsl:stylesheet> L’attribut match indique que cette seconde règle se déclenche sur un nœud <Film>. Ce déclenchement produit un fragment qui constitue une représentation HTML des différentes données constituant le film rencontré. La page HTML résultat contiendra, s’il y a trois films, les trois fragments successivement produits par exécu- tion de cette règle. Les données sont extraites du document source avec l’instruction <xsl:value-of>. Par exemple : • <xsl:value-of select="titre"> insère dans le résultat le contenu de l’élément <titre>, fils de l’élément <Film> ; • <xsl:value-of select="Realisateur/@nom"> insère dans le résultat la valeur de l’attribut nom de l’élément <Realisateur>, fils de l’élément <Film> ; On peut noter que XSLT permet également d’effectuer des boucles sur un ensemble d’éléments, ici les acteurs, avec l’instruction <for-each>. À chaque fois que le processeur évalue une de ces instructions, elle est remplacée par le fragment XML produit. Quand toutes les instructions ont été traitées, on obtient un document HTML. Voici par exemple ce que donne l’exécution de cette seconde règle, à partir du document intermédiaire Regle1.xml, page 350, appliqué au document source KillBill.xml page 331. On constate que le xsl:apply-templates est remplacé par le fragment XHTML produit : Exemple 8.20 Regle2.xml : Après application de la deuxième règle <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> <title>Page produite avec XSLT</title> <link rel="stylesheet" href="films.css" type="text/css"/> </head> <body> <center><h1>R´esultat de la mise en forme XSLT</h1></center> Voici la liste des films, mis au format HTML. <h1><i>Kill Bill</i></h1>Drame, <i>USA</i>, 2003. Mis en sc`ene par <b>Quentin Tarantino</b>. <h3>Acteurs</h3> <b>Uma Thurman</b>: La mari´ee, alias "Black Mamba"<br/> <b>Lucy Liu</b>: O-Ren Ishii<br/> <b>David Carradine</b>: Bill<br/> . contenu,ici obtenu par de la programmation PHP /MySQL, et la présentation de ce contenu. Dans le cas des templates on utilisait des « modèles » HTML comprenant des « entités » et on remplaçait ensuite,. nécessaire à la publication de contenus complexes, et offrant incontestablement de solides garanties de pérennité. De plus, pour un même type de document XML, il est possible de définir plusieurs programmes. par des chaînes de caractères PHP construites dynamiquement. La technique XML/XSLT est comparable, avec deux différences notables : • les modèles de templates sont remplacés par des règles et

Ngày đăng: 06/07/2014, 00:20

TỪ KHÓA LIÊN QUAN