Problème de recherche dans une table php
                                    
                        juju_blok                    
                                    -
                                     
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();
?>
            
            
                
            
                
    
    
    
        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();
?>
        A voir également:         
- Problème de recherche dans une table php
- Table ascii - Guide
- Table des matières word - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Je recherche une chanson - Guide
2 réponses
                        
                    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
    
                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
                        
                    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()));
    
                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()));
