Problème de recherche dans une table php

juju_blok -  
 juju_blok -
Bonjour,

Je suis documentaliste, et je commence à manipuler le PHP/MySql.
Je souhaiterai ajouter sur mon site la liste des livres disponibles, je l'ai donc ajouter à ma base de données.
Sur une page php contenant la liste des titres, j'ai ajouter un formulaire permettant la recherche dans ces titres.
Quand on écrit l'intégralité du titre, il me le trouve et me l'affiche sur une nouvelle page créer pour.
Or quand on écrit qu'une partie du titre, il n'affiche aucun résultat, ce qui est génant. Je souhaiterait donc modifier mon code php pour avoir la possiblité de trouver un livre meme si l'on écrit qu'une partie du titre.
Je vous remercie de votre compréhension.
Ci-joint mes 2 codes de recherches.

Code 1(recherche.php):

<link rel="stylesheet" media="screen" type="text/css" title="Design" href="recherche.css" />
<form action="recherche_post.php" method="post">
<p class="recherche"><input type="text" name="livre" id="livre" size="30" /> <input type="submit" value="Rechercher" class="bouton" />

Code 2(recherche_post.php):

<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=liste_de_livre', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM liste WHERE titre=\'' . $_POST['livre'] . '\'') or die(print_r($bdd->errorInfo()));
while ($donnees = $reponse->fetch())
{?>
<p>
<?php echo $donnees['titre']; ?>
<?php
}

$reponse->closeCursor();
?>

2 réponses

  1. TechAndCo Messages postés 254 Statut Membre 20
     
    Bonjour,

    Tu peux utiliser l'instruction "LIKE" pour recherche une chaîne de caractère en base de données.

    Fais une petite recherche sur google en tapant: "mysql LIKE".

    Cordialement.

    TechAndCo
    0
  2. juju_blok
     
    Merci à toi techAndCo
    Grace a toi, j'ai réussis a y arriver.

    Dans ma requète MySql, il suffisait de remplacer

    $reponse = $bdd->query('SELECT * FROM liste WHERE titre=\'' . $_POST['livre'] . '\'') or die(print_r($bdd->errorInfo()));

    par

    $reponse = $bdd->query("SELECT * FROM liste WHERE titre LIKE '%". $_POST['livre'] ."%'") or die(print_r($bdd->errorInfo()));
    0