MySQL : Interfacage avec PHP
Par Damien, mardi 8 mars 2005 à 19:43 :: Bases de données :: #19 :: rss
Attaquer une base de donnée est vraiment très simple en PHP, puisqu' il existe justement des fonctions élaborées dans ce but.
1- Avant propos
Version de MySQL
Ce tutorial traite de l'extension standard mysql de PHP (pas mysqli) et concerne donc MySQL versions 3.xx et 4.0 (pas 4.1 et supérieur). Un autre tutorial expliquera comment utiliser l'extension mysqli.
Création de la table
Reprenons notre table précédente :
CREATE TABLE test ( id int(11) DEFAULT '0' NOT NULL auto_increment, nom varchar(20) NOT NULL, email varchar(50), dateheure datetime, PRIMARY KEY (id) );
Je vous conseille de stocker la structure de la table dans un fichier, mysql.sql par exemple, puis de l'importer depuis phpMyAdmin ou alors de taper la commande :
mysql -u utilisateur -pmotdepasse basededonnee < mysql.sql
2- Connection avec la base de données
Avant d'envoyer des requêtes à la base de données, il faut déjà s'y connecter.
Pour cela on utilise la fonction mysql_connect() :
mysql_connect(serveur, utilisateur, mot_de_passe)
La déconnection (avant la fin du script) se fait avec la fonction mysql_close() :
mysql_close()
3- Insertion de données dans la table
Une fois la base créée, vous pouvez y ajouter des données à l'aide de PHP.
Comme vu précédemment, connectez-vous d'abord avec mysql, puis sélectionnez la base sur laquelle vous voulez travailler. Envoyez ensuite des requêtes (query) à la base.
<?php switch($_POST['action']) { // INSERTION DANS LA BASE case "inserer": // déclaration de quelques variables $host = "localhost"; $user = "utilisateur"; $pass = "motdepasse"; $bdd = "basededonnes"; $table = "test"; // connection avec MySQL // Le @ indique à php de ne pas afficher de message d'erreur // affichage sélection echo '<p>Bonjour ' . htmlentities($_POST['nom']) . ', votre email est ' . htmlentities($_POST['email']) . '</p>'; // stockage dans la bdd $nom = $_POST['nom']; $email = $_POST['email']; { // si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les ' // deux raisons : autoriser d'ajouter des ', et sécuriser notre requete // on y reviendra dans un prochain tutorial } $sql = "INSERT INTO " . $table . "(nom, email, dateheure) VALUES('" . $nom . "','" . $email . "', NOW())"; // déconnection avec MySQL break; // AFFICHAGE FORMULAIRE HTML default: ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="action" value="inserer" /> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre email : <input type="text" name="email" /></p> <p><input type="submit" name="Submit" value="Ok" /></p> </form> <? break; } ?>
Télécharger l'exemple en archive zip.
4- Affichage des données
Vous avez maintenant des données dans la base, il ne vous reste plus qu'à les afficher. Le principe est le même que précedemment : se connecter, puis envoyer des requêtes.
<?php $sql = "SELECT * FROM " . $table; ?>
Cette fois-ci, par contre, la requête va vous retourner des données que vous afficherez.
Attention : la variable $res ne contient pas les données elles-mêmes, mais seulement un pointeur permettant de retrouver vos données, à l'aide d'une autre fonction.
Il existe plusieurs fonctions permettant de recupérer ces données :
1) La fonction mysql_result
<?php $i = 0; while ($i < $nb){ // parcours des résultats de la requête $i++; } // ne pas oublier d'incrémenter $i ;) ... sinon boucle infinie ! ?>
2) La fonction mysql_fetch_array
<?php $nom = $val['nom']; $email = $val['email']; $dateheure = $val['dateheure']; } ?>
NB : Il existe aussi les fonctions mysql_fetch_assoc(), mysql_fetch_object(), et mysql_fetch_row(). Je vous laisse les découvrir à l'aide de la documentation.
Quelle fonction utiliser ?
En pratique, on utilisera la deuxième méthode, c'est à dire la fonction mysql_fetch_array() (et même plutôt mysql_fetch_assoc()). Cette méthode est plus performante et plus pratique.

Commentaires
1. Le mercredi 30 mars 2005 à 16:31, par Rhombus
2. Le lundi 4 avril 2005 à 18:44, par z00m
3. Le dimanche 15 mai 2005 à 16:10, par Stephane
4. Le vendredi 27 mai 2005 à 06:07, par chriss
5. Le lundi 13 juin 2005 à 18:43, par Martin
6. Le mardi 14 juin 2005 à 09:28, par freebug
7. Le lundi 11 juillet 2005 à 13:55, par mecontant
8. Le vendredi 29 juillet 2005 à 19:35, par Maryline
9. Le vendredi 19 août 2005 à 10:57, par toto
10. Le vendredi 9 septembre 2005 à 10:34, par ls
11. Le vendredi 7 octobre 2005 à 00:09, par Nigoun
12. Le vendredi 14 octobre 2005 à 12:13, par tatann
13. Le jeudi 20 octobre 2005 à 09:23, par bzh
14. Le mercredi 16 novembre 2005 à 20:56, par Freddd
15. Le vendredi 2 décembre 2005 à 05:46, par Mike974
16. Le samedi 3 décembre 2005 à 10:53, par Damien
17. Le mercredi 4 janvier 2006 à 16:28, par clara
18. Le samedi 4 février 2006 à 00:32, par MOMO
19. Le mardi 11 avril 2006 à 10:33, par bouel
20. Le dimanche 30 avril 2006 à 18:06, par micka
21. Le samedi 13 mai 2006 à 23:05, par yarbud
22. Le mardi 16 mai 2006 à 15:35, par sayeret
23. Le vendredi 19 mai 2006 à 10:05, par Fynd
24. Le samedi 24 juin 2006 à 22:15, par Mouton
25. Le mardi 4 juillet 2006 à 21:27, par sacar
26. Le mardi 25 juillet 2006 à 10:51, par mary
27. Le jeudi 14 septembre 2006 à 19:22, par coucou
28. Le mardi 22 mai 2007 à 12:22, par JarodG64
29. Le lundi 11 juin 2007 à 23:10, par aandre2937
30. Le dimanche 24 juin 2007 à 15:52, par David'
31. Le jeudi 11 septembre 2008 à 15:29, par josé
32. Le lundi 28 septembre 2009 à 02:23, par windman
33. Le vendredi 15 janvier 2010 à 04:22, par jjetlee55
34. Le jeudi 29 avril 2010 à 02:02, par soumomo
35. Le lundi 3 mai 2010 à 01:14, par soumomo
36. Le lundi 21 juin 2010 à 18:05, par sibylle
Ajouter un commentaire