Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Récupérer des données dans une base de données en PHP

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par Qwix, le 11 décembre 2006

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&eacute;e</div></td>
<td><div align=\"center\">r&eacute;alisateur</div></td>
<td><div align=\"center\">r&eacute;alis&eacute; en</div></td>
<td><div align=\"center\">r&eacute;sum&eacute;</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&eacute;e</div></td>
<td><div align=\"center\">r&eacute;alisateur</div></td>
<td><div align=\"center\">r&eacute;alis&eacute; en</div></td>
<td><div align=\"center\">r&eacute;sum&eacute;</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&eacute;e</div></td>
<td><div align=\"center\">r&eacute;alisateur</div></td>
<td><div align=\"center\">r&eacute;alis&eacute; en</div></td>
<td><div align=\"center\">r&eacute;sum&eacute;</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&eacute;e</div></td>
<td><div align=\"center\">r&eacute;alisateur</div></td>
<td><div align=\"center\">r&eacute;alis&eacute; en</div></td>
<td><div align=\"center\">r&eacute;sum&eacute;</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.




Tutorial de Qwix