le 08/06/2011 à 15:39
Problème script affichage base de données
Bonjour tout le monde,
J'ai une base de données mysql où sont enregistrées des références de livres (titre,auteur,éditeur,etc.). Pour afficher mes données à l'écran, j'ai fait un tableau, chaque colonne correspondant à un champ de la base de données. J'ai un formulaire html avec champs "titre","auteur","editeur","genre" où l'utilisateur peut entrer sa recherche soit par nom d'auteur, soit part titre, soit par éditeur, soit par genre. J'ai fait un script PHP avec les requêtes mysql pour sortir les données demandées par l'utilisateur. Or j'ai un petit souci : alors que je voudrais que toutes les données d'un même critère soient dans le même tableau, elles se mettent chacune dans des tableaux différents. Je m'explique : si par exemple l'utilisateur veut sortir tous les livres d'un même auteur, il remplit le champ "auteur". Et au lieu que tous les livres de cet auteur soient dans le même tableau, il y a un tableau par livre de cet auteur. Cela fait 2 jours que je planche là-dessus et que je triture mon code dans tous les sens, sans succès. Il n'y a pas de parse error, donc il ne s'agit pas d'une erreur de syntaxe. Mon code doit être faux, mais je ne vois pas où ; seul je n'y arrive pas .
Est-ce que quelqu'un aurait la gentillesse de regarder mon code php et me dire quelles corrections je dois apporter ?
Voici mon code :
C'est une partie du code ; j'ai ensuite un "if(isset($_POST)" par champ, puis à la fin je ferme la connexion au serveur mysql.
Je vous remercie d'avance pour l'aide apportée
J'ai une base de données mysql où sont enregistrées des références de livres (titre,auteur,éditeur,etc.). Pour afficher mes données à l'écran, j'ai fait un tableau, chaque colonne correspondant à un champ de la base de données. J'ai un formulaire html avec champs "titre","auteur","editeur","genre" où l'utilisateur peut entrer sa recherche soit par nom d'auteur, soit part titre, soit par éditeur, soit par genre. J'ai fait un script PHP avec les requêtes mysql pour sortir les données demandées par l'utilisateur. Or j'ai un petit souci : alors que je voudrais que toutes les données d'un même critère soient dans le même tableau, elles se mettent chacune dans des tableaux différents. Je m'explique : si par exemple l'utilisateur veut sortir tous les livres d'un même auteur, il remplit le champ "auteur". Et au lieu que tous les livres de cet auteur soient dans le même tableau, il y a un tableau par livre de cet auteur. Cela fait 2 jours que je planche là-dessus et que je triture mon code dans tous les sens, sans succès. Il n'y a pas de parse error, donc il ne s'agit pas d'une erreur de syntaxe. Mon code doit être faux, mais je ne vois pas où ; seul je n'y arrive pas .
Est-ce que quelqu'un aurait la gentillesse de regarder mon code php et me dire quelles corrections je dois apporter ?
Voici mon code :
<?php
/*Connexion au serveur :*/
$id_sql=mysql_connect("127.0.0.1","user","password") OR die ('Erreur de connexion'.mysql_error());
/*Connexion à la base de données "bibliotheque" :*/
$ok=mysql_select_db("bibliotheque",$id_sql) OR die ('Erreur de sélection'.mysql_error());
/*Si le champ "auteur" est rempli :*/
if(isset($_POST['auteur']))
{
$sql='SELECT * FROM livres WHERE auteur="'.$_POST['auteur'].'"';
$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($tableau=mysql_fetch_array($req))
{
echo '<body bgcolor="#ffeecc"><br><br>
<h2><center>Auteur demandé : <i>'.$_POST['auteur'].'</i></center></h2>
<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center">
<tr>
<th width="500">Titre</th>
<th width="500">Auteur</th>
<th width="500">Editeur</th>
<th width="150">Genre</th>
<th width="500">Résumé</th>
</tr>
<tr>
<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
<td align="center" style="font-size:11pt; font-weight:bold">'.$_POST['auteur'].'</td>
<td align="center" style="font-size:11pt; font-weight:normal"> '.$tableau['editeur'].'</td>
<td align="center" style="font-size:11pt; font-weight:normal"> '.$tableau['genre'].$tableau['autre_genre'].'</td>
<td align="justify" style="font-size:11pt; font-weight:normal"> '.$tableau['resume'].'</td>
</tr>
</table>';
}
}
C'est une partie du code ; j'ai ensuite un "if(isset($_POST)" par champ, puis à la fin je ferme la connexion au serveur mysql.
Je vous remercie d'avance pour l'aide apportée