Nous en avons terminé avec cette introduction aux bases de données relationnelles. Comme prévu, nous allons, dans cette activité, évoquer l'utilisation d'une base de données dans un cadre plus "réaliste".
Une base de données peut être utilisée, par exemple, par un site d'e-commerce pour stocker les données relatives aux clients et aux commandes. Dans ce cas, nous avons un serveur web qui fournit aux clients les pages web dynamiques (voir les activités consacrées aux réseaux pour plus d'informations). Comme cela vient d'être dit, d'un côté le serveur web fournit aux clients des pages web, d'un autre côté, ce même serveur peut interroger une base de données, par exemple pour savoir si tel ou tel article est en stock.
Il existe plusieurs langages de programmation utilisés côté serveur (Java avec Java Server Pages, Ruby avec Ruby on Rails, JavaScript avec nodeJS ou encore Python avec Django...), mais le plus populaire reste le PHP (en 2013 plus de 244 millions de sites web l'utilisaient). Un programme écrit en PHP peut donc d'un côté générer des pages web pour qu'elles soient envoyées vers le client et d'un autre côté interroger une (ou des) base(s) de données. Le serveur web peut utiliser les données récupérées dans la base de données pour générer la page web qui sera envoyée aux clients.
Nous n'allons pas étudier ici le langage PHP, mais je vais tout de même vous présenter un exemple de programme écrit en PHP :
<?php
/*
Connexion à la base de données "contacts"
*/
$link = mysqli_connect("localhost", "root", "", "contacts");
// Si la connexion est impossible, une erreur est retournée
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// On prépare la requête "SELECT first_name, last_name, email_address FROM persons"
// La base de données "demo" possède une table "persons"
$sql = "SELECT first_name, last_name, email_address FROM persons";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<!doctype html>";
echo "<html lang="fr">";
echo "<head>";
echo "<meta charset="utf-8">";
echo "<title>Titre de la page</title>";
echo "</head>";
echo "<body>";
while($row = mysqli_fetch_array($result)){
echo "<p>Bonjour ".$row['first_name']." ".$row['last_name']."</p>";
echo "<p> Votre adresse e-mail est ".$row['email_address']."</p>";
echo "<br/>";
}
echo "</body>";
echo "</html>";
mysqli_free_result($result);
}
else{
echo "No records matching your query were found.";
}
}
else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Ferme la connexion
mysqli_close($link);
?>
Encore une fois l'idée n'est pas de vous faire un cours sur le PHP, mais voici quelques informations qui vous permettront de mieux comprendre ce code :
Ce programme PHP permet de se connecter à une base de données dénommée "contacts". La base de données "contacts" possède une table "persons".
Voici un exemple de ce que l'on pourrait trouver dans la table "persons" :
id | first_name | last_name | email_address |
---|---|---|---|
1 | Christian | Dupont | chritian.dupont@aol.com |
2 | Valérie | Durand | val.durand@inria.fr |
3 | Sandra | Duval | duvalSandra2@education.gouv.fr |
Ce programme PHP générerait alors la page HTML suivante :
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Titre de la page</title>
</head>
<body>
<p>Bonjour Christian Dupont</p>
<p>Votre adresse e-mail est chritian.dupont@aol.com</p>
<br/>
<p>Bonjour Valérie Durand</p>
<p>Votre adresse e-mail est val.durand@inria.fr</p>
<br/>
<p>Bonjour Sandra Duval</p>
<p>Votre adresse e-mail est duvalSandra2@education.gouv.fr</p>
<br/>
</body>
</html>
Cette page serait ensuite envoyée vers le client.
Si vous voulez en savoir ou si vous voulez, dans le cadre d'un projet, développer un site web complet (client+serveur), je vous conseille d'étudier le cours consacré au couple PHP+MySQL sur openclassrooms.com.
Toujours si vous désirez construire un site web complet, vous pouvez aussi utiliser ce que l'on appelle un framework (un framework simplifie le développement d'un site). Voici quelques frameworks :
Si vous voulez encore plus vous simplifier les choses, vous pouvez aussi utiliser un CMS (content management system) comme Wordpress ou Drupal
Dans tous les cas, ce que vous avez appris dans cette série d'activités pourra vous êtes utile.