Bonjour,

Voila je rencontre un petit problème avec mon code.

j'ai une bibliothèque dans laquelle je fais des recherches de livre par l'auteur, la recherche marche quand il s'agit d'un seul auteur. mais je veux pouvoir afficher tout les livre du même auteur et aussi les livres qu'il a écrit avec d'autre auteur.dans ma BD j'ai séparé le nom des auteurs en collaboration par "/" exemple pierre Dupont/francois mercier. conc si j'entre pierre dupont je veux avoir tout ses livres personnel et ceux kil a ecrit avec francois.

voici la requete que je fais:

if(isset($_POST['auteur']) AND $_POST['auteur']!==""){

$req = $bdd->prepare('SELECT idlivre,titre,auteur,editeur,edition,code_barre,iddomaine,num_identifiant FROM livres WHERE auteur =:auteur');

$req->execute(array("auteur" =>$_POST['auteur']));

merci d'avance à vous

13 réponses


Peux tu nous donner la structure de ta base de données stp ?

if(isset($_POST['auteur']) AND $_POST['auteur']!==""){

    $req = $bdd->prepare('SELECT idlivre,titre,auteur,editeur,edition,code_barre,iddomaine,num_identifiant FROM livres WHERE auteur LIKE :auteur');
    $req->execute(array("auteur" => '%'.$_POST['auteur'].'%' ));

Par contre il aurait été plus 'logique' de faire une table livres, une table auteurs, et une table de correspondance livres_auteurs

structure de ma BD : idlivre; titre; auteur; editeur; edition; code_barre; domaine

merci Byflo j'ai test ta solution mais je n'ai pas de resultat

Bizarre, est-ce que la requête suivante fonctionne :

SELECT idlivre,titre,auteur,editeur,edition,code_barre,iddomaine,num_identifiant FROM livres WHERE auteur LIKE '%pierre dupont%'

oui il fonctionne mais je veux que cela soit standard

Si la dernière requête fonctionne, le permier code devrait fonctionner ... as-tu une erreur ? que te donnes un var_dump du résultat ? dis m'en plus ...

byflo merci pour ton aide
ce que je veux c'est qu'il m'affiche tout les livres de pierre meme si le nom de l'auteur est pierre marie/dupont en tapant seulement que pierre dans la recherche

Oui j'ai bien compris, et le premier code envoyé est fait pour ça, il recherche tous les livres dont le champs auteur contient la chaine de caractère que tu recherches, qu'elle soit au début du champs, au milieu, ou à la fin (on entoure ta recherche du caractère % qui est le caractère passe partout de mysql)

Si tu lances la requete ci-dessous dans phpMyAdmin (par exemple), est-ce que les résultats sont bien ceux que tu attends :

SELECT idlivre,titre,auteur,editeur,edition,code_barre,iddomaine,num_identifiant FROM livres WHERE auteur LIKE '%pierre%'

byflo dans phpadmin cela donne les resultat que j'attends mais comment faire pour ne pas que ca soit forcement pierre puis que je taper different nom

Byflo merci pour ton aide j'ai resolu le probleme et c'est grace a tes pistes

Cool ! n'hésite pas à publier le code qui résoud ton problème, ça peut en aider d'autres, et à passer le sujet comme résolu ! Bonne continuation !

   if(isset($_POST['auteur']) AND $_POST['auteur']!==""){
      $auteur=$_POST['auteur'];
$req = $bdd->prepare("SELECT idlivre,titre,auteur,editeur,edition,code_barre,iddomaine,num_identifiant FROM livres WHERE auteur LIKE '%$auteur%' ");
   $req->execute(array("auteur" =>$_POST['auteur']));

   while($info = $req ->fetch())
   {  
   ?>