Avec PHP, vous pouvez fa­ci­le­ment extraire des in­for­ma­tions d’une base de données MySQL ou MariaDB. Pour cela, il suffit d’établir une connexion à la base de données, puis d’exécuter une requête SQL avec la fonction PHP mysqli_query(), dont les résultats peuvent ensuite être exploités.

Bases de données managées
Des bases de données gérées et sûres
  • Solutions flexibles, adaptées à vos besoins
  • Ar­chi­tec­ture de niveau pro­fes­sion­nel, gérée par des experts
  • Hébergées en Europe, con­for­mé­ment aux normes de pro­tec­tion des données les plus strictes

Quelles sont les exigences préa­lables ?

Pour extraire des in­for­ma­tions d’une base de données MySQL ou MariaDB avec PHP, certaines con­di­tions de base doivent être réunies. Vous avez d’abord besoin d’un en­vi­ron­ne­ment PHP fonc­tion­nel sur le serveur, gé­né­ra­le­ment associé à un serveur Web comme Apache ou Nginx.

Si vous n’avez pas encore d’en­vi­ron­ne­ment prêt à l’emploi, commencez par installer PHP.

Vous devez également disposer d’une ins­tal­la­tion de MySQL ou de MariaDB. Côté PHP, l’extension MySQLi est requise, mais elle est incluse par défaut dans la plupart des ins­tal­la­tions standards.

MySQL/MariaDB : récupérer des in­for­ma­tions avec PHP

Ce tutoriel vous explique comment créer une base de données MySQL ou MariaDB simple, y ajouter une table et un uti­li­sa­teur, puis y accéder via PHP. Étape par étape, vous réa­li­se­rez un petit site Web d’exemple qui interroge di­rec­te­ment des avis de res­tau­rants stockés dans la base de données et les affiche dans un tableau HTML.

Étape 1 : créer une base de données

Commencez par créer la base de données. Pour cela, connectez-vous au client MySQL ou MariaDB depuis la ligne de commande :

mysql -u root -p

Créez une base de données pour les avis :

CREATE DATABASE reviews;

Passez à cette base de données :

USE reviews;

Pour cet exemple, nous allons créer une seule table contenant les champs suivants :

  • Champ ID : clé primaire de la table, con­fi­gu­rée en auto-in­cré­men­ta­tion.
  • Nom de l’éva­lua­teur : champ texte d’une longueur maximale de 100 ca­rac­tères.
  • Éva­lua­tion en étoiles : note numérique comprise entre 1 et 5 (TINYINT).
  • Détails de l’avis : champ texte pouvant contenir jusqu’à environ 500 mots (VARCHAR(4000)).

Créez la table à l’aide de la commande CREATE TABLE :

CREATE TABLE user_review (
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
reviewer_name VARCHAR(100),
star_rating TINYINT,
details VARCHAR(4000)
);

Ajoutons main­te­nant deux exemples d’avis dans le tableau :

INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Ben', 5, 'Love the calzone!');
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Leslie', 1, 'Calzones are the worst.');

Étape 2 : créer un uti­li­sa­teur pour la base de données

Dans l’étape suivante, créez un uti­li­sa­teur dédié à la base de données. Pour des raisons de sécurité, il est re­com­mandé d’attribuer un uti­li­sa­teur distinct à chaque base, en par­ti­cu­lier si celle-ci est ac­ces­sible depuis un site Web.

La commande suivante crée un uti­li­sa­teur nommé review_site avec le mot de passe JxSLRkdutW et lui accorde l’accès à la base de données pré­cé­dem­ment créée :

CREATE USER 'review_site'@'localhost' IDENTIFIED BY 'JxSLRkdutW';
GRANT SELECT ON reviews.* TO 'review_site'@'localhost';
FLUSH PRIVILEGES;

Étape 3 : créer un script PHP

Note

Le code présenté dans ce tutoriel est vo­lon­tai­re­ment simplifié à des fins d’il­lus­tra­tion. Lors de la création d’un site Web, il est fortement re­com­mandé d’appliquer les bonnes pratiques de sécurité afin d’éviter que vos scripts PHP ne com­pro­met­tent l’accès au serveur.

Créez ensuite un fichier nommé showreviews.php dans votre espace Web et ouvrez-le pour le modifier. Par exemple, pour créer ce fichier dans le ré­per­toire /var/www/html, utilisez la commande suivante avec l’éditeur Nano :

sudo nano /var/www/html/showreviews.php

Dans cet exemple, le code PHP sera intégré di­rec­te­ment dans l’HTML, de sorte que la page com­men­cera par les balises HTML de base. Le style CSS est également inclus dans la section head du document HTML :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
    table {
        border-collapse: collapse;
        margin: 20px auto;
        width: 80%;
    }
    th, td {
        border: 1px solid black;
        padding: 5px 10px;
        text-align: left;
    }
</style>
</head>
<body>
HTML

Chaque script PHP doit commencer par la balise d’ouverture PHP :

<?php

Ensuite, ajoutez un bloc de connexion MySQL/MariaDB avec l’em­pla­ce­ment du serveur (localhost), le nom de la base de données ainsi que le nom d’uti­li­sa­teur et le mot de passe de la base de données.

$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
php

Ajoutez ensuite une section pour établir la connexion à la base de données. Si la connexion échoue, un message d’erreur sera affiché. Vous pouvez relier votre script PHP à une base de données MySQL ou MariaDB à l’aide de la fonction mysqli_connect(). Indiquez le nom d’hôte, le nom d’uti­li­sa­teur, le mot de passe et le nom de la base de données afin que PHP sache pré­ci­sé­ment quelle base utiliser.

$dbconnect = mysqli_connect($hostname, $username, $password, $db);
if (!$dbconnect) {
    die("Échec de la connexion à la base de données : " . mysqli_connect_error());
}
?>
php

Étape 4 : insérer une table

À l’étape suivante, ajoutez dans votre script le code HTML qui servira à ini­tia­li­ser la table destinée à afficher les données :

<table>
<tr>
<th>Reviewer Name</th>
<th>Stars</th>
<th>Details</th>
</tr>
HTML

Ensuite, le code PHP interroge la base de données, parcourt les résultats et affiche chaque avis dans une ligne distincte du tableau :

<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
    or die(mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
    echo "<tr>\n" .
         "<td>" . htmlspecialchars($row['reviewer_name']) . "</td>\n" .
         "<td>" . htmlspecialchars($row['star_rating']) . "</td>\n" .
         "<td>" . htmlspecialchars($row['details']) . "</td>\n" .
         "</tr>\n";
}
?>
php

N’oubliez pas de fermer la table et le bloc HTML à la fin du document :

</table>
</body>
</html>
HTML

Pour tester le script, visitez showreviews.php dans un na­vi­ga­teur.

Image: Affichage de showreviews.php dans le navigateur
La table est main­te­nant affichée dans le na­vi­ga­teur.

Étape 5 : aperçu du script final

Voici le script PHP complet :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
    table {
        border-collapse: collapse;
        margin: 20px auto;
        width: 80%;
    }
    th, td {
        border: 1px solid black;
        padding: 5px 10px;
        text-align: left;
    }
</style>
</head>
<body>
<?php
$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
$dbconnect = mysqli_connect($hostname, $username, $password, $db);
if (!$dbconnect) {
    die("Échec de la connexion à la base de données : " . mysqli_connect_error());
}
?>
<table>
<tr>
<th>Reviewer Name</th>
<th>Stars</th>
<th>Details</th>
</tr>
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
    or die(mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
    echo "<tr>\n" .
         "<td>" . htmlspecialchars($row['reviewer_name']) . "</td>\n" .
         "<td>" . htmlspecialchars($row['star_rating']) . "</td>\n" .
         "<td>" . htmlspecialchars($row['details']) . "</td>\n" .
         "</tr>\n";
}
?>
</table>
</body>
</html>
Aller au menu principal