Page 1 sur 3
Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 11:53
par Sabrina tech
Bonjour, je suis débutante en PHP, et j'ai un problem :
je suis entrain de créer un site d'une bibliothéque, j'ai une base de données qui contient une table livres, j'ai réussi à afficher dans une page, le titre et l'auteur de touts les livres contenu dans ma table, mon problem est le suivant :
j'ai le mot
détail dont je veux l'utiliser comme un lien pour afficher tous les données et les champs qui existaient dans ma tables selon le titre du livre.
Remarque :
j'ai fais une tentative et j'ai réussis à afficher les détails de
tous les livres.

mais malheureusement c faux car je dois afficher juste les détails d'un seul livre.
S'il vous plais essayer de m'aider car c trés urgent
Merci à vous.
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 12:21
par epommate2
Quelle est la requete SQL que tu utilises ?
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:05
par Sabrina tech
Je te transmet mon code d'affichage des livres, merci bien de me répondre
<?php
// on prpare une requte permettant de calculer le nombre total d'lments qu'il faudra afficher sur nos diffrentes pages
$sql = 'SELECT count(*) FROM Livres';
// on excute cette requte
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on rcupre le nombre d'lments afficher
$nb_total = mysql_fetch_array($resultat);
// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune rponse trouve';
}
else {
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas dj t dclare, et dans ce cas, on l'initialise 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 10;
// Prparation de la requte avec le LIMIT
$sql = 'SELECT Titre, Auteur, Cote, image FROM Livres ORDER BY titre ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
// on excute la requte
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on va scanner tous les tuples un par un
//while ($data = mysql_fetch_array($req))
while ($data = mysql_fetch_assoc($req))
{
//http://forum.phpfrance.com/sql-bases-donnees/lien-qui-lancent-sur-une-page-ordre-t1100.html
$titre = $data["Titre"];
// on affiches les rsultats dans la <table>
echo '<tr><td><td><p align="justify"><span class="header_01 Style4">' , htmlentities(trim($data['Titre'])) , ' </span></p></td></tr>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2"></span></p></blockquote></td>';
$img=$data['image']; ?>
<img src="images livres/<?php echo $img; ?>" hspace="2" vspace="2" align="right" />
<?php
echo '<table><td><td><blockquote><p><span class="header_01 Style2"></span></p></blockquote></td>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2"></span></p></blockquote></td>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2">Auteur</span></p></blockquote></td>';
echo '<td><td><blockquote><p Style4><strong >' , htmlentities(trim($data['Auteur'])) , '</strong></p></blockquote></td>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2">Cote</span></p></blockquote></td>';
echo '<td><td><blockquote><p Style4><strong > ' , htmlentities(trim($data['Cote'])) , ' </strong></p></blockquote></td>';
echo '<table><tr><td><td><blockquote><p><span class="header_01 Style2"><a href="L selon titre.php?titre=$titre">Detail...</a></span></p></blockquote></td></tr>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2"></span></p></blockquote></td>';
echo '<table><td><td><blockquote><p><span class="header_01 Style2"></span></p></blockquote></td>';
}
// on libre l'espace mmoire allou pour cette requte
mysql_free_result ($req);
echo '</table><br />';
// on affiche enfin notre barre
echo '<span class="gras" >'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
// on libre l'espace mmoire allou pour cette requte
mysql_free_result ($resultat);
// on ferme la connexion la base de donnes.
echo '</table><br />';
?>
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:19
par Sabrina tech
et voici le code de l'affichage des détails du livre
Remarque : ceci affiche les détails d'un seul livre mais tjrs le premier livre de la table donc ca marche pas
<?php
//Reception de l'id d'un livre selectionné
$titre = isset($_GET["titre"]) ? $_GET["titre"] : null;
if ($titre != ""){
//Chercher le livre du titre choisi
$sql ="SELECT * FROM livre WHERE titre = $titre ";
//connecter au serveur mysql
$host="localhost";
$login="root";
$pass="";
$bd="biblio";
$link= mysql_connect($host,$login,$pass) or exit(mysql_error());
$datab = mysql_select_db($bd, $link) or exit(mysql_error());
$requet="SELECT * FROM livres ";
$resultt = mysql_query($requet) or exit(mysql_error().'Echec');
// Préparation de la requête avec le LIMIT
$sql = 'SELECT Titre, Auteur, Cote, Image FROM Livres ';
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
?>
<?php
//http://forum.phpfrance.com/sql-bases-donnees/lien-qui-lancent-sur-une-page-ordre-t1100.html
if (mysql_num_rows($resultt) <= 0) echo "Aucun livre!";
else
{
//lire le resultat qui ne contient qu'une ligne (pas besoin de boucle while)
$data = mysql_fetch_assoc($resultt);
$titre = $data["Titre"];
//while( $data = mysql_fetch_assoc($resultt))
// {
$img=$data['Image']; ?>
<div align="center" <img src="images livres/<?php echo $img; ?>" widht="335" height="364" align="top"/> </div>
<p> </p>
<p align="center"> </p>
<p align="center"><span class="header_01 Style1"><?php echo $data['Titre']; ?> </span></p>
<p> </p>
<p> </p>
<div class="header_01"></div>
<p><span class="Style2"><span class="Style3"><strong>Auteur</strong>: <?php echo $data['Auteur']; ?> </span></span></p>
<p class="Style3"><span class="Style2"><strong>Editeur</strong> : <?php echo $data['Maison d edition']; ?></span></p>
<p class="Style2"><strong>Annee :</strong> <?php echo $data['Date d edition']; ?> </p>
<p class="Style2"> <strong>ISBN : </strong>: <?php echo $data['ISBN']; ?></p>
<p class="Style2"><strong>Cote</strong>: <?php echo $data['Cote']; ?></p>
<P align="justify" class="Style2"> <strong>Resume</strong> : <?php echo $data['Resume']; ?></p>
<?php
}
}
?>
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:24
par xTG
// Préparation de la requête avec le LIMIT
$sql = 'SELECT Titre, Auteur, Cote, Image FROM Livres ';
Ce code là n'est pas nécessaire, tu formes déjà la requêtes quelques lignes plus haut.

De là vient ton soucis, car cette requête écrase l'autre, et surtout elle récupère tous les livres.
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:36
par Sabrina tech
Merci bien, je l'ai enlevé mais rien n'as changé elle m'affiche tjrs le meme livres c le premier de la liste des livres.
Veulliez me répondre please et merci pour votre attention
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:40
par xTG
Il y a une seconde requête qui n'a pas lieu d'être du même genre :
$requet="SELECT * FROM livres ";
$requet devrait être la requête définie plus haut par $sql
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 13:45
par Sabrina tech
tjrs non
rine n'a changé si vous avez une autre idée ou autre code pour m'aider à afficher ces détails du livres sélectionné. veuillez m'aider
Merci
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:09
par epommate2
Quel bazare ....
Ne faut-il pas mettre des quote autour de titre ?
$sql ="SELECT * FROM livre WHERE titre = '$titre' ";
Pourquoi ne pas executer tous de suite cette requête et afficher le résultat ?
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:17
par Sabrina tech
Ok et elle m'affiche tjrs aucun livre
car je pense qu'il me manque un Get en principe nn ? mais je sais pas comment je dos l'ajouter et où ?
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:18
par Mazarini
Bonjour,
Je pense que ca marche à quelques erreurs près :
<?php
//Reception de l'id d'un livre selectionné
$titre = isset($_GET["titre"]) ? $_GET["titre"] : "";
if ($titre = ""){
echo "Pas de livre sélectionné";
exit;
}
//connecter au serveur mysql
$host="localhost";
$login="root";
$pass="";
$bd="biblio";
$link= mysql_connect($host,$login,$pass) or exit(mysql_error());
$datab = mysql_select_db($bd, $link) or exit(mysql_error());
//Chercher le livre du titre choisi
$sql ="SELECT * FROM livre WHERE titre = '$titre' ";
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
if (mysql_num_rows($req) <= 0) {
echo "Aucun livre!";
exit;
}
//lire le resultat qui ne contient qu'une ligne (pas besoin de boucle while)
$data = mysql_fetch_assoc($req);
$titre = $data["Titre"];
$img=$data['Image'];
?>
<div align="center" <img src="images livres/<?php echo $img; ?>" widht="335" height="364" align="top"/> </div>
<p> </p>
<p align="center"> </p>
<p align="center"><span class="header_01 Style1"><?php echo $data['Titre']; ?> </span></p>
<p> </p>
<p> </p>
<div class="header_01"></div>
<p><span class="Style2"><span class="Style3"><strong>Auteur</strong>: <?php echo $data['Auteur']; ?> </span></span></p>
<p class="Style3"><span class="Style2"><strong>Editeur</strong> : <?php echo $data['Maison d edition']; ?></span></p>
<p class="Style2"><strong>Annee :</strong> <?php echo $data['Date d edition']; ?> </p>
<p class="Style2"> <strong>ISBN : </strong>: <?php echo $data['ISBN']; ?></p>
<p class="Style2"><strong>Cote</strong>: <?php echo $data['Cote']; ?></p>
<P align="justify" class="Style2"> <strong>Resume</strong> : <?php echo $data['Resume']; ?></p>
Edit : corrections de quelques erreurs....
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:28
par Sabrina tech
malheureusement aussi meme affichage avec qqs d'autres erreurs mais ca ne m'affiche que meme livres mais pas le livres selectionné
Que ce que je dois faire ?????
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:31
par Sabrina tech
Merci encore,
Vous avez tous les données de ma base et vous connaissez le but de mon programme, donc si vous avez d'autres idées à résoudre ce problème, ou un autre programme qui affiche ceci merci de m'aider
J'attends avec impatience
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:45
par Mazarini
re^^
Quelques remarques sur ton PHP :
- Tu peux par exemple faire une fonction pour te connecter à la base de données et tu l'utiliseras dans tes 2 scripts
- Tu peux faire une fonction pour la lecture du livre dans la table et une autre pour l'affichage ca donnera un code du genre :
<?PHP
if (isset($_get['titre'])
{
$titre = $_get['titre']
}
else
{
echo "titre non renseigné";
exit
}
connection_base();
$data = lecture_par_titre($titre);
if (!data)
{
echo "titre inconnu";
exit
}
affichage_un_livre($data)
?>
et tu mets dans un autre fichier (ou plusieurs) les fonctions connection_base(),lecture_par_titre($titre) et affichage_un_livre($data)
Au passage $sql ="SELECT * FROM livre WHERE titre = '$titre' " n'est pas bon car ca ne marchera pas lorsqu'il y a une quote dans le titre. Il faut utiliser $titre = mysql_real_escape_string($titre); avant. Il me semble qu'utiliser le code IBSN serait mieux pour identifier le livre que le titre.
Re: Afficher les détail d'un livre selon son nom
Posté : 17 déc. 2010, 14:55
par Mazarini
J'ai fait des corrections dans le script (2 ou 3 erreurs, je suis loin d'être parfait), tu a essayé avec la dernière version ?
Normalement, tu vois l'url du genre :
http://localhost/xxxxxxxxx.php?titre=azerty
Est ce que le titre affiché est le bon ?
Eventuellement ajoute phpinfo(): en début de script et recherche le titre dans la page, tu auras la bonne variable à utiliser (je mélange souvent $_GET et $_POST