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

Pratique de MySQL et PHP- P77 potx

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

358 Chapitre 9. Introduction au Zend Framework précédents, et propose quelques fonctionnalités implantées avec le ZF. Vous pouvez en récupérer le code sur le site du livre. 9.1 MISE EN ROUTE La première chose à faire est d’installer le ZF et notre application. Une fois que cela fonctionne, lisez la fin de cette section qui présente l’organisation du code et les conventions d’écriture du ZF. Ce n’est pas évident, surtout au début, et il vaut mieux comprendre d’emblée comment cela fonctionne. 9.1.1 Installation d’une application ZF La tâche la plus simple est d’installer le Zend Framework. Allez sur le site http://framework.zend.com/ et récupérez l’archive contenant l’ensemble des composants. La version courante au moment où ces lignes sont écrites est la 1.6, et nous pouvons nous contenter de la version minimale, sans les utilitaires JavaScript Dojo. Décompressez l’archive. On obtient un répertoire ZendFramework-1.6 contenant un sous-répertoire library. Ce sous-répertoire contient lui-même un répertoire Zend qui est la racine de l’ensemble des classes du framework. Copiez ZendFramework- 1.6 sur votre disque, à un endroit accessible au serveur web. Vous pouvez aussi le renommer. Dans notre cas, il s’agit de ZF, placé dans /usr/local/share. REMARQUE – Le ZF est très flexible et tout ou presque tout (noms de répertoires, organisation des répertoires, etc.) est paramétrable. Nous allons être assez directif pour éviter de nous embrouiller avec une longue liste d’options. Une fois que vous aurez compris les principes, vous pourrez vous lancer dans les variantes si vous le souhaitez. Maintenant, récupérez l’archive du ZSCOPE, sur notre site. Décompressez-le et placez le répertoire racine zscope dans htdocs. Une autre possibilité est de récupérer le code sur le site CVS de http://webscope.cvs.sourceforge.net pour pouvoir faire des modifications et améliorer le ZS COPE. Un défi possible, si plusieurs lecteurs sont intéressés, est de refondre le W EBSCOPE développé avec notre MVC personnel, en une nouvelle version entièrement basée sur le Zend Framework. Si vous êtes tentés, allez voir sur le site de SourceForge l’état des choses au moment où vous lisez ce livre. Après cette installation initiale, il n’est pas encore possible d’accéder à ZS COPE avec l’URL http://localhost/zscope, car le ZF s’appuie sur un principe de redirection et de réécriture des requêtes HTPP dont il faut au préalable s’assurer le bon fonction- nement. 9.1 Mise en route 359 9.1.2 Redirection des requêtes avec le ZF L’application ZSCOPE contient deux sous-répertoires : 1. un répertoire application, avec tout le code d’une application MVC, à savoir les contrôleurs, les modèles et les vues ; voir plus loin pour des détails ; 2. un répertoire www destiné à contenir la partie publique de l’application, autrement dit tous les fichiers qui peuvent être directement référencés par une URL, et seulement ceux-là. L’idée est que tous les fichiers qui peuvent être directement envoyés à un navi- gateur (images, PDF, CSS, Javascript, etc.) sont dans www.Lecodedel’application elle-même n’est pas dans www mais dans application, afin d’interdire qu’on puisse accéder avec un navigateur à ce code, pour limiter les risques de fuite. Le seul fichier PHP qui se trouve dans www est index.php. C’est lui qui charge les parties de l’application nécessaires à la satisfaction d’une requête HTTP, et toutes ces requêtes lui sont adressées sans exception. Voilà pour les principes. Leur mise en œuvre suppose un peu de configuration. Configuration d’un hôte virtuel À la base, le site est accessible à l’URL http://localhost/zscope/www (au besoin rem- placez localhost par le nom de votre machine). On peut s’en contenter sur un site de test, mais rien n’empêche de tenter d’accéder à http://localhost/zscope/application,ce que l’on veut éviter. Le serveur Apache permet la définition d’hôtes virtuels qui correspondent à un site particulier, sur une machine particulière. On peut avoir plusieurs hôtes virtuels pour un même serveur web, ce qui mène à engendrer (virtuellement) plusieurs espaces de noms correspondant à la même adresse IP. Pour définir un hôte virtuel, éditez le fichier httpd.conf et ajoutez le bloc d’instruc- tions suivant : NameVirtualHost *:80 <VirtualHost *:80> ServerName zscope.local DocumentRoot /Applications/MAMP/htdocs/zscope/www </VirtualHost> Il faut de plus associer le nom zscope.local à l’IP 127.0.0.1 de la machine locale (si vous travaillez sur la machine locale). Pour cela on ajoute la ligne suivante dans /etc/hosts (sur Linux ou Mac OS) ou c:/windows/system32/drivers/etc/hosts (Windows). Maintenant, redémarrez Apache, et vous devriez pouvoir accéder au site ZS COPE àl’URLhttp://zscope.local. Toute l’arboresscence du site externe à www,et en particulier application, est devenue invisible et inaccessible. 360 Chapitre 9. Introduction au Zend Framework Tout rediriger vers index.php La seconde partie de la configuration consiste à effectuer une réécriture des requêtes HTTP pour les rediriger systématiquement vers le fichier index.php. On utilise pour cela le module mod_rewrite d’Apache, et des instructions placées dans un fichier .htaccess. Vérifiez que le module mod_rewrite est bien actif pour votre serveur Apache en cherchant la ligne suivante dans httpd.conf , sinon ajoutez-la. LoadModule rewrite_module modules/mod_rewrite.so Ensuite, vous pouvez vous appuyer sur le fichier .htaccess présent dans www.Voici son contenu : #R´e´ecriture des requ^etes RewriteEngine On RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css)$ RewriteRule .* index.php Un fichier .htaccess contient des instructions à destination du serveur Apache, propres aux fichiers contenus dans le répertoire courant. Ici, on demande à ce que toutes les URL autres que celles référençant des fichiers à transmettre directement au navigateur (images, Javascript, CSS, PDF, etc.) soient redirigées vers index.php. Essayez par exemple d’accéder à l’adresse http://zscope.local/essai.php. Si votre configuration fonctionne, le serveur vous redirigera vers index.php. Cela supprime en grande partie les messages 404 Not Found renvoyés par le serveur quand une URL ne correspond pas à une ressource existante. Ce message ne peut plus apparaître que pour les URL non redirigées, comme par exemple un fichier image qui n’existe pas. Si tout va bien, vous devriez cette fois accéder à la page d’accueil et voir l’affichage de la figure 9.1. Comme vous le voyez, il s’agit du W EBSCOPE,dansunétatembryon- naire, puisqu’aucune fonction n’est réalisée. Les contrôleurs et actions existants sont de simples illustrations des composants du ZF. REMARQUE – Si l’application ZSCOPE n’est pas à la racine de votre serveur web (par exemple si vous y accédez avec http://localhost/zscope), vous devez définir le paramètre base_url dans le fichier application/config.ini (sur le même exemple, le paramètre doit être zscope). Sinon, les images et feuilles de style CSS ne seront pas trouvées. 9.1.3 Organisation et conventions Maintenant, jetons un coup d’œil à l’ensemble de l’organisation du site, résumée dans la figure 9.2. Elle suit les règles par défaut du Zend Framework. Bien que cela puisse sembler inutilement compliqué de prime abord, il faut se souvenir qu’on cherche à gérer des applications larges et complexes. Le découpage très prononcé en une hiérarchie de répertoires assez profonde a l’avantage de faciliter la localisation des différentes parties d’une application. 9.1 Mise en route 361 Figure 9.1 — Page d’accueil du ZSCOPE models www js css images index.php controllers views helpers scripts zscope application IndexController.php, InscriptionController.php, Internaute.php, Film.php, Role.php config.ini BaseURL.php index inscription index.phtml index.phtml, layout.phtml Figure 9.2 — Organisation (minimale) du code pour une application Zend Vous pouvez déjà remarquer qu’il s’agit d’une extension de la structuration adop- tée pour notre MVC simplifié utilisé pour la réalisation du W EBSCOPE 1 .Une 1. Il serait plus juste d’admettre que notre MVC est une simplification radicale du ZF. 362 Chapitre 9. Introduction au Zend Framework différence est le répertoire www qui ne contient que les fichiers qui peuvent être référencés par une URL dans un navigateur. Tout le reste se trouve dans application. Comme dans notre MVC, ce dernier contient trois sous-répertoires correspondant respectivement aux contrôleurs, aux modèles et aux vues. Il contient également un fichier de configuration, config.ini. Les fichiers des contrôleurs Zend sont nommés Nom Controller,oùNom repré- sente le nom du contrôleur, commençant par une majuscule. Ici, nous avons les contrôleurs index, inscription, etc., correspondant aux fichiers IndexController.php, InscriptionController.php, etc. Comme dans notre MVC, un contrôleur est une classe constituée d’actions, méthodes dont le nom se termine par Action. Nous y revenons page 373. Les modèles sont des classes PHP. Les classes représentant des données persis- tantes sont construites selon une mapping objet-relationnel proposé par le ZF qui permet de naviguer dans la base sans effectuer de requêtes SQL. Voir page 379. Enfin, le répertoire views contient les vues. Sa structuration est un peu plus compliquée. Les fragments de pages HTML sont dans le sous-répertoire scripts,et on trouve encore un sous-répertoire pour chaque contrôleur. Les fichiers de vues ont tendance à proliférer, d’où une structuration en répertoires. Les fichiers ont pour extension .phtml car il s’agit d’un mélange de PHP et de HTML. Notez également dans scripts la présence du fichier layout.phtml, qui contient la mise en forme graphique du site. Dans ce qui suit, référez-vous au schéma de la figure 9.2 pour retrouver les fichiers décrits. 9.1.4 Routage des requêtes dans une application Zend Une requête HTTP adressée à l’application a le format suivant : http://zscope.local/ctrl/action[params] Ici, ctrl et action représentent respectivement le nom du contrôleur et le nom de l’action, et leur valeur par défaut est index. La forme de la requête est étrange puisqu’on semble faire référence à un sous-répertoire ctrl de la racine du site web, et même à un sous-répertoire action. Ces répertoires, comme nous l’avons vu, n’existent pas, mais le mécanisme de redirection renvoie la requête vers index.php. À ce moment-là un processus de routage implanté par le Zend Framework analyse la requête et détermine le contrôleur et l’action demandés. La méthode implantant l’action du contrôleur ctrl est alors exécutée. Si, par exemple, on appelle http://zscope.local/model/simpletbl,laméthode simpletblAction() du contrôleur ModelController sera exécutée par le script index.php. Cette réécriture permet de normaliser l’adressage des fonctionnalités d’une appli- cation Zend. Les paramètres passés à un action peuvent l’être soit sous la forme standard ?nom=valeur, soit à nouveau sous la forme /nom/valeur. . http://zscope.local/model/simpletbl,laméthode simpletblAction() du contrôleur ModelController sera exécutée par le script index.php. Cette réécriture permet de normaliser l’adressage des fonctionnalités. Décompressez-le et placez le répertoire racine zscope dans htdocs. Une autre possibilité est de récupérer le code sur le site CVS de http://webscope.cvs.sourceforge.net pour pouvoir faire des modifications et. Javascript, etc.) sont dans www.Lecodedel’application elle-même n’est pas dans www mais dans application, afin d’interdire qu’on puisse accéder avec un navigateur à ce code, pour limiter les risques de

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

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN