PHP - MySQL Avec Flash 8

779

Click here to load reader

Transcript of PHP - MySQL Avec Flash 8

  • PHP/MySQLavec Flash8

    9782212

    119718

    Code

    di

    teur

    :G

    11971

    ISB

    N:

    2-2

    12-1

    1971-2

    ISB

    N 1

    3:

    978-2

    -212-1

    1971-8

    J.-M. DefranceDiplm dun DEA de didactique delinformatique, Jean-Marie Defranceenseigne le multimdia Gobelins, l'cole de l'image. Il est parailleurs directeur technique de l'Agence W, socitspcialise dans le dveloppement de sites dynamiques.

    J.-M

    .

    De

    fr

    an

    ce

    Conc

    eptio

    n:

    Nor

    d Co

    mpo

    42

    J e a n - M a r i e D e f r a n c e

    Raliser des sites dynamiques en Flash avec ActionScript, MySQL et PHP (versions 5 ou 4)Comment afficher sur Internet des donnes en temps rel, tels les rsultats d'une lection ou le score dun matchde tennis ? Grce Flash 8, PHP et MySQL, qui permettent de concevoir des interfaces Web graphiques et convi-viales, couples des bases de donnes. En effet, si ActionScript 2.0 prend dsormais en charge des traitementsalgorithmiques complexes, la cration d'un site dynamique en Flash ncessite encore l'intervention d'un langage deprogrammation ct serveur pour assurer la liaison avec la base de donnes. Cet ouvrage a choisi de dcrire tousles types dinteractions entre Flash et les technologies serveur PHP/MySQL les plus courantes. Il dtaille aussi lins-tallation dune infrastructure serveur locale (Wamp 5 pour PC et Mamp pour Mac), ce qui vous permettra de mettreau point les scripts depuis votre ordinateur.

    Un livre pour tous les niveauxPratique et didactique, cet ouvrage vous apprendra comment programmer en ActionScript et en PHP, mme sivous tes dbutant, mais surtout comment exploiter ces technologies pour crer des sites dynamiques dots duneinterface client en Flash. Il vous expliquera galement comment grer facilement des flux de donnes XML laidedes nouvelles fonctions de PHP 5 et comment dvelopper rapidement des sites dynamiques performants en utili-sant Flash Remoting et AMFPHP. Ce livre est complt par 9 tudes de cas pratiques (compteur de visites, contrledaccs, chat en ligne) et une extension Web sur laquelle figurent tous les fichiers sources des exemples.

    Au sommaire

    Flash 8 et les sites dynamiques Environnement de dveloppement Infrastructure serveur PHP/MySQL In-terface Flash 8 L'diteur de code PHP de Dreamweaver Fondamentaux de la programmation Introduction la programmation PHP, les bases du langage ActionScript, les bases du langage Programmation structu-re Introduction la programmation structure PHP et la programmation structure ActionScript et laprogrammation structure Interfaage Flash-PHP-Txt Programmation oriente objet Introduction la pro-grammation oriente objet PHP et la programmation oriente objet ActionScript et la programmation orienteobjet Base de donnes MySQL Introduction aux bases de donnes Gestion d'une base de donnes avecphpMyAdmin Commandes SQL avances Interfaage Flash-PHP-MySQL XML avec Flash et PHP Introduction au XML XML et Flash XML et PHP Interfaage Flash-PHP-XML et autres interfaages XML Mise au point des programmes et solution alternative Mise au point des programmes PHP Mise au pointdes programmes ActionScript Solution alternative AMFPHP Annexes Configuration d'une infrastructureserveur locale pour Mac Ressources en ligne.

    qui sadresse cet ouvrage ? Aux dbutants en programmation ActionScript et PHP souhaitant raliser des sites dynamiques en Flash Aux graphistes et dveloppeurs connaissant dj la programmation ActionScript et dsirant coupler

    leurs animations Flash une base de donnes Aux programmeurs connaissant dj PHP et souhaitant intgrer leurs applications Web dans une interface Flash

    ou dsirant dvelopper des sites professionnels l'aide de Flash Remoting et dAMFPHP

    PHP/MySQLavec Flash 8

    Sur le site www.editions-eyrolles.com dialoguez avec l'auteur tlchargez le code source des exemples @ P

    HP/M

    ySQ

    Lav

    ecFl

    ash

    811971_PHPMySQL_FL8 2/10/06 14:01 Page 1

  • PHP/MySQLavec Flash 8

    Titre_FL8_XP 11/08/06 9:06 Page 1

  • CHEZ LE MME DITEUR

    Du mme auteur

    J.-M. DEFRANCE. PHP/MySQL avec Dreamweaver 8. N11771, 2006, 632 pages.

    J.-M. DEFRANCE. PHP/MySQL avec Dreamweaver MX 2004. N11709, 2005, 550 pages (format semi-poche).

    Autres ouvrages sur Flash

    C. BERG. Je cre mon site Internet avec Dreamweaver 8 et Flash 8. N11977, 2006, 144 pages + CD-Rom vido.

    M. LAVANT. Flash 8 Professional. N11950, 2006, 678 pages.

    W. SIRACUSA. Faites vos jeux avec Flash ! N11993, 2006, 220 pages.

    D. TARDIVEAU. 120 scripts pour Flash 8. N11749, 2006, 462 pages.

    A. TASSO. Apprendre programmer en ActionScript Avec 60 exercices corrigs. N11556, 2006, 456 pages.

    M. CAPRARO et al. Flash MX 2004 Magic. N11513, 2004, 164 pages.

    Autres ouvrages sur PHP

    C. PIERRE DE GEYER et G. PONON. Mmento PHP et SQL. N11785, 2006, 14 pages.

    G. PONON. Best Practices PHP 5. N11676, 2005, 470 pages.

    E. DASPECT et C. PIERRE DE GEYER. PHP 5 avanc (2e dition). N11669, 2004, 796 pages.

    J. ENGELS. PHP 5 Cours et exercices. N11407, 2005, 518 pages.

    P. CHALAT, D. CHARNAY et J.-R. ROUET. Les Cahiers du Programmeur PHP/MySQL et JavaScript. N11678, 2005, 212 pages.

    S. MARIEL. Les Cahiers du Programmeur PHP 5. N11234, 2005, 276 pages.

    J.-M. CULOT. PHP 5. N11487, 2003, 390 pages.

  • J e a n - M a r i e D e f r a n c e

    PHP/MySQLavec Flash 8

    Titre_FL8_XP 11/08/06 9:06 Page 2

  • DITIONS EYROLLES61, bld Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement

    le prsent ouvrage, sur quelque support que ce soit, sans lautorisation de lditeur ou du Centre Franais dexploi-tation du droit de copie, 20, rue des Grands Augustins, 75006 Paris. Groupe Eyrolles, 2006, ISBN : 2-212-11971-2

  • Table des matires

    Avant-propos

    Les technologies du Flash dynamique . . . . . . . . . . . . . . . . . . . . . . XXIObjectifs de louvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIItudes de cas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII

    CHAPITRE 1

    Flash 8 et les sites dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Du HTML au Flash dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Les sites statiques et le HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Les sites interactifs et les langages de script . . . . . . . . . . . . . . . . . . . . . . . 5Les sites dynamiques et les bases de donnes . . . . . . . . . . . . . . . . . . . . . . 7volution de PHP : de lorigine PHP 5 . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Exemples dapplications Flash dynamiques . . . . . . . . . . . . . . . . . . . . . 12Mises jour automatises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Une maintenance assiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Sites multilangues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Recherche multicritre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Diffusions dinformation en temps rel . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Reporting industriel ou financier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Interfaces client personnalises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Carte dinformation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Jeux en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Boutiques de produits en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    Defrance.Livre Page V Jeudi, 31. aot 2006 12:22 12

  • Titre du livreVI

    PARTIE IEnvironnement de dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    CHAPITRE 2

    Infrastructure serveur PHP-MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 21Choix de linfrastructure serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    tapes dinstallation de la suite Wamp 5 . . . . . . . . . . . . . . . . . . . . . . . . . . 23Arrt et dmarrage de Wamp 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Dcouverte du manager de Wamp 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Test du serveur local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Gestion des extensions PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Extensions installes par dfaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Installation dune extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    Gestionnaire phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    CHAPITRE 3

    Interface Flash 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Prsentation de linterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    Flash Basic 8 ou Flash Professionnel 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Dcouverte de linterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Les diffrents lments de linterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Amnagez votre interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    Le panneau Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Le navigateur de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45La bote outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Lditeur de script du panneau Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Utilisation du panneau Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    Fentre de script : lditeur de fichiers externes . . . . . . . . . . . . . . . . . . 59Le mode test de Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    Passage en mode test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Le panneau Sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    Le mode dbogage de Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Activer le dbogueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Le dbogueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    Defrance.Livre Page VI Jeudi, 31. aot 2006 12:22 12

  • Table des matiresVII

    CHAPITRE 4

    Lditeur de code PHP de Dreamweaver . . . . . . . . . . . . . . . . . . . . 69Dfinition dun site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    Informations locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Informations distantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Serveur dvaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    diteur en mode Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Outils de gestion de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    Indicateur de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Fragment de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80La barre doutils Insrer, option PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Les rfrences PHP de poche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Les rfrences du langage SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    Cration et test dun fichier PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Cration dun document PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Test dun document PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Raccourcis clavier pour la mise au point dun document PHP . . . . . . . . . 89

    PARTIE IILes fondamentaux de la programmation . . . . . . . . . . . . . . . . . . . . . . 93

    CHAPITRE 5

    Introduction la programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Notion et dfinition de la variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95La mtaphore de la bote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    Concept de la dclaration dune variable . . . . . . . . . . . . . . . . . . . . . . . . . 97Concept du typage dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Concept de la lecture dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Concept de laffectation par une valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Concept de laffectation par une autre variable . . . . . . . . . . . . . . . . . . . . . 100Concept de laffectation par rfrence . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Concept de la variable de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Concept dun tableau de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Concept de la constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    Defrance.Livre Page VII Jeudi, 31. aot 2006 12:22 12

  • Titre du livreVIII

    CHAPITRE 6

    PHP, les bases du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105La syntaxe de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    Extension de fichier PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Balises de code PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Expressions et instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Les oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

    Bibliothques de fonctions intgres PHP . . . . . . . . . . . . . . . . . . . . . . 120Fonctions PHP gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Fonctions PHP ddies aux tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Fonctions PHP ddies aux dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Fonctions PHP ddies aux chanes de caractres . . . . . . . . . . . . . . . . . . . 122Fonctions PHP ddies aux fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Fonctions PHP ddies MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    CHAPITRE 7

    ActionScript, les bases du langage . . . . . . . . . . . . . . . . . . . . . . . . . . 129Notions de base et terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    Prsentation de Flash et dActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . 129Terminologie employe en programmation ActionScript . . . . . . . . . . . . . 130

    Syntaxe et lments fondamentaux dActionScript . . . . . . . . . . . . . . . 134Rgles dcriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Principaux symboles de la syntaxe ActionScript . . . . . . . . . . . . . . . . . . . . 135Les variables et les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Les classes dobjets intgrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Les oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    Les fonctions intgres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Fonctions ActionScript dimpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Fonctions ActionScript diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Fonctions ActionScript mathmatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Fonctions ActionScript de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    Gestion des vnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162vnements dimages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162vnements de souris : on() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    Defrance.Livre Page VIII Jeudi, 31. aot 2006 12:22 12

  • Table des matiresIX

    vnements de clips : onClipEvent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Mthodes de gestionnaires dvnements . . . . . . . . . . . . . . . . . . . . . . . . . 172Les couteurs dvnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Incidences des vnements sur les clips . . . . . . . . . . . . . . . . . . . . . . . . . . 180

    Ciblage des lments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Chemin cible relatif ou absolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Structure dun chemin cible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Prsentation des diffrents types de ciblage . . . . . . . . . . . . . . . . . . . . . . . 194

    PARTIE IIIProgrammation structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

    CHAPITRE 8

    Introduction la programmation structure . . . . . . . . . . . . . . . . 209Notion dalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Structures de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    Structures de choix si()-alors-finSi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Structures de choix si()-alors-sinon-finSi . . . . . . . . . . . . . . . . . . . . . . . . . 211Structures de choix avec si()-alors-sinonSi()-finSi . . . . . . . . . . . . . . . . . . 212Structures de choix avec test()-cas()-finCas-finTest . . . . . . . . . . . . . . . . . 214

    Structures de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Structures de boucle avec boucleSi()-finBoucle . . . . . . . . . . . . . . . . . . . . 215Structures de boucle avec debutBoucle-boucleSi() . . . . . . . . . . . . . . . . . . 217Instructions de contrle de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

    Concept de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    CHAPITRE 9

    PHP et la programmation structure . . . . . . . . . . . . . . . . . . . . . . . . 223Porte des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

    Dfinition dun bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Temps de vie des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Les formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Le passage dans lURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Les cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Les sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

    Defrance.Livre Page IX Jeudi, 31. aot 2006 12:22 12

  • Titre du livreX

    Fonctions utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Gestion des fonctions utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

    Structures de programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Structures de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Structures de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Instructions de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243Redirection interpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

    CHAPITRE 10

    ActionScript et la programmation structure . . . . . . . . . . . . . . . 249Porte des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

    Dfinition dun bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Porte dune variable locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Porte dune variable de scnario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Porte dune variable globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

    Fonctions utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Dclaration et utilisation des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Appel dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Fonction gnrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Fonction avec passage darguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Fonction avec gestion du rsultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Bibliothques de fonctions externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    Structures de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Structures de choix avec if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Structures de choix avec if et else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Structures de choix avec if, else if et else . . . . . . . . . . . . . . . . . . . . . . . . . 267Structures de choix avec switch case . . . . . . . . . . . . . . . . . . . . . . . . . . 268Dclenchement des structures de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

    Structures de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Structures de boucle avec while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Structures de boucle avec do while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Structures de boucle avec for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Structures de boucle avec for in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

    Instructions de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Instruction de contrle avec break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Instruction de contrle avec continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

    Defrance.Livre Page X Jeudi, 31. aot 2006 12:22 12

  • Table des matiresXI

    CHAPITRE 11

    Interfaage Flash-PHP-Txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Terminologie spcifique aux sources de donnes . . . . . . . . . . . . . . . . . 277

    Source de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Transfert de donnes : chargement et envoi . . . . . . . . . . . . . . . . . . . . . . . 278Interfaage entre deux applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    Complments techniques concernant les transferts de donnes . . . . . 278Lencodage UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278Les mthodes GET et POST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Les problmes de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Restriction daccs aux donnes dun autre domaine . . . . . . . . . . . . . . . . 283

    Envoi de donnes de Flash vers PHP avec GetURL . . . . . . . . . . . . . . . 285Le document Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286Le document PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Test dans le WebLocal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

    Chargement dun fichier texte avec loadVariables() ou loadVariablesNum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

    Un annuaire Flash-Txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Interfaage Flash-PHP avec loadVariables() ou loadVariablesNum() . . 296

    Un rpertoire Flash-PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Interfaage Flash-PHP avec la classe loadVars . . . . . . . . . . . . . . . . . . . 303

    Exemples de scripts utilisant la classe loadVars . . . . . . . . . . . . . . . . . . . . 307Un compteur Flash-PHP-Txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    PARTIE IVProgrammation oriente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    CHAPITRE 12

    Introduction la programmation oriente objet (POO) . . . . . 319Notion de classe et dobjet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Hritage et notion de sous-classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Terminologie de la POO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    Defrance.Livre Page XI Jeudi, 31. aot 2006 12:22 12

  • Titre du livreXII

    CHAPITRE 13

    PHP et la programmation oriente objet (POO) . . . . . . . . . . . . . 323Dclaration dune classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Cration dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Inclusion de classes externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Cration dune sous-classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

    CHAPITRE 14

    ActionScript et la programmation oriente objet (POO) . . . . 335Dclaration dune classe simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

    Un fichier externe .as par classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Chargement des classes dans le SWF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Syntaxe de la dfinition dune classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Mthodes et proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Le constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Cration dun objet (instanciation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Utilisation des mthodes et proprits dun objet . . . . . . . . . . . . . . . . . . . 338Application pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

    Rgles dusage des classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Documentez vos dclarations de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Utilisez le typage strict dans vos classes . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    Les chemins de classe et les paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Chemin de classe global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Chemin de classe li au document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Les paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

    Dclaration dune classe dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Mthodes get et set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    Syntaxe du set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Syntaxe du get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Application pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

    Membre private ou public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Application pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

    Membre static (variable de classe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Application pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

    Cration dune sous-classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359Application pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

    Defrance.Livre Page XII Jeudi, 31. aot 2006 12:22 12

  • Table des matiresXIII

    PARTIE VBase de donnes MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

    CHAPITRE 15

    Introduction aux bases de donnes . . . . . . . . . . . . . . . . . . . . . . . . . 365Concept dune base de donnes partir de la mtaphore du classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Terminologie lmentaire dune base de donnes . . . . . . . . . . . . . . . . . 368

    Terminologie structurelle de la base de donnes relationnelles . . . . . . . . 368Terminologie du systme de gestion de base de donnes relationnelles MySQL 369

    Mthodologie de conception dune base de donnes . . . . . . . . . . . . . . 370Dfinition des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371laboration dun modle entit-association . . . . . . . . . . . . . . . . . . . . . . . 371Schma relationnel de la base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . 373

    CHAPITRE 16

    Gestion dune base de donnes avec phpMyAdmin . . . . . . . . 381PhpMyAdmin, un gestionnaire de bases convivial . . . . . . . . . . . . . . . . 381Prsentation de linterface de phpMyAdmin . . . . . . . . . . . . . . . . . . . . 382Cration et gestion dune base de donnes . . . . . . . . . . . . . . . . . . . . . . 383

    Dfinition du type de chaque champ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383Cration de la base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Cration dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Insertion denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389Modification dun enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Modification des proprits dune table . . . . . . . . . . . . . . . . . . . . . . . . . . 396

    Configuration des droits dun utilisateur . . . . . . . . . . . . . . . . . . . . . . . . 399Fonctions des tables de la base mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Cration dun utilisateur MySQL en mode assist . . . . . . . . . . . . . . . . . . 400

    Sauvegarde et restauration dune base de donnes . . . . . . . . . . . . . . . 405Sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Restauration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

    Defrance.Livre Page XIII Jeudi, 31. aot 2006 12:22 12

  • Titre du livreXIV

    CHAPITRE 17

    Commandes SQL avances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Mthodes dexcution dune commande SQL . . . . . . . . . . . . . . . . . . . . 409Conditions de test des exemples de commande SQL . . . . . . . . . . . . . . 411Commande SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

    Commande SELECT simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414Commande SELECT avec des alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Commande SELECT avec des fonctions MySQL . . . . . . . . . . . . . . . . . . . 417Commande SELECT avec la clause DISTINCT . . . . . . . . . . . . . . . . . . . . 418Commande SELECT avec la clause WHERE . . . . . . . . . . . . . . . . . . . . . . 419Commande SELECT avec la clause ORDER BY . . . . . . . . . . . . . . . . . . . 428Commande SELECT avec la clause LIMIT . . . . . . . . . . . . . . . . . . . . . . . 430Commande SELECT avec jointure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    Commande INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Commande INSERT partir de valeurs : mthode 1 . . . . . . . . . . . . . . . . . 437Commande INSERT partir de valeurs : mthode 2 . . . . . . . . . . . . . . . . . 439Commande INSERT partir dune requte . . . . . . . . . . . . . . . . . . . . . . . . 439

    Commande DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442Commande UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444Commande REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

    CHAPITRE 18

    Interfaage Flash-PHP-MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447Interfaage PHP-MySql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    Concept de la connexion la base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448Cration dun fichier de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449Concept du jeu denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458Cration dun jeu denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459Exploitation dun jeu denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . 467Construction dune requte SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471Pages dadministration dune base de donnes . . . . . . . . . . . . . . . . . . . . . 478Structure dun espace dadministration multitable . . . . . . . . . . . . . . . . . . 498Gestion des erreurs MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

    Interfaage Flash-MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502Contrle daccs par mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

    Defrance.Livre Page XIV Jeudi, 31. aot 2006 12:22 12

  • Table des matiresXV

    PARTIE VIXML avec Flash et PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

    CHAPITRE 19

    Introduction au XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Dfinition du XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Avantages du XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Utilisations du XML avec Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

    Pour le stockage de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Pour le transfert de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Pour faciliter la maintenance dun site . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

    Structure dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Len-tte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Llment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Lattribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Les valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

    Rgles dcriture dun document XML bien form . . . . . . . . . . . . . . . 529

    CHAPITRE 20

    XML et Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Utilisation des objets XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

    La classe XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Mthodes des objets XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534Crer un objet XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Charger un document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Envoyer un objet XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Analyser un objet XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Cibler les lments XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Traiter les lments dun objet XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564Formater et structurer un objet XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

    Utilisation des objets XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571La classe XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572Mthodes des objets XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

    Defrance.Livre Page XV Jeudi, 31. aot 2006 12:22 12

  • Titre du livreXVI

    CHAPITRE 21

    PHP et XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Analyseur syntaxique XML de PHP 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 575

    Lextension xml de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Cration et utilisation dun analyseur xml . . . . . . . . . . . . . . . . . . . . . . . . . 577Gestionnaires et mthodes de lextension xml . . . . . . . . . . . . . . . . . . . . . 577Conversion dun fichier XML au format HTML . . . . . . . . . . . . . . . . . . . . 579Slection de donnes issues dun fichier XML et mmorisation dans un tableau de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585criture dun fichier XML en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

    Module simpleXML de PHP 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Chargement dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601Exportation dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602Gestion des nuds dun lment SimpleXML . . . . . . . . . . . . . . . . . . . . . 603Gestion des attributs dun lment SimpleXML . . . . . . . . . . . . . . . . . . . . 607

    CHAPITRE 22

    Interfaage Flash-PHP-XML et autres interfaages XML . . . . 611Interface PHP-XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611

    Formulaire PHP de mise jour dun fichier XML . . . . . . . . . . . . . . . . . . 612Interface Flash-XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618

    Un menu droulant XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618Interface Flash-PHP-XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627

    Une visionneuse de diapositives XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 628Interface Flash-XML-PHP-MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

    Systme de signets dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640Interface Flash-XML-Serveur Socket PHP . . . . . . . . . . . . . . . . . . . . . . 651

    Un systme de dialogue en ligne (chat) . . . . . . . . . . . . . . . . . . . . . . . . . . . 652

    Defrance.Livre Page XVI Jeudi, 31. aot 2006 12:22 12

  • Table des matiresXVII

    PARTIE VIIMise au point des programmes et solution alternative . . . . . . 663

    CHAPITRE 23

    Mise au point des programmes PHP . . . . . . . . . . . . . . . . . . . . . . . . 665Conseils pour bien programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665

    Utilisez lindentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665Commentez votre code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665Nommez les variables et les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666Utilisez les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Utilisez les fragments de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Construisez brique par brique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

    Les erreurs PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Syntaxe dun message derreur PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Erreur de syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668Erreur de smantique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669Erreur de logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669Erreur denvironnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

    Techniques de dbogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670Utilisez lquilibrage des accolades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670Dtectez les erreurs de logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670La fonction phpinfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671Les piges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672Les fonctions de dbogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672Suppression des messages derreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673Testez vos requtes SQL dans phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . 673

    CHAPITRE 24

    Mise au point des programmes Flash ActionScript . . . . . . . . . 675Conseils pour bien programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

    Utilisez lindentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675Commentez votre code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Nommez les variables et les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Utilisez les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Centralisez votre code dans une mme image cl . . . . . . . . . . . . . . . . . . . 677Structurez votre projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677

    Defrance.Livre Page XVII Jeudi, 31. aot 2006 12:22 12

  • Titre du livreXVIII

    Les erreurs ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677Erreur de syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677Erreur de smantique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680Erreur de logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Erreur denvironnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682

    Techniques de dbogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682Commentez le code suspect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682Linstruction trace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682Dbogueur en mode test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683Dbogueur distant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692

    Problme avec le navigateur Internet Explorer . . . . . . . . . . . . . . . . . . . 696Suite la mise jour dInternet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 696Solution propose par Adobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696Installation de la mise jour de Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697Utilisation des nouveaux modles HTML . . . . . . . . . . . . . . . . . . . . . . . . . 698

    CHAPITRE 25

    Solution alternative AMFPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703Prsentation de Flash Remoting et AMFPHP . . . . . . . . . . . . . . . . . . . . 703

    Flash Remoting pour PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703La classe AMFPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704

    Installation de Flash Remoting et dAMFPHP . . . . . . . . . . . . . . . . . . . 704Installation de Flash Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Installation dAMFPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707

    Connexion de type String avec AMFPHP . . . . . . . . . . . . . . . . . . . . . . . 711Cration dune classe service AMFPHP . . . . . . . . . . . . . . . . . . . . . . . . . . 711Cration dune application Flash Remoting . . . . . . . . . . . . . . . . . . . . . . . 713Test de lapplication avec NetDebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716

    Connexion de type RecordSet avec AMFPHP . . . . . . . . . . . . . . . . . . . . 718Cration des classes service AMFPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . 718Cration dune application Flash Remoting avec RecordSet . . . . . . . . . . 722Test de lapplication avec NetDebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725Variante avec filtre paramtrable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

    Defrance.Livre Page XVIII Jeudi, 31. aot 2006 12:22 12

  • Table des matiresXIX

    Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731

    ANNEXE A

    Configuration dune infrastructure serveur locale pour Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733

    Mamp, une infrastructure serveur pour Mac . . . . . . . . . . . . . . . . . . . . 733Installation de Mamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734Utilisation de Mamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736Cration dune base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738Emplacement du rpertoire racine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740Configuration dun site dans Dreamweaver . . . . . . . . . . . . . . . . . . . . . 742Consultation du site local depuis un navigateur . . . . . . . . . . . . . . . . . . 744

    ANNEXE B

    Ressources en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747Ressources de louvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747Ressources Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

    Site sur Wamp 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747Site sur Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747Sites sur Flash 8 et PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748Site sur PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751Site sur MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753

    Defrance.Livre Page XIX Jeudi, 31. aot 2006 12:22 12

  • Defrance.Livre Page XX Jeudi, 31. aot 2006 12:22 12

  • AVANT-PROPOS

    Les technologiesdu Flash dynamique

    Aujourdhui, Flash sest impos dans lunivers dInternet comme un standard pour la cration et lapublication de contenu multimdia en ligne. Dsormais, plus de 98 % des navigateurs sont quipsdu plug-in Flash, ce qui rend ses animations utilisables sans tlchargement pralable par tous lesinternautes, et devrait convaincre les derniers concepteurs encore rticents utiliser Flash dans leurscrations.Cependant, les exigences des ralisateurs danimations Flash ne se limitent plus la compositiondinterfaces sonorises et au graphisme labor. Leurs crations doivent maintenant permettre demettre en uvre des applications Web dynamiques la fois puissantes et esthtiques. La solution quirpond pleinement ces nouvelles attentes est le Flash dynamique , car il permet de crer desapplications associant la souplesse dun client lger la puissance des technologies serveur couplesavec une base de donnes.En effet, avec les dernires avances du langage ActionScript 2.0, Flash est dsormais en mesure deprendre en charge des traitements algorithmiques complexes. Toutefois, mme si lActionScript 2.0est encore plus rapide et performant que les versions prcdentes, la cration dune animation Flashdynamique ncessite toujours lintervention dun second langage de programmation ct serveur,afin dassurer la liaison avec une base de donnes.Dans le cadre de cet ouvrage, nous utiliserons le couple PHP-MySQL qui est dsormais lune destechnologies serveur les plus utilises dans les applications Web dynamiques. De plus, PHP disposedun nombre important de bibliothques de fonctions qui viendront complter les scripts de lAS 2.0tout en permettant dquilibrer la charge entre le poste client et le serveur pour obtenir une applicationencore plus performante.Nous pourrions difficilement prsenter le Flash dynamique sans consacrer une partie au XML. Eneffet, grce ses nombreuses fonctions qui permettent de traiter nativement un fichier XML, Flashpeut dsormais changer trs facilement ses donnes avec tout type de technologie. De mme, si lastructure des informations dun fichier XML lui permet de se substituer lusage dune base de

    Defrance.Livre Page XXI Jeudi, 31. aot 2006 12:22 12

  • Titre du livreXXII

    donnes, en Flash dynamique elle sera surtout exploite pour acheminer les informations issuesdune base de donnes vers lanimation Flash, tout en conservant sa structure initiale.Enfin, nous nous intresserons aussi la solution alternative AMFPHP, qui permet de mettre enuvre rapidement un systme de communication entre le client Flash et des applications serveurPHP.Ainsi, lusage conjoint de ces diffrentes technologies permet dlaborer des applications Flashdynamiques la fois dotes dune interface client esthtique et sonore, mais aussi de ressourcesserveur puissantes, capables de sauvegarder des donnes complexes ou encore de grer tout typedinformations en temps rel.

    Objectifs de louvrageLe contenu de ce volume a t pens de faon rpondre aux attentes des concepteurs Web dsirantcrer des applications Flash dynamiques laide des technologies ActionScript 2.0, PHP, MySQLet XML. Aucun prrequis en programmation ni en base de donnes nest ncessaire, mais uneexprience dans la cration danimations Flash est souhaitable.Louvrage est divis en de plusieurs parties abordant progressivement les diffrentes techniques deprogrammation depuis la syntaxe dun langage jusqu la programmation objet.Dans chacune de ces parties, un chapitre dintroduction vous permettra de dcouvrir les concepts debase. Il est suivi de deux autres chapitres traitant de la mise en uvre de ces techniques en Action-Script et en PHP. Ltude parallle des deux langages facilitera ainsi le transfert de connaissances oudexpriences pralables dune technologie lautre.Deux autres parties sont consacres aux bases de donnes et aux structures XML afin de mettre rapide-ment en pratique lutilisation conjointe de ces diffrentes technologies pour raliser des applicationsFlash dynamiques.Nous vous prsenterons aussi les diffrents types dinterfaages possibles entre une applicationcliente Flash et des ressources serveur TXT, PHP, MySQL ou XML. Ces interfaages pourront treensuite trs facilement adapts vos futurs projets, vous permettant ainsi damliorer la productivitde vos crations. la fin de cet ouvrage, nous verrons en dtail comment installer et exploiter les classes AMFPHP.Cette technique de communication entre Flash et le serveur nest pas la seule solution alternative auxinterfaages prsents dans cet ouvrage, mais elle prsente lavantage dtre dveloppe en OpenSource et dexploiter la technologie serveur PHP.

    tudes de casAfin dillustrer le fonctionnement des diffrentes techniques prsentes, chaque partie se termine pardiverses tudes de cas pratiques : un annuaire (Flash + TXT) (chapitre 11) ; un rpertoire (Flash + PHP) (chapitre 11) ;

    Defrance.Livre Page XXII Jeudi, 31. aot 2006 12:22 12

  • Les technologies du Flash dynamiqueAVANT-PROPOS XXIII

    un compteur de visite Flash (Flash + PHP + TXT) (chapitre 11) ; un back-office dadministration dune base de donnes (PHP + MySQL) (chapitre 18) ; un contrle daccs dynamique (Flash + PHP + MySQL) (chapitre 18) ; un menu droulant XML (Flash + XML) (chapitre 22) ; une visionneuse de diapos (Flash + PHP + XML) (chapitre 22) ; un systme de signets dynamiques (Flash + XML + PHP + MySQL) (chapitre 22) ; un systme de discussion en ligne Chat (Flash + XML + socket PHP) (chapitre 22).

    Defrance.Livre Page XXIII Jeudi, 31. aot 2006 12:22 12

  • 1Flash 8

    et les sites dynamiques

    Dans ce premier chapitre, nous allons rappeler le fonctionnement des sites statiques pour mieuxcomprendre celui des sites dynamiques et plus particulirement celui des applications Flash dynami-ques. Nous vous prsenterons aussi, en guise dexemple, quelques applications Web dynamiques lafois puissantes et esthtiques exploitant le couple Flash-PHP.

    Du HTML au Flash dynamiqueLes sites statiques et le HTML

    Le langage HTMLAvant de prsenter les langages utiliss pour la conception de sites dynamiques, rappelons quelquesnotions de base sur les pages Web statiques. Nous appelons page Web toute page pouvant treaffiche dans un navigateur (Internet Explorer, Netscape). Le langage utilis pour la conceptiondune page Web est le Hyper Text Markup Language. Il ne sagit pas dun langage de programmationau sens propre, mais dun langage de description dune page Web. Le fichier qui contient la descrip-tion de cette page porte en gnral lextension .htm ou .html. Il est constitu du texte et des liens auximages afficher, rpartis entre des balises (par exemple : ) qui dterminent la faon dontces lments seront prsents dans le navigateur. Certaines de ces balises permettent galement detransformer un texte ou une image en lien hypertexte (). Ces hyperliens (les liens hypertextes)sont trs importants dans une page Web, puisquils permettent dorganiser la navigation dans un siteen reliant les pages entre elles. Les internautes peuvent passer dune page lautre grce un simpleclic sur ces liens, do lexpression naviguer ou surfer sur le Web (voir figures 1-1 et 1-2).

    Defrance.Livre Page 1 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I2

    Figure 1-1Exemple de code HTML dune page Web

    Figure 1-2Interprtation et affichage du code de la figure 1-1 dans un navigateur Internet : le navigateur reoit le code HTML de la page et laffiche lcran en interprtant les diffrentes balises quil contient.

    Defrance.Livre Page 2 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 3

    Vous pouvez ainsi mettre en forme votre texte et disposer les images votre convenance dans la pageen les reliant entre elles par des liens hypertextes. Cependant, vous ne disposez daucune instructionpour raliser un traitement diffrent en fonction dun vnement ou dune condition particulire.Cest pourquoi une page HTML est dite statique : elle saffiche toujours sous la mme forme ettoutes les pages susceptibles dtre appeles doivent tre stockes sur le serveur (voir figure 1-3).

    Nous verrons plus loin que dautres langages, comme PHP (Personal Home Page, devenu par la suiteHypertext Preprocessor), permettent de crer des pages dynamiques qui peuvent tre personnalisesselon une requte ou le profil de linternaute. Ils utilisent pour cela un seul et mme fichier modle,en interaction avec une base de donnes.

    Larchitecture client-serveurNous venons de voir que les sites statiques sont constitus dun ensemble de pages HTML reliesentre elles par des liens hypertextes qui permettent de naviguer de lune lautre. Le protocole utilispour transfrer des informations sur Internet sappelle HTTP (Hyper Text Transfer Protocol). Unerequte HTTP (par exemple : http://www.eyrolles.com/page.htm) est envoye vers le serveur afindaccder la page dsire et de la visualiser dans le navigateur du poste client (voir tape 1 de lafigure 1-4).

    Figure 1-3Arborescence dun site statique : toutes les pages du site doivent tre prsentes sur le serveur.

    Figure 1-4Larchitecture client-serveur : le poste client envoie au serveur une requte HTTP ; le serveur Web recherche puis fournit au poste client la page demande, qui est ensuite interprte par le navigateur.

    Defrance.Livre Page 3 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I4

    Lorsque le serveur Web reoit cette requte, il recherche la page demande parmi toutes les pagesHTML prsentes sur le site concern et la renvoie ensuite au client (voir tape 2 de la figure 1-4). Lecode HTML reu par le poste client est alors interprt et affich par le navigateur (voir tape 3 de lafigure 1-4). Cest ce quon appelle larchitecture client-serveur (je demande, on me sert) : le client estle navigateur Internet (Internet Explorer, Netscape...) et le serveur est le serveur Web sur lequel eststock le site Internet.Ce type de site est trs simple raliser et on peut sen contenter dans le cadre de petits projets dequelques dizaines de pages et dont la mise jour nest pas frquente. Cependant, il affiche vite seslimites pour la conception dapplications plus consquentes ou ncessitant de frquentes mises jour.Les sites marchands et autres portails dinformations ne peuvent pas tre raliss sur ce modle. Le code HTML est un langage interprt et non compil comme le sont les diffrents programmesddis un type dordinateur spcifique (PC, Mac). Pour illustrer ce quest un programmecompil, prenons le cas de votre diteur de texte (Word, par exemple). Lorsque vous lavez achet,vous avez d prciser si vous aviez un PC ou un Mac, car il a t compil diffremment selon le typedordinateur auquel il est destin. Ce programme ne peut fonctionner que sur la plate-forme pourlaquelle il a t compil. Ce nest pas le cas des langages interprts, qui ont un code commun tousles types dordinateurs. La raison de cette polyvalence est que le code source est interprt du ctclient par le logiciel adapt la machine (voir figure 1-5). Ce genre de langage est donc bien adapt Internet o le parc dordinateurs est trs htrogne. On peut ainsi envoyer le mme code HTML tous les navigateurs des internautes, quel que soit leur ordinateur. En revanche, cela oblige leserveur envoyer tout le code source sur le poste client, laissant quiconque la possibilit de le

    Figure 1-5Linterprtation du code HTML ct client permet denvoyer le mme code quel que soit le type dordinateur de linternaute. Chaque navigateur tant adapt la plate-forme sur laquelle il est install, il interprte le code HTML en ladaptant aux particularits de lordinateur du client.

    Defrance.Livre Page 4 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 5

    copier et de lutiliser comme bon lui semble. Cet inconvnient nest pas ngligeable car, dans cesconditions, il devient difficile de protger son code source et la confidentialit des informationsquil pourrait contenir.Nous verrons plus loin que le langage PHP nhrite pas de ce dfaut, car son code source est pr-interprt et transform en quivalent HTML ct serveur ; seul le code HTML ainsi produit estenvoy au client, ce qui prserve les sources PHP et leur contenu.

    Les sites interactifs et les langages de scriptHeureusement, lvolution des techniques Internet permet dsormais de dvelopper des pages inte-ractives beaucoup plus intressantes et attractives pour linternaute.Pour crer de linteractivit sur un site, le concepteur multimdia dispose de plusieurs technologiesqui peuvent tre excutes ct client (JavaScript dans une simple page HTML ou ActionScript dansune animation Flash) ou ct serveur (PHP, ASP, JSP, CFML, etc.). Le choix du type de technologiedpend de lapplication mettre en uvre, de son niveau de scurit, de la qualit de son interface etde sa rapidit dexcution.

    Interactivit ct client avec JavaScript

    La solution la plus simple pour crer de linteractivit consiste intgrer quelques lignes de code Java-Script dans une page HTML. Lorsquune requte HTTP appelle la page HTML (voir tape 1 de lafigure 1-6), le serveur Web la retourne au poste client afin quelle puisse tre interprte comme une pageHTML classique (voir tapes 2 et 3 de la figure 1-6). Le script inclus dans la page est ensuite trait par lenavigateur ds que lvnement pour lequel il a t programm survient (voir tape 4 de la figure 1-6).

    JavaScriptJavaScript ( ne pas confondre avec Java) est un langage trs largement employ sur Internet ct client, mmesil peut aussi fonctionner ct serveur. Il a t mis au point par Netscape Communications. Ses instructions sontincluses dans le code HTML des pages envoyes sur le poste client et sont traites directement par le navigateur.

    Figure 1-6Utilisation dun script ct client avec JavaScript : il existe une dpendance relative au navigateur client mais linteractivit est rapide.

    Defrance.Livre Page 5 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I6

    Les scripts ct client sont trs ractifs car le script sexcute directement sur le poste client. Enrevanche, les programmes JavaScript peuvent se comporter diffremment selon le type dordinateuret la version du navigateur. Par exemple, un script en JavaScript peut parfaitement fonctionner surFirefox mais poser des problmes avec Internet Explorer ou crer des erreurs sous IE 5 alors quilfonctionne sous IE 6. De mme, les rsultats peuvent varier selon quon utilise un PC ou un Mac.Tout cela impose au concepteur multimdia de raliser des tests importants sil dsire que sa pageinteractive fonctionne sur toutes les plates-formes et dans toutes les configurations.

    Interactivit ct client avec ActionScriptUne autre solution pour mettre en uvre de linteractivit ct client consiste crer une animationFlash dans laquelle sera intgr un programme ActionScript. Le script tant prsent sur le posteclient, lapplication est aussi ractive quavec le JavaScript, mais la qualit de linterface et son esth-tique expliquent lengouement toujours croissant des dveloppeurs pour cette solution.Cependant, mme si le plug-in Flash est prsent par dfaut sur plus de 98 % des navigateurs actuels(source site Macromedia), sa version peut ne pas tre compatible avec celle de votre animation Flash.Il faudra vrifier ce paramtre laide dun dtecteur de version (en utilisant le Dispatcher de Macro-media, par exemple) afin daiguiller le visiteur vers lespace de tlchargement du plug-in si saversion nest pas adapte votre animation.

    Interactivit ct serveur avec PHPLinteractivit peut tre place ct serveur. Dans ce cas, le serveur Web doit disposer dun prpro-cesseur PHP afin de traiter les scripts PHP intgrs dans la page avant de lenvoyer au poste client quien a fait la demande (voir tapes 1 et 2 de la figure 1-8).Si on le compare avec un script ct client, la raction un vnement dun script ct serveur estbeaucoup plus lente car elle ncessite lenvoi dune requte au serveur (voir figure 1-8, tape 1), sonexcution sur le serveur (tape 2), le retour de la rponse par le rseau Internet (tape 3) et le chargementde la page dans le navigateur (tape 4).

    Figure 1-7Utilisation dune animation Flash avec ActionScript : linteractivit est aussi rapide quavec JavaScript ct client, mais linterface est plus esthtique.

    Defrance.Livre Page 6 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 7

    En revanche, les langages ct serveur sont indpendants de la plate-forme du client ou de la versionde son navigateur. En effet, linterprtation du script est ralise ct serveur et le code envoy verslordinateur du client est compatible avec le standard HTML et donc interprt de la mme manirepar tous.

    Les sites dynamiques et les bases de donnesCration de modles dynamiquesLexcution du script ct serveur permet de crer une page la vole lors de son excution par leprprocesseur PHP intgr au serveur. La page ainsi cre contient les mmes informations quunesimple page HTML. Elle peut donc tre interprte sans problme par le navigateur ct client (voirfigure 1-9). Lors de la cration de cette page, les scripts intgrs au fichier dynamique sont excutset, si ncessaire, tablissent une connexion un serveur de donnes. Avec ce processus, la page dyna-mique devient un modle de prsentation des informations. Ce modle est personnalis par descontenus diffrents selon la requte du client.Il nest donc plus ncessaire, par exemple, de crer une page spcifique pour prsenter chaqueproduit dun catalogue : une seule page dynamique peut tre utilise. Il suffit de lui indiquer lidenti-fiant du produit demand grce une variable qui lui est transmise en mme temps que son appel ; lapage renvoye au client contient toutes les informations et photos relatives au produit concern.Larborescence du site est simplifie puisque cette page dynamique remplace les nombreuses pagesstatiques correspondant chaque produit (voir figure 1-10).

    noterParmi les inconvnients des scripts ct serveur, il faut signaler que leur utilisation ncessite la disponibilit dunserveur adapt. Mme si les offres des hbergeurs qui proposent des serveurs intgrant des scripts dynamiquessont de plus en plus accessibles, il faut en tenir compte lors de votre choix.

    Figure 1-8Utilisation dun script ct serveur : il ny pas de dpendance vis--vis du navigateur client mais linteractivit est plus lente.

    Defrance.Livre Page 7 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I8

    Pourquoi utiliser une base de donnes ?Nous venons dexpliquer que lutilisation des scripts cre de linteractivit dans un site. En effet, ilspermettent dintgrer dans une page des instructions conditionnelles pour raliser des traitementsdiffrents en fonction de ltat des variables testes. Les pages cres par ces scripts sont laboresavec des informations contextuelles fournies par linternaute lui-mme ou issues dun traitementralis partir de celles-ci. Ces informations sont exploitables uniquement le temps de la sessionactive et ne peuvent pas tre mmorises dune session lautre, ce qui limite considrablement lesapplications utilisant uniquement des scripts serveur. Une premire solution pour conserver ces infor-mations consiste les enregistrer dans de petits fichiers (cookies) ct client, afin de rcuprer le

    Figure 1-9Exemple de code dune page dynamique produisant le mme affichage que la page de la figure 1-2

    Figure 1-10Larborescence dun site dynamique contient beaucoup moins de fichiers que celle dun site statique : les fichiers dynamiques faisant office de modles, il suffit de leur envoyer une variable diffrente pour quils se personnalisent la demande.

    Defrance.Livre Page 8 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 9

    profil de linternaute lors de sa prochaine visite. Cependant, de nombreux internautes interdisentlenregistrement dinformations sur leur ordinateur. Une deuxime solution sappuie sur lenregistre-ment de ces informations dans des fichiers de donnes, mais du ct serveur cette fois. Dans ce cas,la disponibilit de ces fichiers nest plus tributaire du bon vouloir de linternaute, mais cette solutionmanque de souplesse dans lexploitation des informations et son organisation devient vite ingrablepour des sites consquents. La troisime solution est dutiliser une base de donnes dans laquelle onstocke toutes les informations utiles aux applications du site. Le script ct serveur contient alors lesprocdures de connexion la base de donnes et des instructions spcifiques pour lire, ajouter, modi-fier, crer ou lister des enregistrements. Mme si cette solution ncessite la prsence dune base dedonnes et le dveloppement de scripts de gestion de ses enregistrements, cest de loin la plus effi-cace et la plus souple dans une grande majorit dapplications. Elle est actuellement employe sur laplupart des sites professionnels dfinis comme dynamiques. Les sites dynamiques sont donc caract-riss par le fait quils fonctionnent avec des scripts ct serveur et quils exploitent les informationsissues dune base de donnes. Pour pouvoir exploiter une base de donnes, le systme doit tre organis selon une architecture trois niveaux (dite architecture trois tiers) mettant en relation le client, le serveur Web et la base dedonnes. Mme si la base de donnes est souvent installe sur le mme ordinateur que le serveurWeb, ce modle est valable dans la plupart des cas (voir figure 1-11 et figure 1-12).

    Applications dynamiques avec PHP-MySQLLes tapes de traitement dun site dynamique classique (sans animation Flash) sont les suivantes :1. Le poste client envoie une requte HTTP sur un fichier comportant un script PHP (voir tape 1 de

    la figure 1-11).2. Le serveur Web localise le fichier dynamique et lexcute (voir tape 2 de la figure 1-11).

    Figure 1-11Fonctionnement dun site dynamique classique PHP-MySQL

    Defrance.Livre Page 9 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I10

    3. Si le script ncessite des informations issues de la base de donnes, il adresse une requte SQL auserveur de la base de donnes MySQL qui lui renvoie les informations demandes (voir tape 3de la figure 1-11).

    4. Les informations issues de la base de donnes sont ensuite intgres dans la page dynamique(voir tape 4 de la figure 1-11).

    5. La page ainsi cre est ensuite envoye au client et interprte comme une simple page HTMLpar le navigateur (voir tapes 5 et 6 de la figure 1-11).

    Applications dynamiques avec PHP-MySQL et FlashAvec un site dynamique classique, le serveur Web envoie au navigateur une page HTML entiregnre la vole par le prprocesseur PHP. Le fonctionnement est diffrent dans le cas duneanimation Flash dynamique. En effet, la premire tape consiste charger lanimation Flash dans lenavigateur (voir tapes 1, 2 et 3 de la figure 1-12) comme nous lavons expliqu dans la partieconsacre linteractivit ct client avec ActionScript (revoir figure 1-7). Ensuite, lorsquunvnement ncessitant une information dynamique survient (voir tape 4 de la figure 1-12), unerequte est envoye directement par lanimation Flash au serveur Web (voir tape 5 de la figure 1-12). Cette requte cible cette fois un script PHP spcifique (voir tape 6 de la figure 1-12) qui,contrairement celui dun site dynamique classique, ne gnre pas une page HTML dynamique-ment mais cre et renvoie lanimation Flash une structure de donnes au format couple variable-valeur ou, mieux encore, au format XML (voir tapes 7, 8, 9 et 10 de la figure 1-12). Cette structurede donnes est ensuite rceptionne puis traite par lanimation Flash qui exploite les informationsreues comme de simples variables internes.

    Figure 1-12Fonctionnement dun site dynamique PHP-MySQL coupl avec une application client Flash

    Defrance.Livre Page 10 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 11

    volution de PHP : de lorigine PHP 5Nous vous proposons maintenant de rappeler brivement les tapes qui ont marqu lvolution dePHP, de lorigine jusquau PHP 5 actuel.

    PHP-FILors de sa cration, la particularit de la technologie serveur PHP tait de pouvoir grer les formulaires,do lappellation de sa premire version PHP-FI, FI signifiant Forms Interpreter. Peu de temps aprssa cration, Rasmus Lerdof dcida douvrir son code la communaut Internet, ce qui contribua son volution rapide.

    PHP 2Ainsi, ds 1997, il existait dj plus de 50 000 sites utilisant le PHP, ce qui reprsente peu prs 1 %des domaines de lpoque. La premire grande volution de PHP est la version PHP 2, qui vit le jouren 1997. Cette version, assez phmre, a t surtout diffuse en version bta et fut rapidementremplace par la version 3.

    PHP 3La version 2 de PHP affichant des performances insuffisantes qui bloquaient son volution, et notam-ment son exploitation dans le domaine du e-commerce, la nouvelle version 3 de PHP a t complte-ment rcrite. Diffuse en 1998, PHP 3.0 fut rellement la premire version fonctionnelle et stable dePHP. Elle se distinguait principalement par la possibilit dajouter des extensions (bibliothques deprogrammes complmentaires et ddis un usage prcis). Cela permit PHP de senrichir desnombreuses extensions que lon connat aujourdhui et qui sont lorigine de son succs.

    PHP 4En 2000, juste avant le lancement de la nouvelle version 4, PHP 3 tait dj install sur plus de 10 %des sites Internet. PHP 4.0 se distinguait par des performances encore plus leves (son moteur ayantt restructur compltement) et par une nouvelle gestion des variables HTTP qui permettait notam-ment une utilisation plus facile des sessions. Notons ce sujet que, partir de la version 4.1, lasyntaxe des variables HTTP a t simplifie ($_GET[] au lieu de $HTTP_GET_VARS[], par exemple) etque la configuration par dfaut du fichier dinitialisation PHP a t modifie partir de la version 4.2 afindaugmenter la scurit, mais nous aurons loccasion den reparler au cours des prochains chapitres.

    PHP 5La premire version stable de PHP 5.0 a t diffuse en 2004. Cette nouvelle version avait pourobjectif de rendre PHP plus professionnel tout en conservant sa simplicit de dveloppement, qui est lorigine de son succs. PHP 5 permet donc de mieux rivaliser avec les diffrentes technologiesalternatives (ASP, ASP.net, JSP, CFML). Parmi ses nouveauts, citons lapparition du nouveaumoteur Zend Engine 2, lequel permet une programmation compltement oriente objet (POO),lintgration en interne de la base de donnes SQLite (mais nous naborderons pas SQLite dans cetouvrage) et une nouvelle prise en charge des flux XML.

    Defrance.Livre Page 11 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I12

    Exemples dapplications Flash dynamiquesSi la conception dune application Flash dynamique est un peu plus complique que celle dunesimple animation Flash et demande lapprentissage de nouveaux langages (ActionScript, PHP, SQL,XML), les avantages qui en dcoulent compensent largement votre investissement initial. Voici quel-ques exemples qui devraient vous en convaincre.

    Mises jour automatisesDs que votre application commence prendre de lembonpoint, les mises jour des contenustextuels deviennent longues et fastidieuses. En utilisant un langage de programmation ct serveur,vous pouvez automatiser totalement ou partiellement ces mises jour. En effet, si les informationsaffiches dans votre animation sont issues dune base de donnes, il vous suffit de prparer vos diff-rentes mises jour en indiquant la date partir de laquelle elles doivent apparatre sur le site. Vouspouvez ainsi programmer plusieurs semaines lavance les actualisations ou promotions que vousdsirez voir apparatre sur le site.

    Une maintenance assisteEn construisant judicieusement votre animation et en centralisant ses paramtres de configurationdans une base de donnes (ou dans un fichier XML), vous pouvez trs facilement modifier la prsen-tation des diffrents crans de lanimation en nintervenant que sur les paramtres du fichier de confi-guration. Dans le cas dun site mixte intgrant une version HTML et une version compltementFlash, vous pouvez modifier de la mme manire la configuration des deux versions simultanmentgrce des paramtres de configuration communs qui pourront ensuite tre lus aussi facilementdepuis les pages PHP ou partir de lanimation Flash.

    Sites multilanguesSi vous dsirez crer une animation en plusieurs langues, il vous suffit de prvoir des zones de textedynamiques lies une base de donnes. Ces champs seront renseigns par le texte correspondant la langue choisie par linternaute. En outre, avec ce systme, lajout dune langue supplmentaire nerequiert que linsertion dun nouveau champ dans la base de donnes et ne ncessite pas dinterven-tion dans les zones daffichage.

    Compatibilit entre les versions 5 et 4 de PHPHormis la programmation oriente objet et quelques fonctions mineures dont la syntaxe a chang, tous les exem-ples et les applications prsents dans cet ouvrage pourront tre exploits sur PHP 4 comme sur PHP 5.

    Defrance.Livre Page 12 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 13

    Recherche multicritreSur Internet, tous les outils de recherche utilisent des technologies dynamiques pour crer lavole les pages de rsultats correspondant aux requtes des internautes. Certains de ces outils ajou-tent la puissance de leur serveur une interface graphique Flash qui permet de prsenter ces rsultatssous forme de cartes interactives et animes (voir figure 1-14).

    Figure 1-13Le site www.lexplicateur.com est ddi aux dveloppeurs danimation Flash. Un champ de recherche permet de saisir un mot-cl pour rechercher rapidement le petit morceau de code ActionScript qui vous manque. Ce site est structur autour dune interface Flash couple avec une base de donnes MySQL.

    Defrance.Livre Page 13 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I14

    Diffusions dinformation en temps relLa qualit graphique dune interface Flash, couple avec la puissance dune base de donnes, permet deraliser des applications animes pour diffuser des mdias en temps rel (rsultats sportifs, cotationsboursires, rsultats dlections). Pour ce type de site, les informations sont gnralement centralisespar des journalistes dans une base de donnes en ligne. Les animations Flash des postes client inter-rogent cette base de donnes pour rcuprer linformation, qui sera affiche dans linterface client entemps rel (voir figures 1-15 et 1-16).

    Figure 1-14Le site www.kartoo.com est un mtamoteur de recherche qui prsente ses rsultats sous forme de carte. Il exploite judicieusement la puissance de ses scripts serveur et de sa base de donnes, associs une interface client en Flash qui affiche les rsultats sous forme de cartes interactives et animes.

    Defrance.Livre Page 14 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 15

    Reporting industriel ou financierLe Flash dynamique permet dlaborer en temps rel des tableaux de bord ergonomiques pour visua-liser lvolution de lactivit conomique dun rseau commercial (ventes, stocks). Il suffit pourcela que les responsables de chaque agence saisissent priodiquement leurs chiffres dans une base dedonnes en ligne. Lors de la premire consultation, les tableaux de bord seront automatiquementactualiss.

    Figure 1-15Laffichage des rsultats des dernires lections prsidentielles utilisait une carte de France Flash couple avec une base de donnes MySQL en ligne. Lors des dpouillements, les journalistes mettaient jour la base de donnes afin que les animations Flash des postes client puissent actualiser en temps rel les rsultats affichs dans leur interface.

    Defrance.Livre Page 15 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I16

    Interfaces client personnalisesSi votre site est dot dune interface Flash dynamique, vous pouvez proposer vos visiteurs de dfinirleur propre interface personnalise. Aprs que le visiteur a configur linterface, chaque paramtre estmmoris dans une base de donnes. Il suffit de rcuprer ces informations lors de son prochainpassage pour personnaliser de nouveau son interface dynamiquement.

    Carte dinformation dynamiqueSi vous dsirez mettre jour en ligne les coordonnes des distributeurs dun rseau commercial et dfinirdynamiquement la situation de lagence sur une carte, crez une interface Flash dynamique coupleavec quelques scripts PHP et une base de donnes MySQL. Les visiteurs de votre site disposeront

    Figure 1-16Grce au Flash dynamique, les rsultats des rencontres de football et les vnements qui ont ponctu les matchs peuvent tre diffuss en temps rel. De plus, les photos numriques du match peuvent tre visualises ds quelles sont tlcharges sur le serveur.

    Defrance.Livre Page 16 Jeudi, 31. aot 2006 12:22 12

  • Flash 8 et les sites dynamiquesCHAPITRE 1 17

    instantanment des informations partir dune carte dynamique qui affiche les nouvelles coordonneslors dun simple survol de la zone concerne.

    Jeux en ligneEn gnral, les fonctions Action Script suffisent pour crer des jeux Flash mono-utilisateur. Cepen-dant, si vous dsirez mmoriser les meilleurs scores ou crer des jeux multi-utilisateurs, il est alorsncessaire de faire appel au Flash dynamique (voir figure 1-17).

    Boutiques de produits en ligneSi vous dsirez doter votre boutique de produits en ligne dune interface graphique attractive tout enconservant la souplesse de la gestion centralise des produits dans une base de donnes, le Flashdynamique est la technologie quil vous faut.

    Figure 1-17Parmi les nombreux jeux dvelopps en Flash, certains exploitent aussi la technologie PHP-MySQL comme lillustre le jeu du Dfi du site globulos.com. Dans ce jeu, les diffrents paramtres dun dfi propos par un premier joueur sont mmoriss dans une base de donnes MySQL puis rcuprs laide dune requte SQL afin dtre exploits par le second joueur dsirant relever le dfi.

    Defrance.Livre Page 17 Jeudi, 31. aot 2006 12:22 12

  • Defrance.Livre Page 18 Jeudi, 31. aot 2006 12:22 12

  • Partie I

    Environnement de dveloppement

    Defrance.Livre Page 19 Jeudi, 31. aot 2006 12:22 12

  • Defrance.Livre Page 20 Jeudi, 31. aot 2006 12:22 12

  • 2Infrastructure

    serveur PHP-MySQL

    Choix de linfrastructure serveurContrairement un site statique, un site dynamique doit disposer dune infrastructure serveur. Eneffet, comme nous lavons indiqu dans le chapitre prcdent, plusieurs applications sont ncessaires son fonctionnement ct serveur : un serveur Web (le serveur Apache est le plus frquemment utilis) ; un langage de script serveur (dans cet ouvrage, nous utiliserons PHP) ; un serveur de base de donnes (dans cet ouvrage, nous utiliserons MySQL).Selon les ressources matrielles dont vous disposez, plusieurs solutions peuvent tre exploites.La premire solution concerne les dveloppeurs, qui disposent dune connexion permanente et rapide Internet et dun serveur Web distant quip dune base de donnes MySQL et dun moteur descripts PHP (voir figure 2-1).La deuxime solution est la plus exigeante. Elle concerne surtout les socits de dveloppementInternet qui ont leur disposition un serveur Web en local, avec PHP et MySQL, en plus de leurserveur distant de production (voir figure 2-2).La troisime solution est accessible tous, puisquil suffit dinstaller sur son poste de dveloppementune infrastructure serveur avec PHP et MySQL qui mule en local le mme comportement que leserveur Web distant (voir figure 2-3).Nous avons retenu la troisime solution pour raliser toutes les dmonstrations de cet ouvrage.Cependant, les concepts dvelopps sont identiques quelle que soit la mthode retenue.

    Defrance.Livre Page 21 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I22

    Figure 2-1Infrastructure serveur utilisant le serveur distant pour les valuations dynamiques

    Figure 2-2Infrastructure serveur utilisant un serveur du rseau local pour les valuations dynamiques

    Defrance.Livre Page 22 Jeudi, 31. aot 2006 12:22 12

  • Infrastructure serveur PHP-MySQLCHAPITRE 2 23

    Afin de vous accompagner dans la mise en uvre de votre plate-forme de dveloppement, le paragra-phe suivant sera consacr linstallation dune infrastructure serveur locale.

    tapes dinstallation de la suite Wamp 5Vous pouvez tlcharger gratuitement la dernire version de Wamp 5 sur le site www.wampserver.com.Copiez le fichier wamp5_1.6.0.exe (ou une version plus rcente) sur votre ordinateur et lancez linstal-lation en double-cliquant sur le fichier. Une premire fentre apparat (voir figure 2-4), vous recom-mandant de fermer toutes les applications actives avant de lancer linstallation. Cliquez ensuite surNext pour faire apparatre les conditions dutilisation (licence) quil faut valider. Dans lcran suivant,vous pouvez choisir le rpertoire dans lequel vous allez installer le logiciel. Nous vous suggrons devalider loption par dfaut (C:\wamp, voir figure 2-5). Dans lcran qui suit, choisissez le dossier deprogramme dans lequel le logiciel apparatra (nous vous recommandons de choisir celui suggr par

    Figure 2-3Infrastructure serveur utilisant un serveur local intgr dans le poste de dveloppement (WebLocal de Wamp 5, par exemple) pour les valuations dynamiques

    Publication en FTP et valuation en HTTPInternet permet de relier de nombreux ordinateurs distants par un support physique. Cependant, pour que cesderniers puissent dialoguer, ils doivent utiliser un mme protocole. Le principal protocole dInternet est le HTTP(HyperText Transfer Protocol) qui permet aux internautes de consulter (ou dvaluer, dans notre cas) des pagesWeb laide de leur navigateur, mais il existe dautres protocoles ddis des mdias spcifiques ou permettantdaccder des services en ligne. Ainsi, les protocoles SMTP et POP3 permettent de grer les e-mails, ou encorele protocole FTP (File Transfer Protocol) qui permet le transfert (ou la publication, dans notre cas) de fichiers dunordinateur lautre.

    Defrance.Livre Page 23 Jeudi, 31. aot 2006 12:22 12

  • Environnement de dveloppementPARTIE I24

    Figure 2-4Installation de Wamp 5 : cran de bienvenue affich au dbut de linstallation

    Figure 2-5Installation de Wamp 5 : choix du rpertoire dinstallation