Récupérer des données dans une base de données en PHP
Pour ce tutorial, je pars du principe que vous connaissez les bases du SQL. IL est possible de récupérer des données dans une base de données MYSQL grâce aux fonctions suivantes:
- mysql_fetch_array()
- mysql_fetch_assoc()
- mysql_fetch_object()
- mysql_fetch_row()
- mysql_query()
Tout d'abord nous allons commencer par notre base de données. Il s'agit d'une base de données ou vous pourrez stocker vos films préférés. Pratique pour gérer ses DVD .
Voilà le code SQL de la table qu'il vous suffit de copier/coller dans phpMyAdmin. Il vous faudra au préalable créer une base de données MESFILMS ou alors d'un autre nom, mais faites attention à bien vous en rappeler.
CREATE TABLE films( id_films int(3) NOT NULL AUTO_INCREMENT, titre varchar(40) NOT NULL DEFAULT '', genre varchar(40) NOT NULL DEFAULT '', duree varchar(5) NOT NULL DEFAULT '', date_realisation date NOT NULL DEFAULT '0000-00-00', realisateur varchar(40) NOT NULL DEFAULT '', resume text NOT NULL, commentaire text NOT NULL, PRIMARY KEY(id_films) )
Récupérer les données avec mysql_fetch_array()
<?php //connexion au serveur: $cnx = mysql_connect( "localhost", "root", "" ); //sélection de la base de données: $db= mysql_select_db( "MESFILMS" ); //création de la requête SQL: $sql = "SELECT * FROM films ORDER BY titre"; //exécution de notre requête SQL: $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); //récupération avec mysql_fetch_array(), et affichage de nos résultats : echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" ); echo( "<tr> <td><div align=\"center\">titre</div></td> <td><div align=\"center\">genre</div></td> <td><div align=\"center\">durée</div></td> <td><div align=\"center\">réalisateur</div></td> <td><div align=\"center\">réalisé en</div></td> <td><div align=\"center\">résumé</div></td> <td><div align=\"center\">commentaire</div></td> </tr>" ); while( $result = mysql_fetch_array( $requete ) ) { echo( "<tr>\n" ); echo( "<td><div align=\"center\">".$result["titre"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["genre"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["duree"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["realisateur"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["date_realisation"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["resume"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["commentaire"]."</div></td>\n" ); echo( "</tr>\n" ); } echo( "</table><br>\n" ); ?>
Explications
La variable $cnx
nous permet de stocker la ressource retournée par
mysql_connect()
, on se connecte donc à notre serveur grâce à cette fonction.
On sélectionne ensuite notre base de données grâce à mysql_select_db()
.
Nous créeons une requête SQL, que nous stockons dans la variable $sql
.
Nous exécutons ensuite notre requête sur le serveur grâce à mysql_query()
.
Maintenant passons à la récupération des données de la table:
Comme il l'est expliqué dans la documentation,
mysql_fetch_array()
retourne un tableau contenant nos résultats, nous
allons donc récupérer ces données grâce aux noms des champs, par lesquel à été indexé le dit tableau
Ainsi:
$result[“titre”]
est le champ titre de notre table films.$result[“genre”]
est le champ genre de notre table films.$result[“duree”]
est le champ duree de notre table films.$result[“realisateur”]
est le champ réalisateur de notre table films.$result[“date_realisation”]
est le champ date de réalisation de notre table films.$result[“resume”]
est le champ resumé de notre table films.$result[“commentaire”]
est le champ commentaire de notre table films.
Nous n'avons plus ensuite qu'à afficher nos résultats grâce à notre instruction while.
Récupérer les données avec mysql_fetch_assoc
<?php //connexion au serveur: $cnx = mysql_connect( "localhost", "root", "" ); //sélection de la base de données: $db= mysql_select_db( "MESFILMS" ); //création de la requête SQL: $sql = "SELECT * FROM films ORDER BY titre"; //exécution de notre requête SQL: $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); //récupération avec mysql_fetch_assoc(), et affichage de nos résultats : echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" ); echo( "<tr> <td><div align=\"center\">titre</div></td> <td><div align=\"center\">genre</div></td> <td><div align=\"center\">durée</div></td> <td><div align=\"center\">réalisateur</div></td> <td><div align=\"center\">réalisé en</div></td> <td><div align=\"center\">résumé</div></td> <td><div align=\"center\">commentaire</div></td> </tr>" ); while( $result = mysql_fetch_assoc( $requete ) ) { echo( "<tr>\n" ); echo( "<td><div align=\"center\">".$result["titre"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["genre"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["duree"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["realisateur"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["date_realisation"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["resume"]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result["commentaire"]."</div></td>\n" ); echo( "</tr>\n" ); } echo( "</table>\n" ); ?>
Explications
Comme expliqué ci-dessus, nos variables $cnx
, $db
, $sql
et $requete
nous permettent de nous connecter au serveur, à la base de
données, créer une requête SQL et l'exécuter.
Maintenant passons à la récupération des données de la table:
Comme il l'est expliqué dans la documentation,
mysql_fetch_assoc()
retourne un tableau contenant nos résultats.
Ainsi:
$result[“titre”]
est le champ titre de notre table films.$result[“genre”]
est le champ genre de notre table films.$result[“duree”]
est le champ duree de notre table films.$result[“realisateur”]
est le champ réalisateur de notre table films.$result[“date_realisation”]
est le champ date de réalisation de notre table films.$result[“resume”]
est le champ résumé de notre table films.$result[“commentaire”]
est le champ commentaire de notre table films.
Nous n'avons plus ensuite qu'à afficher nos résultats grâce à notre instruction while.
Récupérer les données avec mysql_fetch_object
<?php //connexion au serveur: $cnx = mysql_connect( "localhost", "root", "" ); //sélection de la base de données: $db= mysql_select_db( "MESFILMS" ); //création de la requête SQL: $sql = "SELECT * FROM films ORDER BY titre"; //exécution de notre requête SQL: $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); //récupération avec mysql_fetch_object(), et affichage de nos résultats : echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" ); echo( "<tr> <td><div align=\"center\">titre</div></td> <td><div align=\"center\">genre</div></td> <td><div align=\"center\">durée</div></td> <td><div align=\"center\">réalisateur</div></td> <td><div align=\"center\">réalisé en</div></td> <td><div align=\"center\">résumé</div></td> <td><div align=\"center\">commentaire</div></td> </tr>" ); while( $result = mysql_fetch_object( $requete ) ) { echo( "<tr>\n" ); echo( "<td><div align=\"center\">".$result->titre."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->genre."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->duree."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->realisateur."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->date_realisation."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->resume."</div></td>\n" ); echo( "<td><div align=\"center\">".$result->commentaire."</div></td>\n" ); echo( "</tr>\n" ); } echo( "</table>\n" ); ?>
Explications
Comme expliqué ci-dessus, nos variables $cnx
, $db
, $sql
et $requete
nous permettent de nous connecter au serveur, à la base de
données, créer une requête SQL et l'exécuter.
Maintenant passons à la récupération des données de la table:
Comme il l'est expliqué dans la documentation,
mysql_fetch_object()
retourne un objet pour chaque résultat de notre requête.
Ainsi:
$result→titre
est le champ titre de notre table films.$result→genre
est le champ genre de notre table films.$result→duree
est le champ durée de notre table films.$result→realisateur
est le champ réalisateur de notre table films.$result→date_realisation
est le champ date de réalisation de notre table films.$result→resume
est le champ résumé de notre table films.$result→commentaire
est le champ commentaire de notre table films.
Nous n'avons plus ensuite qu'à afficher nos résultats grâce à notre instruction while.
Récupérer les données avec mysql_fetch_row
<?php //connexion au serveur: $cnx = mysql_connect( "localhost", "root", "" ) or die( "<center>Impossible de se connecter au serveur</center><br>\n" ); //sélection de la base de données: $db= mysql_select_db( "MESFILMS" ) or die( "<center>Impossible de se connecter à la base de données</center><br>\n" ); //création de la requête SQL: $sql = "SELECT * FROM films ORDER BY titre"; //exécution de notre requête SQL: $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ); //récupération avec mysql_fetch_row(), et affichage de nos résultats : echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" ); echo( "<tr> <td><div align=\"center\">titre</div></td> <td><div align=\"center\">genre</div></td> <td><div align=\"center\">durée</div></td> <td><div align=\"center\">réalisateur</div></td> <td><div align=\"center\">réalisé en</div></td> <td><div align=\"center\">résumé</div></td> <td><div align=\"center\">commentaire</div></td> </tr>" ); while( $result = mysql_fetch_row( $requete ) ) { echo( "<tr>\n" ); echo( "<td><div align=\"center\">".$result[1]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[2]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[3]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[5]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[4]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[6]."</div></td>\n" ); echo( "<td><div align=\"center\">".$result[7]."</div></td>\n" ); echo( "</tr>\n" ); } echo( "</table>\n" ); ?>
Explications
Comme expliqué ci-dessus, nos variables $cnx
, $db
, $sql
et $requete
nous permettent de nous connecter au serveur, à la base de
données, créer une requête SQL et l'exécuter.
Maintenant passons à la récupération des données de la table:
Comme il l'est expliqué dans la documentation,
mysql_fetch_row()
retourne un tableau contenant nos résultats
, ce tableau étant indexé par indices.
Ainsi:
$result[1]
est le champ titre de notre table films.$result[2]
est le champ genre de notre table films.$result[3]
est le champ durée de notre table films.$result[5]
est le champ réalisateur de notre table films.$result[4]
est le champ date de réalisation de notre table films.$result[6]
est le champ résumé de notre table films.$result[7]
est le champ commentaire de notre table films.
Nous n'avons plus ensuite qu'à afficher nos résultats grâce à notre instruction while.
