Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1559 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PHP - SQL] Recherche dans un catalogue via thème ou mot-clé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP - SQL] Recherche dans un catalogue via thème ou mot-clé

n°1101886
Onesque
Derelict Otter
Posté le 30-05-2005 à 16:08:00  profilanswer
 

Bonjour,
 
Voici mon problème. J'essaie de construire un catalogue de livres à partir d'une base de données MySQL. J'aimerais que l'on puisse effectuer une recherche dans ce catalogue via deux critères : le thème du livre (accessible par un menu déroulant) ou un champ de saisie dans lequel on peut rentrer un titre. Par défaut mon menu déroulant affiche la première catégorie de la liste (récupérée ds ma table sql). Je passe donc par un formulaire, configuré en GET.
 
Ma requête ne fonctionne que partiellement : si on sélectionne un thème, on a bien les ouvrages correspondants qui s'affichent. Mais je voudrais que lorsqu'on saisit un mot clé, le thème ne soit plus pris en compte.  
 
Je ne suis pas sûr d'avoir été très clair. Voici donc mon code, peut-être y verrez-vous plus clair et pourrez-vous ainsi m'aider :)
 
Je précise également que je débute, alors soyez indulgent et aiguillez-moi plutôt que me rentrer ds le lard si je suis passé à côté d'un truc évident! Merci :D
 

Code :
  1. <?php
  2. include("../connexion.php" );
  3. //déclaration des variables d'URL
  4. if(isset($_GET['titre']))
  5. $titre=$_GET['titre'];
  6. else $titre="";
  7. if(isset($_GET['rubriqueID']))
  8. $rubriqueID=$_GET['rubriqueID'];
  9. else $rubriqueID="";
  10. //requête de récup des résultats
  11. $catalogue = mysql_query("SELECT * FROM articles WHERE titre='$titre' OR rubriqueID='$rubriqueID'" );
  12. ?>
  13. <body>
  14. <div id="contenu">
  15.   <p>Catalogue client : </p>
  16.   <p><form action="catalogue.php" method="get">
  17. Choisissez un thème <select name="rubriqueID">
  18. <?php
  19. $result = mysql_query("SELECT * FROM rubriques" );
  20. while ($val = mysql_fetch_array($result)) { ?>
  21.       <option value="<? echo $val["0"]; ?>"><? echo $val["1"]; ?></option>
  22.    <? }
  23.    ?>
  24. </select>
  25.   ou saisissez un titre
  26.     <input type="text" name="titre" />
  27.     <input type="submit" name="Submit" value="Afficher" />
  28.   </form></p>
  29. <p>
  30. <?php
  31. //on essaie d'afficher les résultats
  32. while ($catalogue1 = mysql_fetch_array($catalogue))
  33. {
  34. echo $catalogue1['titre'];
  35. ?>
  36. </p>
  37. <?php
  38. }
  39. //mysql_close();
  40. ?>
  41. </body>


Message édité par Onesque le 30-05-2005 à 16:08:39
mood
Publicité
Posté le 30-05-2005 à 16:08:00  profilanswer
 

n°1101907
denzz
huhuuuuu ! (désolé )
Posté le 30-05-2005 à 16:29:16  profilanswer
 

essaye plutôt ca :  

Code :
  1. <?php
  2. include("../connexion.php" );
  3. //déclaration des variables d'URL
  4. if(isset($_GET['titre']))
  5. $requete = "SELECT * FROM articles WHERE titre='$titre'";
  6. else if(isset($_GET['rubriqueID']))
  7. $requete = "SELECT * FROM articles WHERE rubriqueID='$rubriqueID'"
  8. //requête de récup des résultats
  9. $catalogue = mysql_query($requete);
  10. /** la suite ... */


 
plutot que de changer le contenu de tes variables en fonction de tes tests pour n'avoir ensuite qu'une seule requête, il vaut mieux construire ta requête en fonction des résultats de tes tests ...
en général en php c plus comme ca que ca fonctionne, sauf quand tu peux vraiment faire une requête générique ...

n°1101970
Onesque
Derelict Otter
Posté le 30-05-2005 à 17:36:32  profilanswer
 

Il m'était pas vraiment venu à l'idée d'adapter la requête en fonction du moyen de sélection choisi :D
 
J'ai dû ajouter un champ vide à mon menu déroulant pour que par défaut ce ne soit pas le premier des thèmes qui soit choisi et maintenant ça fonctionne!
 
Merci pour le coup de pouce, denzz!
 
Maintenant, je vais m'atteler à la recherche sur le titre, pour que si on ne saisit qu'un mot, ou qu'une partie du titre, ca marche quand même.
 
L

n°1101991
Onesque
Derelict Otter
Posté le 30-05-2005 à 18:01:09  profilanswer
 

Bon, ça au moins, ça n'aura pas posé trop de pb : LIKE %'$titre'%
 
Des fois, ça parait simple, et d'autres fois... moins :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PHP - SQL] Recherche dans un catalogue via thème ou mot-clé

 

Sujets relatifs
PHP grignoté par dotNet ?[PHP]Contourner un proxy
Recherche un créateur de Theme XOOPS ![RESOLU] [PHP] Utilisation de 2 BDD dans la meme page
Recherche des machines ayant un logiciel client sur le réseau ... ?error in your SQL syntax
[SQL Server] aide pour faire une requète avec un MAX()Inserer un tableau dans WORD sous PHP via objet COM
[PHP]Recuperer un fichier via son url 
Plus de sujets relatifs à : [PHP - SQL] Recherche dans un catalogue via thème ou mot-clé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR