20-08-2008 : 10h06 min - non connecté
Dernière modification le 12 août 2007
Nous allons voir sur cette page comment se connecter à une base de données, insérer des données et les afficher.
Pour les utilisateurs de Dreamweaver MX, vous pouvez aussi voir cette autre page qui vous montrera comment utiliser ce logiciel pour gérer les bases de données sans taper une ligne de code.
Avant de faire des requêtes dans une table, il faut se connecter à la base de données. Il faut pour cela connaître le nom du serveur, le nom de la base, un nom d'utilisateur et son mot de passe. Ces données sont fournies par votre hébergeur.
Il faut ouvrir la connexion dans chaque page, donc pour ne pas avoir à réecrire le code à chaque fois il vaut mieux le mettre dans un fichier à part et l'inclure dans la page avec la fonction include.
Appelons ce fichier connexion.php :
L'instruction mysql_pconnect se connecte au serveur contenant vos bases de données et l'instruction die(mysql_error()) affiche une erreur le cas échéant.
mysql_select_db se connecte à la base de données spécifiée dans $database.
Remarque : La plupart du temps, les hébergeurs gratuits ne fournissent qu'une seule base de données et vous ne pourrez pas choisir son nom.
Cas de EasyPhp :
Le serveur étant votre ordinateur, on l'appelle "localhost" (où le nom de la machine si EasyPhp sert pour un réseau local). L'utilisateur par défaut s'appelle "root" et il n'y a pas de mot de passe. Vous pouvez créer autant de bases que vous le désirez.
Exercice :
Créez le fichier connexion.php correspondant au livre d'or de la page précédente.
Il faut maintenant créer un formulaire pour insérer les données dans la base. Appelons cette page "formulaire.php". C'est un formulaire qui contiendra deux champs : le nom et le commentaire. L'action du formulaire sera une autre page que l'on appelera "inserer.php".
Pour simplifier la compréhension du code, il vaut mieux que les noms des champs du formulaire soient les mêmes que ceux choisis dans la base de données, donc "nom" et "commentaire".
Voyons le contenu de la page "inserer.php" (sans les balises d'entête):
On commence par réaliser la connexion à la base
en incluant le fichier connexion.php.
Ensuite on récupère les données du formulaire
qui sont dans le tableau $_POST.
La commande mysql_query effectue la requête : ici il s'agit de INSERT INTO
nom_de_la_table VALUES ('valeur1','valeur2','valeur3')
A noter que ici valeur1 est un index qui s'incrémente tout seul, on n'a donc pas besoin de mettre une valeur. Il suffit de mettre deux guillemets simples sans espace.
Le code ci-dessus pourrait être amélioré dans la définition des variables. On pourrait aussi tester si l'insertion a réellement été faite dans la base avant de mettre le message "Le commentaire a été inséré". Mais dans un soucis de simplicité nous en resterons là.
Exercice :
1) Créer le formulaire
2) Créer la page "inserer.php" en évitant de copier/coller le code ci-dessus :-)
Créons maintenant la page qui permettra de voir tous les commentaires (livredor.php) :
$livredor est un tableau. On obtient chaque valeur du tableau en indiquant entre crochet le nom de la colonne à afficher. Par exemple pour afficher le nom : $livredor['nom']. On aurait aussi pu utiliser le numéro de la colonne. La première colonne est numérotée 0, la deuxième est numéroté 1, ... Donc pour afficher le nom, on aurait aussi pu écrire $livredor[1].
La commande mysql_fetch_array transforme le résultat de la requête en tableau et avance le pointeur du tableau d'un élément à chaque fois qu'on exécute la commande. A la première exécution le pointeur est positionné sur le premier élément du tableau. Puis dans la boucle do ...while le pointeur est avancé de un élément à chaque fois. Une fois arrivé au dernier élément le tableau est vide et la variable $livredor n'est plus valide, donc la boucle s'arrête.
Exercice :
Créer une page pour afficher les commentaires.
Nous allons reprendre le code précédent pour permettre de modifier les commentaires. Pour simplifier, nous allons voir comment modifier les commentaires, mais pas comment ne permettre cela qu'à l'utilisateur qui a écrit le commentaire. Le but de l'exercice est de voir comment faire cette modification et non pas de protéger la base de données.
Reprenons la fin du code ci-dessus et rajoutons un lien pour la modification (la troisième commande echo) :
Commentaires : le symbole anti-slash ("\") doit précéder les guillemets qui doivent être affichés par la commande echo. Si on omettait l'anti-slash, la commande echo s'arrêterait dès le premier guillemet.
Avec ce code source, pour chaque enregistrement on aura aussi un lien "modifier". On passe l'id de l'enregistrement dans une variable grâce à l'url. Par exemple, pour modifier le troisième enregistrement on cliquerait sur le lien : modifier.php?id=3
Passons maintenant au formulaire de modification, càd la page "modifier.php" :
Commentaires : L'action du formulaire sera dans la page "modifier2.php". On prérempli un champ texte avec l'attribut "value". Pour la zone de texte, voir dans le code ci-dessus. On passe l'id de l'enregistrement grâce à un champ caché. Et n'oubliez pas que les noms des champs du formulaire doivent être les noms des variables que vous voulez passer dans la page suivante.
Reste à effectuer les modifications dans la base de données. Voici le code de la page modifier2.php :
Exercice :
Créer une page pour modifier un enregistrement.
On peut reprendre la même structure que l'exemple de modification ci-dessus. On peut par exemple ajouter un lien "supprimer" dans la page livredor.php qui renverra vers une page supprimer.php contenant le code suivant :
Exercice :
Je pense que vous avez deviné ... :-)
Page suivante : base de données, suite
Cours suivant : Les fonctions