Le problème "des livres / des auteurs" | Page d'accueil de L'atelier LAMP ![]() |
|
Les 3 scripts ci-dessous sont complets (code HTML compris) : vous pouvez les copier/coller directement dans votre éditeur, les sauvegarder et essayer de les exécuter sur le serveur web de votre choix. Vous devrez cependant remplacer la ligne :
include "connect.inc.php"; $db_link = connect(); |
par les lignes :
$db_link = mysql_connect("localhost","votre_login_SQL","votre_mot_de_passe_SQL"); mysql_select_db("nom_de_votre_base",$db_link); |
et avoir bien sûr créé au préalable les tables décrites à la section 1. sur le serveur MySQL local.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD><TITLE>Affichage d'une sélection de livres (choix A)</TITLE></HEAD> <BODY> <?php
// Connexion à la base
include "connect.inc.php"; $db_link = connect();
// Requête SQL
$query = "SELECT * FROM `A_livres` LEFT JOIN `auteurs` ON `A_livres`.`auteur`=`a_id`";
// Envoi requête SQL
$result = mysql_query($query,$db_link) or die(mysql_error());
// Affichage du résultat
while ($row = mysql_fetch_assoc($result)) {
$titre_html = htmlentities($row['titre']);
$annee_html = htmlentities($row['annee']);
$auteur_nom_html = htmlentities($row['nom']);
$auteur_prenom_html = htmlentities($row['prenom']);
echo "<P>\n";
echo "<B>Titre :</B> $titre_html<BR>\n";
echo "<B>Année :</B> $annee_html<BR>\n";
echo "<B>Auteur :</B> $auteur_prenom_html $auteur_nom_html<BR>\n";
echo "</P>\n";
}
mysql_free_result($result);
mysql_close($db_link);
?>
</BODY> </HTML> |
Exécuter ce script |
$query = "SELECT * FROM `A_livres` LEFT JOIN `auteurs` ON `A_livres`.`auteur`=`a_id`"; |
$query = "SELECT * FROM `A_livres` LEFT JOIN `auteurs` ON `A_livres`.`auteur`=`a_id`" . " WHERE `auteurs`.`nom` LIKE 'G%'"; |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD><TITLE>Affichage d'une sélection de livres (choix B)</TITLE></HEAD> <BODY> <?php
// Connexion à la base
include "connect.inc.php"; $db_link = connect();
// Requête SQL
$query = "SELECT"
. " `B_livres`.*,"
. " `a1`.`nom` AS `nom1`, `a1`.`prenom` AS `prenom1`,"
. " `a2`.`nom` AS `nom2`, `a2`.`prenom` AS `prenom2`,"
. " `a3`.`nom` AS `nom3`, `a3`.`prenom` AS `prenom3`"
. " FROM `B_livres`"
. " LEFT JOIN `auteurs` AS `a1` ON `B_livres`.`auteur1`=`a1`.`a_id`"
. " LEFT JOIN `auteurs` AS `a2` ON `B_livres`.`auteur2`=`a2`.`a_id`"
. " LEFT JOIN `auteurs` AS `a3` ON `B_livres`.`auteur3`=`a3`.`a_id`";
// Envoi requête SQL
$result = mysql_query($query,$db_link) or die(mysql_error());
// Affichage du résultat
while ($row = mysql_fetch_assoc($result)) {
$titre_html = htmlentities($row['titre']);
$annee_html = htmlentities($row['annee']);
$nom1_html = htmlentities($row['nom1']);
$prenom1_html = htmlentities($row['prenom1']);
$nom2_html = htmlentities($row['nom2']);
$prenom2_html = htmlentities($row['prenom2']);
$nom3_html = htmlentities($row['nom3']);
$prenom3_html = htmlentities($row['prenom3']);
echo "<P>\n";
echo "<B>Titre :</B> $titre_html<BR>\n";
echo "<B>Année :</B> $annee_html<BR>\n";
echo "<B>Auteur 1 :</B> $prenom1_html $nom1_html<BR>\n";
echo "<B>Auteur 2 :</B> $prenom2_html $nom2_html<BR>\n";
echo "<B>Auteur 3 :</B> $prenom3_html $nom3_html<BR>\n";
echo "</P>\n";
}
mysql_free_result($result);
mysql_close($db_link);
?>
</BODY> </HTML> |
Exécuter ce script |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD><TITLE>Affichage d'une sélection de livres (choix C)</TITLE></HEAD> <BODY> <?php
// Connexion à la base
include "connect.inc.php"; $db_link = connect();
// Requête SQL principale
$query = "SELECT * FROM `C_livres`";
// Envoi requête SQL principale
$result = mysql_query($query,$db_link) or die(mysql_error());
function afficherLesAuteursDuLivre($db_link,$l_id)
{
// Requête SQL secondaire (recherche les auteurs du livre
// dont l'identifiant est $l_id)
$query2 = "SELECT `auteurs`.* FROM `C_livres2auteurs`"
. " INNER JOIN `auteurs` USING (`a_id`)"
. " WHERE `C_livres2auteurs`.`l_id`='$l_id'";
// Envoi de la requête
$result = mysql_query($query2,$db_link) or die(mysql_error());
// Affichage des auteurs trouvés pour ce livre
echo "<B>Auteurs :</B> ";
$first = TRUE;
while ($row = mysql_fetch_assoc($result)) {
$nom_html = htmlentities($row['nom']);
$prenom_html = htmlentities($row['prenom']);
if (! $first)
echo ", ";
echo "$prenom_html $nom_html";
$first = FALSE;
}
echo "<BR>\n";
mysql_free_result($result);
return;
}
// Affichage du résultat
while ($row = mysql_fetch_assoc($result)) {
$titre_html = htmlentities($row['titre']);
$annee_html = htmlentities($row['annee']);
echo "<P>\n";
echo "<B>Titre :</B> $titre_html<BR>\n";
echo "<B>Année :</B> $annee_html<BR>\n";
afficherLesAuteursDuLivre($db_link,$row['l_id']);
echo "</P>\n";
}
mysql_free_result($result);
mysql_close($db_link);
?>
</BODY> </HTML> |
Exécuter ce script |
$query = "SELECT * FROM `C_livres`"; |
$query = "SELECT DISTINCT `C_livres`.*" . " FROM `C_livres`" . " LEFT JOIN `C_livres2auteurs` USING (`l_id`)" . " LEFT JOIN `auteurs` USING (`a_id`)" . " WHERE `auteurs`.`nom` LIKE '%e%'"; |
Page d'accueil de Hervé Pagès | Contact : herve.pages@free.fr |