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

Pratique de MySQL et PHP- P36 ppt

5 251 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

3.3 La classe Formulaire 153 Par ailleurs la classe Formulaire doit également fournir des fonctionnalités de placement des champs et des libellés les uns par rapport aux autres, ce qui peut se gérer à l’aide de tableaux HTML. La figure 3.4 montre les possibilités attendues, avec des traits en pointillés qui indiquent le tableau HTML permettant d’obtenir un alignement régulier des dif- férents composants du formulaire. La première partie présente les champs dans un tableau à deux colonnes, la première correspondant aux libellés, et la seconde aux champs quel que soit leur type : texte, mot de passe, liste déroulante, etc. Dans le cas où le champ consiste en un ensemble de choix matérialisés par des boutons (le champ 4 dans la figure), on souhaite créer une table imbriquée associant à chaque bouton un sous-libellé, sur deux lignes. Ce premier type de présentation sera désigné par le terme Mode Table, orientation verticale. Choix a Choix b Choix c Libellé 1 Libellé 2 Libellé 3 Libellé 4 Libellé Valider Libellé X Libellé Y Libellé Z Mode Table, horizontal champ 1 champ 2 champ 3 champ X champ Y champ Z champ X champ Y champ Z Mode Table, vertical Mode libre Figure 3.4 — Conception de la classe Formulaire Ladeuxièmepartieduformulairedelafigure3.4organiselaprésentationen autant de colonnes qu’il y a de champs, ces colonnes étant préfixées par le libellé du champ. Ce mode de présentation, désigné par le terme Mode Table, orientation horizontale, permet d’affecter plusieurs zones de saisie pour un même champ, une par ligne. Enfin, le formulaire doit permettre une présentation libre – c’est-à-dire sans alignement à l’aide de tableau – comme le bouton de validation à la fin du formulaire. La classe doit proposer un ensemble de méthodes pour créer tous les types de champs possibles dans un formulaire HTML, et disposer chaque champ en fonction du mode de présentation qui a été choisi. Cela suppose que l’objet chargé de produire 154 Chapitre 3. Programmation objet le formulaire connaisse, lors de la création du champ, le mode de présentation courant. En résumé il s’agit d’implanter une fois pour toutes, sous forme de classe orientée- objet, les tâches courantes de production et de mise en forme de formulaire que l’on trouve dans toutes les applications web en général, et tout particulièrement dans les applications s’appuyant sur une base de données. 3.3.2 Utilisation Commençons par présenter l’utilisation de la classe avant d’étudier ses mécanismes internes. La liste des méthodes publiques est donnée dans la table 3.8. Elles appar- tiennent à deux catégories : Tableau 3.8 — Les méthodes publiques de la classe Formulaire Méthode Description champTexte (libell´e, nom, val, long, longMax ) Champdesaisiedetexte. champMotDePasse (libell´e, nom, val, long, longMax ) Champ de saisie d’un mot de passe. champRadio (libell´e, nom, val, liste ) Boutons radio champListe (libell´e, nom, val, taille, liste ) Boutons select champFenetre (libell´e, nom, val, ligs, cols ) Boutons textarea champCache (nom, val ) Champ caché. champFichier (libell´e, nom, taille ) Champ fichier (upload). champValider (libell´e, nom ) Bouton submit debutTable (orientation, attributs, nbLignes ) Entrée en mode table. ajoutTexte (texte ) Ajout d’un texte libre. finTable () Sortie du mode table. getChamp (idChamp ) Récupération d’un champ du formu- laire. formulaireHTML () Retourne la chaîne de caractères conte- nant le formulaire HTML. • Production d’un champ de formulaire. À chaque type de champ correspond une méthode qui ne prend en argument que les paramètres strictement nécessaires au type de champ souhaité. Par exemple la méthode champTexte() utilise un libellé, le nom du champ, sa valeur par défaut, sa taille d’affichage et la taille maximale (ce dernier para- mètre étant optionnel). Parmi les autres méthodes, on trouve champRadio(), champListe(), champFenetre(),etc. Chaque méthode renvoie l’identifiant du champ créé. Cet identifiant permet d’accéder au champ, soit pour le récupérer et le traiter isolément (méthode getChamp()), soit pour lui associer des contrôles Javascript ou autres. • Passage d’un mode de présentation à un autre. Ces méthodes permettent d’indiquer que l’on entre ou sort d’un mode Table, en horizontal ou en vertical. 3.3 La classe Formulaire 155 Voici un premier exemple illustrant la simplicité de création d’un formulaire. Il s’agit d’une démonstration des possibilités de la classe, sans déclenchement d’aucune action quand le formulaire est soumis. Nous verrons dans le chapitre 5 comment utiliser cette classe en association avec la base de données pour créer très rapidement des interfaces de saisie et de mise à jour. Exemple 3.9 exemples/ApplClasseFormulaire.php : Exemple démontrant les possibilités de la classe Formulaire. <?xml version=" 1.0 " encoding=" iso −8959−1"?> <!DOCTYPE ht ml PUBLIC " −/ /W3C / / DTD XHTML 1 . 0 S t r i c t / / EN " "http ://www.w3. org/TR/xhtml1/DTD/xhtml1−strict .dtd"> <html xmlns="http ://www.w3. org /1999/xhtml" xml: lang=" fr " > <head> <title >Création d’un formulaire </title > <link rel=’stylesheet ’ href="films .css" type="text/ css"/> </head> <body> <?php require_once (" Formulaire.php") ; // Instanciation du formulaire $form = new Formulaire (" post", "ApplClasseFormulaire .php") ; // Un champ caché $form−>champCache ("mode" , "Démonstration") ; // Tableau en mode vertical , avec quelques champs $form−>debutTable(Formulaire ::VERTICAL) ; $form−>champTexte ("Nom" , "nom" , "Entrez votre nom" , 40) ; $form−>champTexte (" Prénom" , "prenom " , " Entrez votre prénom " , 40) ; / / Un champ radio , avec la l i st e des choix dans un tableau PHP $form−>champRadio ("Sexe" , "sexe ", "M" , array ("M" => "Masculin" , "F"=>"Féminin")); // Un champ select , avec la liste des choix dans un tableau PHP $form−>champListe (" J ustificatif " , "nation ", " cni ", 1, array( "cni"=>"Carte d’identité" , "pass"=>"Passeport" , "pc"=>"Permis de conduire")) ; / / Un champ textar ea $form−>champFenetre (" Bref CV" , "cv" , "Votre CV en quelques lignes" , 4, 50); / / Un champ fi ch ie r $form−>champFichier (" Votre photo" , "photo" , 30) ; / / Fin du mode v e rt ic al $form−>finTable() ; 156 Chapitre 3. Programmation objet $form−>ajoutTexte ("<b>Vos enfants </b>") ; // Tableau en mode horizontal , avec 5 lignes $form−>d e b u t T ab l e ( F o r m u l a i r e : : HORIZONTAL, a r r a y ( ) , 5 ) ; $form−>champTexte ( "Prénom" , "prenom [] " , "" , 20 , 30) ; $form−>champTexte ("Nom", "nom[]", "", 20, 30); $form−>champTexte ("Né en" , "annee_naissance [] " , "" , 4); $form−>finTable () ; // Bouton de validation , avec placement libre $form−>champValider ("Valider la saisie" , "valider"); // Affichage du formulaire echo $form−>formulaireHTML() ; ?> Figure 3.5 — Affichage du formulaire de démonstration. L’affichage du formulaire est donné dans la figure 3.5. Quelques lignes de spé- cification, accompagnées du nombre strictement minimal de paramètres, suffisent pour créer ce formulaire, sans qu’il soit nécessaire d’avoir à produire explicitement la moindre balise HTML. Cet avantage est d’autant plus appréciable que le résultat comprend une imbrication assez complexe de balises de formulaires, de tableaux, et de données provenant du script PHP, qui seraient très fastidieuses à intégrer si l’on ne disposait pas de ce type d’outil automatisé. 3.3 La classe Formulaire 157 3.3.3 Implantation L’implantation de la classe nécessite des structures internes un peu plus sophistiquées que celles vues jusqu’à présent. Il s’agit en effet de décrire le contenu d’un formu- laire, sous une forme offrant le plus de souplesse possible. On doit être capable par exemple de récupérer individuellement la description HTML de l’un des champs, ou de désigner un champ auquel on souhaite associer un contrôle Javascript. Enfin les propriétés doivent contenir toutes les informations nécessaires pour produire la chaîne HTML du formulaire. On va représenter ce contenu sous la forme d’une liste de composants,àchoisir parmi • un champ de saisie, accompagné de son libellé ; • un texte libre à insérer dans le formulaire ; • l’indication d’un début de tableau, accompagné des caractéristiques du tableau ; • l’indication d’une fin de tableau. La figure 3.6 montre l’organisation globale de la classe, en distinguant la partie publique (en haut) proposant une interface à l’utilisateur, et une partie privée (en bas) constituée de méthodes internes et de propriétés (essentiellement, ici, les composants). Le principe général est que toutes les méthodes insèrent de nouveaux composants, sauf formulaireHTML() qui va consulter les composants existants pour produire le formulaire. Utilisateur Interface composants (1) (2) champINPUT() champSELECT() champTEXTAREA() debutTable() champTexte() champSelect() ajoutTexte() finTable() formulaireHTML() champLibelle() Partie privée Partie publique Figure 3.6 — Organisation de la classe Formulaire REMARQUE – On pourrait (devrait ) créer une classe FormComposant pour représenter et manipuler ces composants. En programmation objet, tout concept doit donner lieu à la création d’une classe, avec des avantages à moyen et long terme en matière d’évolutivité. L’inconvénient est de rendre la conception et l’organisation des classes plus ardu à maîtriser. C’est la raison pour laquelle nous n’allons pas plus loin, au moins dans ce chapitre. L’insertion d’un nouveau composant se fait directement pour le début ou la fin d’une table, et pour l’ajout d’un texte. Pour l’ajout d’un champ accompagné de son . autres méthodes, on trouve champRadio(), champListe(), champFenetre(),etc. Chaque méthode renvoie l’identifiant du champ créé. Cet identifiant permet d’accéder au champ, soit pour le récupérer et le. appar- tiennent à deux catégories : Tableau 3.8 — Les méthodes publiques de la classe Formulaire Méthode Description champTexte (libell´e, nom, val, long, longMax ) Champdesaisiedetexte. champMotDePasse. fonction du mode de présentation qui a été choisi. Cela suppose que l’objet chargé de produire 154 Chapitre 3. Programmation objet le formulaire connaisse, lors de la création du champ, le mode de présentation courant. En

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

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN