Script de recherche dans une base de données
Posté : 08 févr. 2007, 16:51
Salut j'expose mon problème en fait je veux faire une sorte de mini moteur de recherche pour les armes d'un jeu et là je tombe sur un os.
L'utilisateur rentre les caractéristiques de l'arme qui lui sont proposé dans une page:

et la seconde page reçois les infos puis va afficher les pnjs proposant l'objet avec les caractéristiques choisie. Et c'est là que je bloque puisque la page qui reçois les données doit rechercher les données dans la base de données selon plein de condition comme:
chapitre et arme et energie ...
j'ai alors pensé a ça comme requete mysql:
Pour ça si vous avez des idées ou une solution faite moi signe
L'utilisateur rentre les caractéristiques de l'arme qui lui sont proposé dans une page:

et la seconde page reçois les infos puis va afficher les pnjs proposant l'objet avec les caractéristiques choisie. Et c'est là que je bloque puisque la page qui reçois les données doit rechercher les données dans la base de données selon plein de condition comme:
chapitre et arme et energie ...
j'ai alors pensé a ça comme requete mysql:
$requete="SELECT * FROM collectionneur WHERE";
if($chapitre!='ND'){ $requete.= "`chapitre` LIKE '%$chapitre%'"; }
if($arme!='ND' AND $chapitre!='ND'){ $requete.= "AND"; }
if($arme!='ND'){ $requete.= "`arme` LIKE '%$arme%'"; }
if($energie!='ND' AND $chapitre!='ND' OR $energie!='ND' AND $arme!='ND' ){ $requete.= "AND"; }
if($energie!='ND'){ $requete.= "`energie` LIKE '%$energie%'"; }
if($classe!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $req!='ND' OR $deg!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($classe!='ND'){ $requete.= "`classe` LIKE '%$classe%'"; }
if($req!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $deg!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($req!='ND'){ $requete.= "`req` LIKE '%$req%'"; }
if($deg!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($deg!='ND'){ $requete.= "`deg` LIKE '%$deg%'"; }
if($bonus1!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $deg!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($bonus1!='ND'){ $requete.= "`bonus1` LIKE '%$bonus1%'"; }
if($bonus2!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $deg!='ND'OR $bonus1!='ND' ){ $requete.= "AND"; }
if($bonus2!='ND'){ $requete.= "`bonus2` LIKE '%$bonus2%'"; }
$requete .= " ORDER BY 'chapitre' ";
mysql_connect("localhost", "root", "");
mysql_select_db("rex");
$reponse=mysql_query($requete) OR die (mysql_error());
$requete="SELECT * FROM collectionneur WHERE";
if($chapitre!='ND'){ $requete.= "`chapitre` LIKE '%$chapitre%'"; }
if($arme!='ND' AND $chapitre!='ND'){ $requete.= "AND"; }
if($arme!='ND'){ $requete.= "`arme` LIKE '%$arme%'"; }
if($energie!='ND' AND $chapitre!='ND' OR $energie!='ND' AND $arme!='ND' ){ $requete.= "AND"; }
if($energie!='ND'){ $requete.= "`energie` LIKE '%$energie%'"; }
if($classe!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $req!='ND' OR $deg!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($classe!='ND'){ $requete.= "`classe` LIKE '%$classe%'"; }
if($req!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $deg!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($req!='ND'){ $requete.= "`req` LIKE '%$req%'"; }
if($deg!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $bonus1!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($deg!='ND'){ $requete.= "`deg` LIKE '%$deg%'"; }
if($bonus1!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $deg!='ND'OR $bonus2!='ND' ){ $requete.= "AND"; }
if($bonus1!='ND'){ $requete.= "`bonus1` LIKE '%$bonus1%'"; }
if($bonus2!='ND' AND $chapitre!='ND' OR $arme!='ND' OR $energie!='ND' OR $classe!='ND' OR $req!='ND' OR $deg!='ND'OR $bonus1!='ND' ){ $requete.= "AND"; }
if($bonus2!='ND'){ $requete.= "`bonus2` LIKE '%$bonus2%'"; }
$requete .= " ORDER BY 'name' ";
$reponseb=mysql_query($requete) OR die (mysql_error());
mysql_close(); //deco de la base de donnée
mais sa ne marche pas. Pour ça si vous avez des idées ou une solution faite moi signe