Page 1 sur 1

Probleme pour fx recherche dans ma bdd

Posté : 18 juil. 2012, 10:40
par lebossu41
salut les amis,

je ne comprends pas pourquoi on script ne fonctionne pas, meme pas un message d'erreur nada! Dans un input, je veux saisir le début du nom et j'aimerais qu'une liste apparaisse


if (isset($_POST['btnsearch']))
{
if(!empty($_POST['searchclient']))
{
$pdo_options [PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO ('mysql:host=localhost;dbname=projet', 'root', '', $pdo_options);
$reponse= $bdd->query('SELECT * from clients where Nom = "'.$_POST['searchclient'].'"');
while($donnees=$reponse->fetch())
{
echo ''.$donnees['Nom'].' '.$donnees['Prenom'].' '.$donnees['Adresse'].' '.$donnees['CP'].'';
}

}

else {echo '<script language="Javascript">
alert ("SAISIE VIDE");
</script>';
}
}
?>

Re: Probleme pour fx recherche dans ma bdd

Posté : 18 juil. 2012, 15:01
par xTG
L'opérateur d'égalité recherche une égalité au sens stricte du terme.
Donc en ne tapant que le début tu risques pas d'inventer la fin...

Regardes plutôt du côté de l'opérateur LIKE en SQL. ;)

Re: Probleme pour fx recherche dans ma bdd

Posté : 18 juil. 2012, 17:01
par dix2
salut,

en SQL, il est préférable d'utiliser les simples quotes pour les valeurs de type string plutôt que les doubles quotes
et pour les noms de bases, tables et champs, il faut utiliser les quotes inversées (Alt Gr + 7)

ce qui donne :
$reponse = $bdd->query("SELECT * FROM `clients` WHERE `Nom` = '".$_POST['searchclient']."'");

ou comme le préconise xTG, avec l'opérateur LIKE :
$reponse = $bdd->query("SELECT * FROM `clients` WHERE `Nom` LIKE '".$_POST['searchclient']."%'");

@+
dix2

Re: Probleme pour fx recherche dans ma bdd

Posté : 18 juil. 2012, 21:12
par xTG
A noter que les ` pour la protection des champs ce n'est pas une norme SQL mais bel et bien spécifique à MySQL. ;)