« Programmation PHP/Exemples/BD 1 » : différence entre les versions
Contenu supprimé Contenu ajouté
m Modifications de Tavernierbot (Discussion) révertées; retour à l'ancienne version de J.M. Tavernier |
m Bot: Retouches cosmétiques |
||
Ligne 1 :
{{Programmation PHP}}
== Afficher le résultat d'une requête ==
=== Présentation ===
Dans cet exemple, on va créer une application qui extrait des données à partir d'une base de données et qui affiche le résultat à l'écran. Notre programme va afficher une liste d'employés d'une entreprise imaginaire : chaque employé est défini par un nom, un prénom et un salaire. La base de données utilisée sera une base '''mysql'''.
Nous étudierons une première version du programme et dans un second temps nous améliorerons le programme en utilisant la méthode GET lors d'une deuxième version.
=== Descriptif du site ===
*La première page affiche 3 liens hypertextes :
** un lien pour afficher la liste complète des employés,
** un lien pour afficher la liste dans l'ordre alphabétique,
** un lien pour afficher par salaire décroissant.
* Sur chacune des pages, on affiche la liste
=== Création de la base ===
Les requêtes suivantes permettent la création et l'initialisation des données dans notre table :
Ligne 66 :
</table>
=== Configuration de la base de données ===
La table ''employe'' appartient à la base de données ''toto''. L'administrateur de cette base est root. Il n'a pas de mot de passe. Attention ceci est une configuration type utilisée par défaut pour la plateforme de développement easyphp : il est vivement recommandé de mettre un vrai mot de passe pour une plateforme en exploitation.
=== Les requêtes utilisées ===
*Pour afficher la liste des employés, on utilisera la requête :
Ligne 79 :
''SELECT * FROM employe ORDER BY SALAIRE DESC''
=== Comment accéder en php à une base mysql ===
Les différentes étapes à respecter seront les suivantes :
# récupérer les informations suivantes :
Ligne 93 :
# transformer le résultat de la requête en HTML.
==== Etape 1 : les paramètres spécifiques au site ====
Pour réaliser le première étape nous allons créer un fichier '''params.php''' qui contient 4 variables $host (le nom de la machine qui héberge
<pre>
<?php
Ligne 106 :
On écrira ''require'params.php' ''. Le fichier sera alors inclus dans le programme en php et le programmeur utilisera les 4 variables.
==== Etape 2 : connexion à la base de données ====
La fonction mysql_connect($host,$user,$password) permet de se connecter au serveur de base de données mysql situé sur la machine nommée ''$host'' en utilisant le nom d'utilisateur ''$user'' ayant comme mot de passe ''$password''. Cette fonction renvoie le booléen true si la connexion est établie et false sinon.
==== Etape 3 : selectionner la base de données ====
Un serveur de base de données peut héberger plusieurs bases de données (une base de données est un ensemble de tables). La fonction mysql_select_db($base) permet de sélectionner la base de données à laquelle on va envoyer les requêtes. Cette fonction renvoie true si tout s'est bien passé et false sinon.
==== Etape 4 : création de la requête ====
Il faut ensuite créer la requête dans une chaîne de caractères. Ici la requête va être simple, par exemple ''$query='SELECT * FROM employe';'' : on met le requête dans la variable $query. Parfois, il faudra concaténer des chaînes de caractères pour construire la requête.
==== Etape 5 : envoyer la requête et récupérer le résultat ====
Pour envoyer la requête au serveur, il faut utiliser la fonction ''$r=mysql_query($query);'' qui envoie la requête ''$query'' et récupère le résultat dans ''$r''.
==== Etape 6 : fermer la connexion avec le serveur de base de données ====
Pour fermer la connexion avec le serveur de base de données, il suffit d'appeler la fonction ''mysql_close();''.
==== Etape 7 : générer du HTML à partir du résultat de la requête ====
Supposons que le résultat d'une requête soit contenu dans la variable $r. Il est souvent intéressant de parcourir un à un tous les enregistrements contenus dans $r. L'appel de fonction ''$a=mysql_fetch_object($r)'' permet de récupérer un à un tous les enregistrements dans la variable $a. Lors du premier appel, on récupère le premier enregistrement dans $a, lors du second appel, on récupère le second enregistrement et ainsi de suite jusqu'au dernier enregistrement. Si on appelle alors une nouvelle fois cette fonction, elle va renvoyer le booléen false. Ceci permet donc de traiter un à un tous les enregistrements
<pre>
while($a=mysql_fetch_object($r))
Ligne 132 :
Il suffit donc maintennant de parcourir chaque enregistrement et d'afficher du HTML en utilisant la commande écho à partir des différents champs des enregistrements.
=== Les pages du site (version 1) ===
'''Fichier index.html'''
<pre>
Ligne 272 :
</pre>
=== Les pages du site (version 2) ===
Lorsqu'on étudie les fichiers liste1.php, liste2.php et liste3.php, on s'aperçoit qu'ils sont extrêmement proches : on va donc réécrire l'application en écrivant un
Le nouveau '''fichier index.html''' devient donc :
Ligne 315 :
if(isset($_GET['l']))
else $l=1;
Ligne 343 :
Le programmeur teste en utilisant ''isset($_GET['l'])'' pour savoir si la variable l a été passée par la méthode GET et il récupère sa valeur dans la variable $l. Si ce paramètre n'existe pas, $l est fixé à la valeur 1. On construit ensuite la requête $query en fonction de la valeur de $l. Cette version du programme est plus simple mais îil faut toutefois faire très attention à la sécurité dans un tel cas.
=== Captures d'écran ===
'''Le menu initial'''
|