Formation à PHP - TP3: Utilisation d'une base de données

Licence Professionnelle, Université Lyon 1, Bourg-en-Bresse


Le but de ce TP est d'étudier, sur un exemple, comment PHP peut s'interfacer à une base de données. On utilisera une base de données MySQL.
On se reportera en cas de besoin à la documentation officielle de PHP. Les transparents du cours sont également disponibles.
On utilisera de préférence un navigateur de type Netscape ou Mozilla pour tester les différents scripts. En effet, les navigateurs de type Internet Explorer, en cas de rappel de page, délivrent souvent une version cached, masquant ainsi une éventuelle modification de script.
Un compte-rendu au format HTML est demandé individuellement pour chaque étudiant. Il comportera des extraits pertinents de code PHP, ainsi que des commentaires sur ce code (validité, limitation, améliorations, etc...)

Présentation du problème

Nous avons vu lors du TP2 comment il était possible de stocker des informations diverses, d'une page à l'autre, en utilisant le mécanisme des sessions. Néanmoins, les sessions ne permettent pas de conserver des informations d'une visite à l'autre.
(Remarquons toutefois que ceci serait envisageable en utilisant un cookie, mais cette solution est peu fiable: voir à ce sujet toutes les restrictions liées à l'utilisation des cookies)
Une base de données permet justement une sauvegarde à long terme de données diverses: informations liées aux utilisateurs, à des produits, etc...
PHP peut s'interfacer à la quasi-totalité des système de gestion de base de données (SGBD) du marché. Cela signifie qu'il est possible, dans un script PHP, de se connecter à une base de données, et d'en extraire les renseignements dont nous avons besoin, en passant par exemple par des requête SQL du type SELECT * FROM ma_table.
Dans le cadre de ce TP, nous utiliserons une base de données MySQL. En cas de problèmes liés à la base, consulter le site officiel de MySQL.

PHP et MySQL - les bases

La première chose à faire lorsque vous souhaitez accéder en PHP à une base de données est de vous connecter à un serveur de base données qui héberge cette base, puis de vous connecter à la base proprement dite. La connexion au serveur MySQL se fait via la fonction mysql_connect(), qui vous permet de préciser l'adresse du serveur, ainsi que le nom sous lequel vous vous connectez (login). Suivant le login utilisé, vous devrez fournir ou non un mot de passe.
Notez bien que, dans le cadre du TP, la base de données que vous utilisez est en local, sur votre machine.

Une fois connecté à un serveur de base de données, il est nécessaire d'ouvrir une base proprement dite. Pour ceci, utilisez la fonction my_sql_select_db() en précisant le nom de la base en question.
Vous avez maintenant accès à la base de données sélectionnées, avec les droits correspondant à l'identité sous laquelle vous vous êtes connectés au serveur. Cela signifie que vous ne pourrez pas forcément effectuer toutes les opérations que vous souhaitez sur la base.

Pour réaliser une requête sur la base de données, on procède généralement comme suit:

// construction d'une requête SQL
$query = "SELECT * FROM ma_table";
// exécution de la requête SQL
$result = mysql_query($query);


La variable $result est initialisée à TRUE si la requête a été exécutée correctement ou FALSE dans le cas contraire. Attention: dans le cas d'une requête SQL de type SELECT, SHOW, EXPLAIN ou DESCRIBE, la fonction renvoie une ressource SQL en cas de succès (par exemple le résultat de la requête SELECT).

Nous allons maintenant procéder à quelques manipulation simples de bases de données. Si l'on revient au site commercial du TP2, il apparaît rapidement qu'il est nécessaire de pouvoir identifier l'utilisateur. Pour ceci, il est nécessaire de stocker des informations utilisateurs comme son login et son mot de passe.
Attention: en France, la Commission Nationale Informatique et Liberté (CNIL) interdit de stocker des données nominatives relatives à des utilisateurs.

Un exemple: création d'un utilisateur...

Votre site doit être capable de permettre à un nouvel utilisateur de s'inscrire et donc de créer une nouvelle entrée dans la base de données. C'est cette fonctionalité que nous allons maintenant développer.

... et la mise à jour des données utilisateur

Il est classique de pouvoir donner à l'utilisateur l'occasion de modifier ses données personnelles (changement d'adresse, de login, etc...). Quelle(s) restriction(s) envisagez-vous par rapport à ces modifications de données?

Pour aller plus loin

Ne traitez cette question que s'il vous reste du temps.
Vous avez dû vous apercevoir que les traitements effectués dans les deux dernières questions font appel à des mécanismes très similaires. Afin d'alléger le volume de code, il est possible de n'écrire qu'un seul formulaire et qu'un seul script PHP pour la création et la modification des données. Les parties communes (HTML et PHP) seront traitées dans tous les cas, alors que les parties spécifiques ne seront appelées que si nécessaire.
Afin d'identifier le contexte d'utilisation, vous passerez une variable $contexte qui vaudra "create" ou "update" suivant les cas.
TP du 27/02/2004 - nicolas.zlatoff@liris.cnrs.fr