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

Pratique de MySQL et PHP- P91 pdf

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

428 Chapitre 11. Récapitulatif PHP Tableau 11.1 — Opérateurs arithmétiques Opérateur Description $a+$b Addition de $a et $b $a-$b Soustraction de $b à $a $a*$b Multiplication de $a et $b $a/$b Division de $a par $b $a%$b $a modulo $b (reste de la division de $a par $b) 11.4.1 Concaténation de chaînes Un opérateur très fréquemment utilisé est la concaténation de chaînes, simplement représentée par le point « . ». $c1 = "Bonjour "’; $c2 = "Dominique"; // Affichage de la cha^ıne "Bonjour cher Dominique" echo $c1 . " cher " . $c2; Nous avons déjà discuté de l’opérateur d’affectation ’=’, qu’il ne faut surtout pas utiliser pour effectuer des tests d’égalité ! Il est couramment utilisé pour stocker dans une variable le résultat d’un calcul. $i=4+3; $c = "Bonjour cher"; $i=$i+2; $c = $c . " Dominique" Les deux dernières formes sont très courantes : elles utilisent une variable à la fois comme opérande (dans la partie droite de l’affectation) et pour stocker le résultat (dans la partie gauche de l’affectation). Il existe une syntaxe permettant d’exprimer de manière plus économique ce type d’opération. $i += 2; $c .= " Dominique" Cette notation évite d’avoir à répéter le nom de la variable. Elle peut être utilisée avec tous les opérateurs arithmétiques et l’opérateur de concaténation. 11.4.2 Incrémentations Une autre technique très couramment utilisée est l’incrémentation d’un compteur, dans une boucle par exemple. L’écriture normale est $i=$i+1.PHPreprenddu C une syntaxe plus compacte : l’expression $i++ est équivalente à la précédente et incrémente de 1 la valeur de $i. Comme toute expression, $i++ a une valeur, en l’occurrence la valeur de $i avant son incrémentation. Pour obtenir la valeur $i après son incrémentation, on utilise 11.4 Opérateurs 429 ++$i. Les mêmes expressions existent avec l’opérateur de soustraction. Ces subtilités du langage sont liées à la volonté de faire de PHP un langage où tout (presque tout) est expression, c’est-à-dire a une valeur. On peut tout à fait s’épargner l’utilisation de ce genre de technique si on trouve qu’elles ne favorisent pas la qualité du code. Voici quelques exemples résumant ces opérateurs unaires. $i=4;//$ivaut 4 $i++; / $i vaut 5 $j = ++$i; // $j vaut 6, $i vaut 6 $k = $i++; // $k vaut 6, $i vaut 7 $k ; // $k vaut 5 11.4.3 Opérateurs de bits La table 11.2 donne la liste des opérateurs de bits. Il agissent sur des entiers et permettent de manipuler la représentation binaire. En déplaçant tous les bits d’un cran vers la gauche par exemple, on obtient le double de sa valeur. Tableau 11.2 — Opérateurs de bits Opérateur Description $a&$b ET binaire. Renvoie un entier dont les bits à 1 sont ceux à 1 dans $a ET dans $b. $a|$b OU binaire. Renvoie un entier dont les bits à 1 sont ceux à 1 dans $a OU dans $b. $a^$b OU EXCLUSIF binaire. Renvoie un entier dont les bits à 1 sont ceux à 1 dans $a OU dans $b, mais pas dans les deux. ˜ $a Renvoie un entier dont les bits sont inversés par rapport à ceux de la variable $a. $a << $b Décale les bits de $a de $b positionsverslagauche. $a >> $b Décale les bits de $a de $b positionsversladroite. 11.4.4 Opérateurs logiques Les opérateurs logiques sont donnés dans la table 11.3. Rappelons qu’une valeur est interprétée comme vraie si elle est différente de 0 ou de la chaîne vide, et fausse sinon. Tableau 11.3 — Opérateurs logiques Opérateur Description $a && $b (ET) Renvoie vrai si $a ET $b sont vrais. $a and $b Idem que &&. $a || $b (OU) Renvoie vrai si $a OU $b est vrai. $a or $b Idem que ||. $a xor $b Ou exclusif : $a OU $b est vrai, mais pas les deux. !$a (NOT). Renvoie la négation de $a. 430 Chapitre 11. Récapitulatif PHP Enfin la table 11.4 donne la liste des opérateurs de comparaison de PHP. Il est très important de noter, si vous n’êtes pas familier du langage C ou de ses dérivés (C++, Java) que le test d’égalité s’écrit avec deux ’=’. Une erreur très courante est d’oublier un ’=’ dans un test d’égalité. L’interpréteur ne signale rien puisque l’opérateur d’affectation renvoie une valeur qui peut être interprétée comme un booléen. $i=1; $j=2; if ($i == $j) // Renvoie FALSE: i est diff´erent de j. if ($i = $j) // Renvoie TRUE ! Dans l’exemple ci-dessus, le deuxième test utilise (par erreur) l’affectation ’=’ et non la comparaison ’==’. Dans ce cas la valeur $j est affectée à $i, et la valeur de cette affectation est elle-même la valeur de $j, soit 2, interprétée comme TRUE.Non seulement le test ne donne pas le résultat attendu, mais la valeur de $i a été modifiée. Ce genre d’erreur est difficile à détecter, et fait partie des faiblesses de la syntaxe du C qui a été reprise dans PHP. Tableau 11.4 — Opérateurs de comparaison Opérateur Description $a == $b Vrai si $a est égal à $b. $a != $b Vrai si $a est différent de $b. $a < $b Vrai si $a est inférieur à $b. $a > $b Vrai si $a est supérieur à $b. $a <= $b Vrai si $a est inférieur ou égal à $b. $a >= $b Vrai si $a est supérieur ou égal à $b. 11.5 STRUCTURES DE CONTRÔLE Les structures de contrôles sont les tests et les boucles. Elles permettent de spécifier, en fonction de l’état d’un script à l’exécution (déterminé par la valeur de certaines variables), quelles sont les parties du script à effectuer (structures de tests), ou combien de fois on doit les effectuer (structures de boucle). L’unité de base pour décrire les actions d’un script est l’instruction, qui est typi- quement l’affectation d’une valeur à une variable, ou toute autre expression plus complexe. Les instructions sont séparées par des points virgules. On place le contrôle sur des blocs. Un bloc est une suite d’instructions, exécutées en séquence et solidai- rement, et encadrées par ’{’ et ’}’. Là encore cette syntaxe est reprise du C. 11.5 Structures de contrôle 431 11.5.1 Tests La structure la plus courante est le if else. Voici la syntaxe. if (expression ) { // Bloc si expression est vraie. } else { // Bloc si expression est fausse. } // Ici le script continue. Le else, et son bloc associé, est optionnel. De même, si le bloc du if contient une seule instruction, on peut se passer des accolades. expression est en général un test de comparaison, éventuellement plusieurs avec des opérateurs logiques. Comme nous l’avons vu, on peut utiliser n’importe quelle expression, y compris des appels de fonction, puisque toute valeur peut être interprétée comme vrai ou faux. Les instructions if peuvent être imbriquées (un if dans un autre if) et cumulées (plusieurs if consécutifs), comme le montre l’exemple ci-dessous. Il n’y a pas de limite à la profondeur d’imbrication des if, si ce n’est le manque de lisibilité qui en découle. Une bonne règle est de ne pas s’autoriser plus de deux niveaux d’imbrications. Au-delà, le code est trop complexe et il vaut mieux recourir à des fonctions. if (expr1 ) { if (expr2 ) { // expr1 et expr2 sont vraies. } else { // expr1 vraie, expr2 fausse } } else if (expr3 ) { // expr1 fausse, expr3 vraie. } else { // expr1 et expr3 fausses. } La structure else if illustrée ci-dessus peut s’écrire également elseif. Elle permet notamment de passer en revue les différentes valeurs possibles pour une expression, et d’exécuter le bloc approprié. Une structure équivalente pour ce type de test est le switch. 432 Chapitre 11. Récapitulatif PHP switch (expression ) { case valeur1 : // expression vaut valeur1. // Il faut sortir du switch ! break; case valeur2 : // expression vaut valeur2. break; default: // expression ne vaut aucune des valeurs list´ees break; } Le switch est une structure de test initialisée avec l’instruction switch (expression ) qui définit expression comme la valeur que l’on va ensuite comparer avec une liste de possibilités. Chaque possibilité de cette liste est représentée par une instruction « case valeur : ». Si expression est égale à valeur, alors les instructions qui suivent sont exécutées, jusqu’à la fin du switch,et ce indépendamment des case ! Pour indiquer que l’on veut sortir de la structure switch dès que la valeur de expression a été rencontrée, et le bloc exécuté, il faut finir ce bloc par une instruction break, comme indiqué ci-dessus. Àlafindublocswitch, il est possible d’ajouter le mot-clé default qui indique l’ensemble des instructions à exécuter si tous les case précédents ont échoué. Signalons, pour conclure sur les tests, qu’il existe une syntaxe légèrement dif- férente pour les if-else. Le bloc après le if ou le else commence par ’:’, et la structure se termine par endif;. if (expression ): // Bloc si expression est vraie. else: // Bloc si expression est fausse. endif; 11.5.2 Boucles Comme d’habitude, on retrouve les même constructions qu’en C, ainsi qu’une instruction foreach pratique pour parcourir les tableaux associatifs. Le while Le while permet d’exécuter un bloc d’insructions tant qu’une condition est remplie. La structure est : while (expression ) { // expression est vraie. } . arithmétiques Opérateur Description $a+$b Addition de $a et $b $a-$b Soustraction de $b à $a $a*$b Multiplication de $a et $b $a/$b Division de $a par $b $a%$b $a modulo $b (reste de la division de $a par. différente de 0 ou de la chaîne vide, et fausse sinon. Tableau 11.3 — Opérateurs logiques Opérateur Description $a && $b (ET) Renvoie vrai si $a ET $b sont vrais. $a and $b Idem que &&. $a. règle est de ne pas s’autoriser plus de deux niveaux d’imbrications. Au-delà, le code est trop complexe et il vaut mieux recourir à des fonctions. if (expr1 ) { if (expr2 ) { // expr1 et expr2

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