Construire une base de données simple avec PHP et MySQL — Valhalla

Embed Size (px)

Citation preview

Construire une base de donnes simple avec PHP et MySQL Valhalla

http://www.valhalla.fr/2005/09/25/construire-une-base-de-donnees-simpl...

ACCU EIL

LISTE DES ARTICLES

ARTICLES ESSENTIELS

TOP 10

C O U R S J A VA

OUTILS

R F RE NCE S

A PROPOS

FLU X RSS

Construire une base de donnes simple avec PHP et MySQLby GF on 2 5 S E PT E M B ER 2 005

Cet article constitue un tutoriel simple et rapide montrant comment construire une base de donnes en utilisant les technologies PHP et MySQL. Cette base de donnes sera accessible depuis internet laide dun navigateur. Nous allons aborder les points suivants: Quallonsnous faire ? Comment le faire ? Etape 1: Crer la base de donnes. Etape 2: Ajouter une entre dans la base de donnes. Etape 3: Acher les entres de la base de donnes. Etape 4: Rechercher des entres dans la base de donnes. Etape 5: Modier et supprimer une entre dans la base de donnes. Bonus: Scuriser laccs la base de donnes.

Quallonsnous faire ?

Nous allons crer une base de donnes, et un logiciel permettant dexploiter cette base de donnes. Une base de donnes stocke des informations remplissant certains critres. Elle permet de trier les informations quelle contient selon ces critres. Imaginezvous un tableau Excel: des colonnes et des lignes. Une base de donnes fonctionne exactement sur le mme principe. En eet, si nous voulons stocker les informations nom, prnom et ge pour direntes personnes, il nous faudra crer 3 colonnes, une pour chaque information; et X lignes, une par personne. Cette illustration reprsente la structure de la base de donnes que nous allons crer: Colonne 1 Colonne 2 Colonne 3 Nom Ligne 1 Martin Ligne 2 Dupont Lignes n Prnom Pierre Pierre ge 42 38

Vous laurez compris, le nombre de colonnes est xe, tandis que le nombre de lignes est indtermine: un nouvel enregistrement dans la base de donnes reprsente une ligne supplmentaire. Pour comprendre les mcanismes de fonctionnement des bases de donnes, vous pouvez vous exercer crer des feuilles de calcul sous Excel (ou un autre tableur) et manipuler les donnes quelles contiennent. Excel se comporte en eet comme une base de donnes en stockant et manipulant les informations la manire dune base de donnes. Dans le tableau cidessus, jai omis une colonne. Il sagit de la colonne identiant (nous lappellerons id). A chaque ligne de cette colonne id est attribu un chire ou un nombre. Le premier enregistrement de la base de donnes aura ainsi lidentiant 1, le second aura lidentiant 2, et ainsi de suite. Lid permet par la suite de manipuler les lignes trs facilement. Une dernire prcision importante: chaque colonne naccepte quun type prcis de donnes. Dans notre cas, la colonne id ne devra stocker que des nombres entiers, les colonnes nom et prnom des chanes de texte (que nous appellerons dornavant string), et la colonne ge un nombre entier (que nous appellerons int de langlais integer). Il est absolument ncessaire de bien dterminer ds le dbut de la conception dune base de donnes le type de donnes stockes dans chaque

1 sur 12

18/Jan/2012 10:04 AM

Construire une base de donnes simple avec PHP et MySQL Valhalla

http://www.valhalla.fr/2005/09/25/construire-une-base-de-donnees-simpl...

colonne. En eet, si lon veut trier les enregistrements suivant le critre ge, et quun enregistrement contient, pour cette colonne, un string au lieu dun entier, le tri ne pourra pas avoir lieu correctement. Dupont estil infrieur ou suprieur 52 ? Impossible dire, on ne peut comparer que des donnes du mme type.

Comment le faire ?

Il existe de nombreuses manires de construire une base de donnes. En eet, chaque base de donnes repose sur un serveur, et il existe une multitude de serveurs dirents. Parmi les plus clbres: Oracle, Sybase, Access, FileMaker, PostgreSQL et MySQL. Les deux premiers sont des serveurs professionnels qui cotent plusieurs centaines de milliers deuro et qui sont destins stocker des millions denregistrements. Access et FileMaker sont des serveurs propritaires qui ne fonctionnent que par le biais dun logiciel que vous devez installer sur votre systme. Enn, les deux derniers sont gratuits et permettent une consultation par internet grce lintgration du langage de requtes (SQL, le langage permettant de donner ses instructions au serveur) la technologie web PHP. Nous allons donc voir dans un premier temps comment fonctionnent les changes entre serveur et client, pour voir ensuite ce que sont MySQL, SQL et PHP et, enn, comprendre comment tous ces lments simbriquent les uns dans les autres.

Internet: dialogue entre un client et un serveurVous tapez une adresse dans la barre dadresse de votre navigateur, et vous appuyez sur Entre. La page se charge lcran. Cela parat simple, mais il sagit en ralit du rsultat dun dialogue entre client (votre navigateur) et serveur (lordinateur qui contient linformation que vous demandez). Lorsque vous appuyez sur Entre, votre navigateur contacte le serveur qui gre ladresse que vous avez tape. Le serveur vous envoie linformation demande, et le navigateur lache. Imaginez un chier Word: vous doublecliquez dessus, il souvre dans Word, et vous pouvez ainsi le lire. Dans notre cas, le client dit au serveur je veux voir tel document, ce qui correspond au doubleclic. Le serveur envoie alors ce document au navigateur qui linterprte et lache lcran. Il linterprte car, au mme titre que votre chier Word, cest un chier qui est envoy du serveur au navigateur. Ce chier est crit dans un langage de programmation spcial que reconnat le navigateur. Ce langage est le HTML. Le navigateur reoit par exemple linformation suivante: Bonjour. Il sait que tout texte compris entre la balise et la balise devra tre ach en italique. Il achera donc: Bonjour !. Il est particulirement important pour la suite de comprendre ce mcanisme: le serveur met un document rempli de texte (le code source dnissant la mise en page et la prsentation, et le contenu lui mme), il ne traite pas ce texte. Cest le navigateur qui traite ce texte, et linterprte pour acher le rsultat attendu.

MySQL, SQL, PHP ?Le principe du PHP, un autre langage de programmation, est tout fait dirent. En eet, dans ce cas cest le serveur qui excute le code source et qui renvoit le rsultat au navigateur. Le serveur ne se contente pas denvoyer les donnes, il les analyse et leur applique un traitement avant de les envoyer. On dit que le PHP sxcute ct serveur alors que le HTML est trait ct client. Vous remarquerez que je nemploie pas le verbe sexcuter pour parler du HTML. Il sagit l dune autre dirence majeure entre le HTML et le PHP: le HTML nest pas excutable, il est purement statique. En dautres termes, alors que le HTML se borne dcrire une situation de faits (tel mot est en italique, telle phrase est en gras, telle image doit tre ache, etc.), le PHP peut avoir des comportements qui produisent des eets sous certaines conditions. Par exemple: si le nom est Dupont, alors il devra tre ach en rouge. Le PHP est le langage que nous allons utiliser pour le traitement du contenu de la base de donnes. MySQL est le nom du serveur de base de donnes. Cest un logiciel install sur le serveur qui interprte et excute les requtes qui lui sont soumises grce au langage SQL. Par exemple, le code suivant permet de retenir, dans la base de donnes appele mabase, tous les prnoms des

2 sur 12

18/Jan/2012 10:04 AM

Construire une base de donnes simple avec PHP et MySQL Valhalla

http://www.valhalla.fr/2005/09/25/construire-une-base-de-donnees-simpl...

personnes qui ont plus de 40 ans, en rejetant les prnoms des personnes qui ne remplissent pas ce critre: SELECT prenoms FROM mabase WHERE age > 40.

Conjonction de ces lmentsSi vous avez compris les explications cidessus, vous devriez comprendre les deux phrases suivantes: Le contenu et la structure de la base de donnes seront stocks sur le serveur MySQL auquel accderont des fonction PHP utilisant le langage SQL. La formation des requtes SQL se fera grce des oprations logiques ralises en PHP, et lachage des rsultats de ces requtes se fera grce un code HTML gnr par dautres fonctions PHP.

Etape 1: Crer la base de donnesConnexion au serveur de base de donnesJe suppose que votre base de donnes existe dj, mais ne contient aucune donne.Lorsque vous activez MySQL chez un hbergeur Web, une base de donnes associe votre compte est automatiquement cre.Cependant, elle ne contient aucune table.Une table est le conteneur d ensemble de colonnes et lignes. Nous allons nous connecter la base de donnes, et crer la un table utile cet exercice. Crez donc un chier appel connexion.php:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.

La ligne 1 contient le tag ou balise en franais qui permet de dterminer le type de script utilis: il s agit de PHP.La ligne 13 informe le serveur que le script est termin. Les lignes 2 5 dnissent des variables.Par exemple, votre login ou nom d utilisateur est pierre_martin_128765b.Vous assignez cette valeur la variable $login pour qu chaque fois que vous fassiez rfrence $login le serveur comprenne pierre_martin_128765b.De mme pour les autres valeurs. La ligne 7 marque la cration d une fonction.Une fonction regroupe une srie d instructions qui seront excutes ds que cette dernire est apple. Ainsi, au lieu d crire les lignes 9, 10 et 11, vous crirez dornavant connexion();.Les lignes 8 et 12 prsentent des accolades qui dlimitent la porte de la fonction: elle englobe toutes les lignes entre ces accolades.

Cration de la tableCrez ensuite un autre chier appel installation.php:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

A la ligne 2, par linstruction include(connexion.php);, nous incluons le contenu de ce chier dans le chier courant. Nous pourrons ainsi accder son contenu, notamment en appelant la fonction connexion() la ligne 4. Les lignes 6 14 contiennent les instructions de formation de la requte SQL. La requte est dcoupe et insre dans la variable $sql. Notez que le symbole exmploy est .= qui signie ajoutez ce qui suit la n de la variable, aprs ce quelle contient dj. A la ligne 6, nous crons la table, si elle nexiste pas dj, et nous lui donnons le nom mabase. A la ligne 7, nous insrons dans la table la colonne id de type int (entier), qui ne peut pas tre une valeur nulle et qui sincrmente automatiquement chaque nouvel ajout dans la base de donnes. Cet lment, id, sera la cl qui identie chaque enregistrement (lignes 11 13). A la ligne 8 nous insrons la colonne nom de type texte et qui ne peut tre nulle. La ligne 14 dtermine le type de table, thme qui dpasse lobjet de cet article. La ligne 16 soumet la requte forme la base de donnes, et ache une ventuelle erreur lcran.

Etape 2: Ajouter une entre dans la base de donnesUtilisation des variables et formation de la requte SQLQuand on ajoute une entre dans la base de donnes, une nouvelle ligne est cre. A chaque colonne de cette nouvelle ligne est assigne une valeur. Nous allons donc utiliser une requte SQL pour attribuer une valeur chaque colonne de la nouvelle ligne: INSERT INTO mabase(id,nom,prenom,age)

VALUES(,Martin,'Pierre,42). En franais, cela donnerait: Insrez dans la tableappele mabase, respectivement pour les colonnes id, nom, prnom et age, les valeurs (vide), Martin, Pierre et 42. Nous avons vu que le langage PHP utilisait des variables. On peut donc remplacer les valeurs que lon veut insrer par la nom des variables qui les contiennent. Dans un premier temps, on assigne les valeurs aux variables:

1. $nom = 'Martin'; 2. $prenom = 'Pierre'; 3. $age = '42'On pourra ainsi, dans un second temps, insrer ces variables au lieu des valeurs associes dans la requte SQL: INSERT INTO mabase(id,nom,prenom,age)

VALUES(,$nom,'$prenom,'$age).

Cration du formulaireVous savez maintenant former la requte SQL dajout dun enregisterment dans la base de donnes en utilisant des variables. Il nous faut prsent crer un formulaire pour rcuprer les donnes ajouter. Un formulaire est un ensemble dobjets que manipule lutilisateur le visiteur de la page. Il y a ainsi des champs de texte, des cases cocher, des menus droulants, des boutons, etc. Notre formulaire sera simple: 3 champs et 1 bouton. Voici le code du formulaire:

1.

4 sur 12

18/Jan/2012 10:04 AM

Construire une base de donnes simple avec PHP et MySQL Valhalla

http://www.valhalla.fr/2005/09/25/construire-une-base-de-donnees-simpl...

2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.

Nom: Prnom: Age:

Et voil le rsultat: Nom: Prnom: Age: Envoyer

Ce code mrite quelques explications. A la ligne 1 on cre le formulaire, et on lui donne un nom (ici: formulaire). Puis, on indique la mthode de transmission des donnes.Il en existe deux: POST et GET.Pour les formulaires, on utilise en rgle gnrale POST.Ces deux mthodes sortent de l objet de cet article.Enn, on indique vers quel chier le contenu du formulaire sera envoy: ajouter. php. La balise sert crer un tableau.Ici, il a les attributs suivants: largeur de 200 pixels, paisseur de la bordure de 1 pixel. Les balises et servent, respectivement, crer une ligne et une colonne. Les champs de texte sont crs grce la balise .Ainsi, la ligne 5 on cre un objet de type input, qui est un champ de texte (type=text), et dont le nom et l identiant sont nom.A la ligne 13, il s agit du champ pour la valeur ge: la taille maximale du texte entr sera de 3 caractres, la taille du champ sera de 3 caractres. Pour nir, la ligne 17, on cre un bouton qui servira valider le formulaire, et envoyer les valeurs des champs vers le chier spci la ligne 1 et avec la mthode spcie cette mme ligne.

Rcupration des valeurs du formulaireNous avons cr le formulaire qui permet l utilisateur de saisir ses donnes, nous allons maintenant crer la page ajouter.php qui nous permettra d ajouter les donnes soumises dans la base de donnes. Crez donc le chier ajouter.php et ajoutez le code qui suit, de manire se connecter la base de donnes:

1.