« Programmation PHP/Exemples/BD 1 » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernier (discussion | contributions)
m Modifications de Tavernierbot (Discussion) révertées; retour à l'ancienne version de J.M. Tavernier
Tavernierbot (discussion | contributions)
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'''. Les données seront dans une table nommée ''employe''. La table employé possède des champs NOM, PRENOM et SALAIRE. La table employé possède de plus un identifiant nommé ID qui est un entier (BIGINT) autoincrémenté et qui est une clé primaire de la table.
 
 
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 et il y a un lien pour revenir à la première page.
 
=== 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 la base de données, $user (le nom de l'utilisateur de la base de données), $password (le mot de passe de cet utilisateur) et $base le nom de la base de données. Ces paramètres changent en fonction de la plateforme que vous utiliser. Il est intéressant d'isoler ces paramètres dans un fichier séparé, que ce soit au niveau de la sécurité ou pour porter l'application sur une autre plateforme. Il faut se renseigner au niveau de l'hébergeur sur les caractéristiques de la plateforme utilisée. Les paramètres suivants sont ceux par défaut si on utilise easyphp. On a juste créé une base de données appelée ''toto''.
<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 en écrivant
<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 seul fichier liste.php et en le paramétrant grâce à la méthode GET.
 
Le nouveau '''fichier index.html''' devient donc :
Ligne 315 :
 
if(isset($_GET['l']))
$l=$_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'''