p. 2
php et mysql maîtrisez le développement d un site web dynamique et interactif olivier heurtel résumé ce livre sur php et mysql s adresse aux concepteurs et développeurs qui souhaitent utiliser php et mysql pour développer un site web dynamique et interactif dans la première partie du livre l auteur présente la mise en oeuvre d une base de données mysql langage sql structured query language utilisation des fonctions mysql construction d une base de données tables index vues sans oublier les techniques avancées comme la recherche en texte intégral ou le développement de programmes stockés dans la deuxième partie du livre après une présentation des fonctionnalités de base du langage php l auteur se focalise sur les besoins spécifiques du développement de sites dynamiques et interactifs en s attachant à apporter des réponses précises et complètes aux problématiques habituelles gestion des formulaires gestion des sessions envoi de courriers électroniques et bien sûr accès à une base de données mysql abondamment illustré d exemples commentés ce livre écrit sur les versions 5 de php et de mysql est à la fois complet et synthétique et vous permet d aller droit au but les exemples cités dans le livre sont en téléchargement sur cette page l auteur après plus de huit ans passés en société de service où il a successivement occupé les postes de développeur chef de projet puis directeur de projet olivier heurtel a démarré une activité de consultant/formateur indépendant spécialisé sur les bases de données oracle le développement web php et les systèmes décisionnels il est certifié oracle certified professional ce livre numérique a été conçu et est diffusé dans le respect des droits d auteur toutes les marques citées ont été déposées par leur éditeur respectif la loi du 11 mars 1957 n autorisant aux termes des alinéas 2 et 3 de l article 41 d une part que les copies ou reproductions strictement réservées à l usage privé du copiste et non destinées à une utilisation collective et d autre part que les analyses et les courtes citations dans un but d exemple et d illustration toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l auteur ou de ses ayants droit ou ayant cause est illicite alinéa 1er de l article 40 cette représentation ou reproduction par quelque procédé que ce soit constituerait donc une contrefaçon sanctionnée par les articles 425 et suivants du code pénal copyright editions eni © eni editions all rigths reserved 1-
[close]
p. 3
objectifs de l ouvrage l objectif de cet ouvrage est d apprendre à développer un site web dynamique et interactif à l aide de php et mysql pour répondre à cet objectif ce livre étudie en détail les fonctionnalités nécessaires au développement d un site web dynamique et interactif q utilisation du langage sql structered query language langage standard d accès aux bases de données relationnelles pour interroger et modifier les données d une base de données mysql création d une base de données mysql utilisation des fonctionnalités de base du langage php accès à une base de données mysql à partir de php gestion des formulaires gestion des sessions authentification gestion d un contexte utilisation des cookies envoi d un courrier électronique dont les courriers au format html et ceux avec pièce jointe gestion des fichiers dont le transfert de fichiers du poste de l utilisateur vers le serveur file upload qqqqqqq cet ouvrage s adresse à des chefs de projet concepteurs ou développeurs ayant une connaissance de base de la programmation web en html ce livre aborde les versions 5 de php et de mysql © eni editions all rigths reserved 1-
[close]
p. 4
bref historique de php et mysql 1 php le langage php historiquement personal home page officiellement acronyme récursif de php hypertext preprocessor a été conçu en 1994 par rasmus lerdorf pour ces besoins personnels avant d être rendu public au début de l année 1995 courant 1995 une nouvelle version complètement réécrite est publiée sous le nom php/fi version 2 cette version capable de gérer les formulaires et d accéder à la base msql permet au langage de se développer rapidement en 1997 le développement du langage est pris en charge par une équipe formée autour de rasmus lerdorf et aboutit à la sortie de la version 3 en 2000 l analyseur php est migré sur le moteur d analyse zend afin d offrir de meilleures performances et de supporter un plus grand nombre d extension c est la version 4 de php en 2004 la version 5 voit le jour cette nouvelle version basée sur la version 2 du moteur zend apporte plusieurs nouveautés la plupart concernant le développement orienté objet À ce jour les analystes estiment que php est utilisé par plus de 20 millions de sites web dans le monde en nombre de domaines 2 mysql mysql est le système de gestion de base de données relationnelle sgbdr open source le plus répandu dans le monde il est développé par mysql ab une entreprise suédoise la première version de mysql est apparue en 1995 cette première version est créée pour un usage personnel à partir de msql en 2000 la version 3.23 est passée en licence gpl general public license en 2003 la version 4 apparue en 2001 est déclarée stable cette version apporte de nombreuses nouvelles fonctionnalités et améliorations opérateur union delete multitables nouvelles options pour la gestion des droits amélioration des performances sousrequêtes 4.1 etc en 2005 la version 5 apparue en 2003 est déclarée stable cette version majeure introduit de nombreuses fonctionnalités manquantes dans mysql programmes stockés triggers vues fin 2007 la version 5.1 est distribuée en release candidate et devrait sortir en version finale début 2008 mysql est disponible selon deux licences différentes q la licence gpl une licence commerciale q si vous utilisez mysql dans un produit libre vous pouvez utiliser mysql librement version mysql community server si vous utilisez mysql dans un produit commercial ou si vous souhaitez avoir un support pour le logiciel vous devez acquérir une licence commerciale version mysql enterprise © eni editions all rigths reserved 1-
[close]
p. 5
où se procurer php et mysql de nombreux sites web sont consacrés au langage php et à mysql ils permettent de télécharger les produits de consulter des exemples de scripts ou de dialoguer sur des forums adresse contenu site officiel de php qui propose le téléchargement de php et un manuel de référence en ligne très pratique vous pouvez notamment saisir www.php.net/nom_fonction pour accéder directement à l aide en ligne d une fonction php site officiel de mysql qui propose le téléchargement de mysql une aide en ligne des articles un forum etc site en français consacré à php qui propose des news des exemples ainsi qu un forum de discussion bref un site très complet à mettre dans ses favoris autre site francophone consacré à php proposant des rubriques similaires site officiel du moteur de script zend qui propose lui aussi les rubriques classiques de téléchargement d exemples de forum site francophone qui propose gratuitement un produit installable easyphp sur plateforme windows ce produit comprend un serveur apache php et mysql vous téléchargez le produit et double cliquez sur l exécutable qui installe les différents éléments cinq minutes après votre environnement phpmysql est opérationnel ce site est indispensable pour ceux qui souhaitent monter rapidement une configuration opérationnelle complète sur windows les versions utilisées par easyphp présentent toujours un léger retard par rapport aux dernières versions officielles autre site qui propose un produit installable xampp sur différentes platesformes linux windows solaris mac os x ce produit comprend lui aussi entre autres un serveur apache php et mysql là encore l installation est très simple et très rapide les versions utilisées par xampp sont toujours très récentes par rapport aux dernières versions officielles page du site des Éditions eni sur laquelle les exemples traités dans cet ouvrage peuvent être téléchargés www.php.net wwwfr.mysql.com www.phpindex.com www.phpfrance.com www.zend.com/fr www.easyphp.org www.apachefriends.org/fr/xampp.html www.editionseni.com/exemples cette liste est évidemment non exhaustive mais tous les sites présentés proposent de nombreux liens vers d autres sites n hésitez pas à surfer t ous les exemples de cet ouvrage ont été testés avec xampp linux 1.6.4 soit mysql 5.0.45 et php 5.2.4 © eni editions all rigths reserved 1-
[close]
p. 6
conventions d écriture 1 php la syntaxe des fonctions php est décrite de la manière suivante dans cet ouvrage type_retour nom_fonctiontype_paramètre nom_paramètre type_retour type de retour de la fonction nom_fonction nom de la fonction type_paramètre type du paramètre accepté par la fonction nom_paramètre nom donné au paramètre les types de données possibles seront présentés dans le chapitre introduction à php dans le cas où la fonction accepte un paramètre de n importe quel type et/ou retourne une valeur de n importe quel type le terme mixte est utilisé si la fonction ne retourne pas de valeur l information type_retour est omise exemple nom_fonctiontype_paramètre nom_paramètre si la fonction ne prend aucun paramètre les informations type_paramètre et nom_paramètre sont omises exemple type_retour nom_fonction les paramètres optionnels sont indiqués entre crochets exemple type_retour nom_fonction type_paramètre nom_paramètre si la fonction accepte plusieurs paramètres ces derniers sont indiqués séparés par une virgule selon la même convention exemple type_retour nom_fonctiontype_paramètre_1 nom_paramètre_1 type_paramètre_2 nom_paramètre_2 si un paramètre peut être répété un nombre quelconque de fois il est simplement suivi de la séquence exemple type_retour nom_fonctiontype_paramètre nom_paramètre 2 mysql la syntaxe des ordres sql est décrite de la manière suivante dans cet ouvrage mot en majuscules © eni editions all rigths reserved 1-
[close]
p. 7
mots clés de la commande create table par exemple dans la pratique ils peuvent être saisis indifféremment en majuscules ou en minuscules mot en minucules valeurs à saisir relatives à la base de données ou à l application nom de table nom de colonne etc selon le cas ces valeurs sont sensibles à la casse ou pas cf introduction à mysql phpmyadmin clause optionnelle la clause précédente peut être répétée plusieurs fois indique un choix entre plusieurs options délimite une liste d options mot souligné valeur par défaut mot en italique clause de la commande dont la syntaxe est détaillée à part 2 © eni editions all rigths reserved
[close]
p. 8
introduction aux bases de données relationnelles 1 concepts une base de données est un ensemble de données structurées correspondant généralement à un domaine fonctionnel facturation ressources humaines etc physiquement une base de données se matérialise par un ensemble de fichiers stockés sur un périphérique de stockage les données d une base de données sont gérées par un logiciel appelé système de gestion de base de données sgbd ce logiciel offre plusieurs fonctionnalités accès aux données gestion des mises à jour renforcement de l intégrité contrôle de la sécurité d accès etc une base de données relationnelle supporte une organisation des données basées sur le modèle relationnel développé en 1970 par edgar frank codd c est la structure la plus répandue aujourd hui dans une base de données relationnelle les données sont organisées en tables logiquement liées entre elles une table comporte un certain nombre de colonnes ou champs qui décrivent une ligne ou enregistrement la mise en relation des tables s effectue par l intermédiaire d une colonne exemple livre id titre id_collection 1 php 5.2 développement web 1 2 oracle 10g administration 1 3 oracle 10g recovery manager 2 4 businessobjects 6 1 5 mysql 5 mise en oeuvre 1 6 php et mysql versions 4 et 5 3 7 mysql 5 et php 5 4 collection id nom 1 ressources informatiques 2 technote 3 les tp informatiques 4 coffret technique sur cet exemple les tables livre et collection sont liées par les colonnes id_collection de la table livre et id de la table collection l interaction avec une base de données relationnelle s effectue grâce au langage sql structured query langage ce langage permet la lecture et la mise à jour des données mais aussi la définition de l organisation des données la gestion de la sécurité le renforcement de l intégrité etc le langage sql est un langage normalisé mais les différents éditeurs de base de données ne respectent pas l intégralité du standard 2 principes de conception d une base de données la conception d une base de données est un sujet complexe dont nous n abordons ici que les principes de base dans une approche plus pratique que théorique dans une base de données relationnelle l objectif est de stocker dans des tables différentes les informations correspondant à des entités objets différents du domaine fonctionnel le but est d éviter les redondances et faire en sorte qu une information donnée ne soit stockée qu une fois sur notre exemple précédent les informations sur l auteur d un livre ne sont pas stockées dans la table livre l auteur d un livre est une entité fonctionnelle à part entière qui est stockée dans une table séparée ce processus de séparation des données dans plusieurs tables est appelé « normalisation » u ne normalisation poussée à l extrême peut nuire aux performances des requêtes d interrogation qui doivent lire un grand nombre de tables pour améliorer les performances des lectures il est alors envisageable de © eni editions all rigths reserved 1-
[close]
p. 9
« dénormaliser » le modèle en regroupant des tables quitte à avoir des données redondantes dans les différentes lignes les bases de données des systèmes décisionnels qui effectuent principalement des interrogations généralement complexes sont très souvent dénormalisées À l inverse les bases de données des systèmes transactionnels qui effectuent principalement des petites interrogations simples et beaucoup de mises à jour respectent bien le principe de normalisation dans une base de données relationnelle chaque table stocke les informations relatives à un objet métier concret ou abstrait qui doit être identifié dans la table chaque colonne stocke une information unitaire attribut propriété qui caractérise une ligne de la table chaque colonne possède un type de données entier chaîne de caractères date etc et peut être obligatoire ou non une colonne ou combinaison de colonnes qui identifie de manière unique une ligne d une table est appelée clé candidate la valeur d une clé candidate est différente pour toutes les lignes de la table pas de doublon autorisé une clé candidate peut être constituée par une colonne arbitraire utilisée spécifiquement pour cela la clé primaire d une table est une des clés candidates de la table choisie plus ou moins arbitrairement si ce n est que les colonnes de la clé primaire doivent aussi être obligatoires il y a une seule clé primaire par table les autres clés candidates de la table sont alors appelées clés uniques une colonne ou combinaison de colonnes d une table qui référence une clé candidate d une autre table en général la clé primaire est appelée clé étrangère une table peut avoir plusieurs clés étrangères exemple le schéma cidessus présente le modèle de la base de données utilisée dans cet ouvrage ce modèle est un modèle simplifié de gestion des livres d un éditeur ce modèle comporte les tables suivantes auteur 2 © eni editions all rigths reserved
[close]
p. 10
auteurs des livres rubrique rubriques permettant le classement des livres dans différentes catégories base de données langage de développement etc les rubriques sont organisées sur deux niveaux rubrique principale et sousrubrique une sousrubrique est rattachée à une rubrique parent par l intermédiaire de la colonne id_parent pour une rubrique parent la colonne id_parent est vide collection collections de l éditeur dans lesquelles les livres sont publiés promotion promotions sur les livres livre livres publiés par l éditeur auteur_livre relation entre les auteurs et les livres un auteur peut écrire plusieurs livres et un livre peut avoir plusieurs auteurs rubrique_livre relation entre les rubriques et les livres une rubrique peut contenir plusieurs livres et un livre peut appartenir à plusieurs rubriques dans toutes les tables à l exception de auteur_livre et rubrique_livre la clé primaire est la colonne id pour les tables auteur_livre et rubrique_livre la clé primaire est la combinaison des deux colonnes respectivement id_auteur,id_livre et id_rubrique,id_livre dans l état actuel du modèle il y a une clé unique sur la colonne nom de la table collection dans le chapitre construire une base de données dans mysql nous ajouterons des clés uniques sur d autres tables la table livre comporte deux clés étrangères id_collection vers la table collection et id_promotion vers la table promotion la table auteur_livre comporte deux clés étrangères id_auteur vers la table auteur et id_livre vers la table livre la table rubrique_livre comporte deux clés étrangères id_rubrique vers la table rubrique et id_livre vers la table livre la table rubrique comporte une clé étrangère id_parent vers la table rubrique © eni editions all rigths reserved 3-
[close]
p. 11
travailler avec mysql 1 administration du serveur mysql après avoir installé mysql nous pouvons administrer le serveur mysql avec le compte superutilisateur root rien à voir avec le compte root sous unix ou linux initialement le compte root n a pas de mot de passe et il dispose de tous les droits sur toutes les bases de données du serveur mysql par contre il ne peut se connecter que localement à partir du serveur luimême dans le chapitre construire une base de données dans mysql nous verrons comment créer d autres utilisateurs et leur affecter des droits 2 interface ligne de commande l application cliente mysql est un programme interactif qui permet de se connecter à un serveur mysql et d exécuter des requêtes sur ce serveur cette application se trouve dans le répertoire bin de votre installation mysql syntaxe mysql h hôte u utilisateur p[mot_de_passe [nom_base -h hôte hôte auquel il faut se connecter machine locale par défaut -u utilisateur nom d utilisateur pour la connexion nom de l utilisateur courant du système d exploitation par défaut -p[mot_de_passe mot de passe pour la connexion aucun mot de passe par défaut s il n est pas donné sur la ligne de commande il sera demandé de manière interactive en saisie masquée si le mot de passe est spécifié dans la ligne de commande ce qui n est pas conseillé pour la sécurité il ne doit pas y avoir d espace après l option -p nom_base base sélectionnée au départ aucune par défaut exemple [root@xampp mysql uroot welcome to the mysql monitor commands end with or g your mysql connection id is 32 server version 5.0.45 source distribution type help or h for help type c to clear the buffer mysql sur cet exemple la connexion s effectue localement sans mot de passe en tant qu utilisateur root comme l utilisateur courant est root au niveau du système d exploitation le même résultat peut être obtenu en tapant simplement la commande mysql [root@xampp mysql welcome to the mysql monitor commands end with or g si un mot de passe est requis et que vous ne souhaitez pas le saisir sur la ligne de commande vous pouvez utiliser la commande suivante pour vous connecter [root@xampp mysql uroot p © eni editions all rigths reserved 1-
[close]
p. 12
enter password welcome to the mysql monitor commands end with or g si un mot de passe est requis et que vous tentez de vous connecter sans mot de passe vous obtenez une erreur error 1045 28000 access denied for user root localhost using password no de même si vous tentez de vous connecter à partir d une machine qui n est pas autorisée vous obtenez une erreur similaire dans l interface ligne de commande vous pouvez saisir soit des commandes du client mysql soit des requêtes sql les commandes du client mysql sont interprétées directement par le client mysql une telle commande doit être écrite sur une seule ligne et l utilisation du point virgule en fin de commande est superflue les commandes du client mysql ne sont pas sensibles à la casse et peuvent être saisies indifféremment en minuscules ou en majuscules les requêtes sql sont envoyées au serveur pour être exécutées une requête sql peut être écrite sur plusieurs lignes et doit se terminer par un point virgule les mots clés du langage sql ne sont pas sensibles à la casse et peuvent être saisis indifféremment en minuscules ou en majuscules les commandes du client mysql les plus souvent utilisées sont les suivantes exit ou quit quitte l application usenom_base utilise une autre base de données sourcefichier_script exécute un script sql delimitercaractères modifie le délimiteur utilisé pour terminer une requête sql exemple [root@xampp mysql uroot welcome to the mysql monitor commands end with or g your mysql connection id is 37 server version 5.0.45 source distribution type help or h for help type c to clear the buffer mysql useinformation schema database changed mysql selectschema namefromschemata schema_name information_schema cdcol mysql phpmyadmin test 5 rows in set 0.01 sec mysql exit bye [root@xampp dans la suite de cet ouvrage nous présenterons la syntaxe de l ordre sql select ainsi que la base de données 2 © eni editions all rigths reserved
[close]
p. 13
information_schema i l existe aussi un ordre sql use équivalent à la commande use 3 mysql query browser mysql query browser est une application graphique développée par la société mysql ab qui permet d éditer et d exécuter des requêtes sql dans une base de données mysql vous pouvez vous procurer mysql query browser à l adresse suivante http dev.mysql.com/downloads le produit est disponible sur les platesformes windows linux et macos lorsque vous lancez l application une fenêtre de dialogue s affiche afin de saisir les paramètres de connexion au serveur mysql dans cette fenêtre de dialogue vous devez indiquer les informations suivantes server host hôte auquel il faut se connecter obligatoire username nom d utilisateur pour la connexion nom de l utilisateur courant du système d exploitation par défaut password mot de passe pour la connexion aucun mot de passe par défaut default schema base ou schéma sélectionnée au départ aucune par défaut une fois connecté la fenêtre suivante s affiche © eni editions all rigths reserved 3-
[close]
p. 14
dans le cadre de droite l outil liste les bases de données auxquelles l utilisateur a accès en cliquant sur les petits triangles vous pouvez très facilement afficher la liste des tables stockées dans une base de données puis la structure d une table si vous double cliquez sur le nom d une base de données celleci devient la base de données courante son nom est alors affiché en gras dans le cadre supérieur vous pouvez saisir le texte d une requête sql puis cliquer sur le bouton execute pour l exécuter le résultat de la requête s affiche dans l onglet resultset 4 © eni editions all rigths reserved
[close]
p. 15
si vous double cliquez sur le nom d une table dans le cadre de droite une requête permettant d afficher tout le contenu de la table est automatiquement renseignée dans le cadre supérieur si vous effectuez un clic droit sur un objet dans le cadre de droite un menu contextuel s affiche ce dernier vous propose différents articles qui vous permettent de créer modifier ou supprimer les objets table vue programme stocké dans l ensemble cet outil est très convivial et son apprentissage est aisé 4 phpmyadmin phpmyadmin est une application web développée en php qui permet d administrer un serveur mysql sous réserve de disposer d un compte utilisateur mysql ayant les droits suffisants phpmyadmin permet de q gérer les bases de données du serveur mysql gérer les utilisateurs et les droits gérer les différents objets d une base de données tables colonnes index vues programmes stockés etc éditer et exécuter des requêtes sql q q q © eni editions all rigths reserved 5-
[close]