moteur de recherche, case à cocher

moteur de recherche, case à cocher - PHP - Programmation

Marsh Posté le 08-08-2008 à 17:04:07    

Bonjour à tous,
 
Alors voilà j'expose mon problème,
 
Je voudrais un moteur de recherche interne par case à cocher,
Là j'ai + ou - pas de problème car il va bien chercher dans les différents champs si plusieurs case on été cochées.
 
Mais dans mon exemple qui va suivre sa ne fais pas ce que je voudrais,
 
Si je coche la case 176*220 et la case fr
je voulais que sa m'affiche les résultats en français et d'une résolution uniquement de 176*220 mais il m'affiche rien, même pas le message d'erreur si il n'y aurais eu aucun résultats.
 
Voilà le code que j'ai pour l'instant
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3. <head>
  4. <title></title>
  5. <link href="style.css" rel="stylesheet" type="text/css">
  6. <div id="all">
  7. <div id="banniere">
  8. <div id="pub">
  9. <script type="text/javascript"><!--
  10. google_ad_client = "pub-8258802225837101";
  11. google_ad_width = 468;
  12. google_ad_height = 60;
  13. google_ad_format = "468x60_as";
  14. google_ad_type = "text_image";
  15. google_ad_channel = "";
  16. google_color_border = "FFFFFF";
  17. google_color_bg = "FFFFFF";
  18. google_color_link = "008000";
  19. google_color_text = "000000";
  20. google_color_url = "008000";
  21. //-->
  22. </script>
  23. <script type="text/javascript"
  24. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  25. </script>
  26. </div>
  27. </div>
  28. <div id="luigi">
  29. </div>
  30. <div id="menu">
  31. </div>
  32. <div id="contenu">
  33.  <ul id="menu_horizontal">
  34.     <div id="menuitem">
  35.    <li class="bouton_gauche"><a href='index.php'>Accueil</a>
  36.   </li>
  37.    <li class="bouton_gauche">
  38.    <a href='http://zone-mobiles.leforum.eu/'>Forum</a>
  39.   </li>
  40.    <li class="bouton_gauche">
  41.    <a href='jeux.php'>Téléchargements</a>
  42.   </li>
  43.   <li class="bouton_droit">
  44.    <a href='rechercher.php'>Recherche</a>
  45.   </li>
  46.    <li class="bouton_droit">
  47.    <a href='inscription.php'>Inscription</a>
  48.   </li>
  49.  </div></ul>
  50. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  51. <script type="text/javascript">
  52. var page_courante=1;
  53. var nb_pages=1;
  54. function pagePrecedente() {
  55.    if (page_courante==1) {
  56.       alert("Vous êtes déjà sur la première page !" );
  57.    } else {
  58.       affichePage(page_courante-1);
  59.    }
  60. }
  61. function pageSuivante() {
  62.    if (page_courante==nbpages) {
  63.       alert("Vous êtes déjà sur la dernière page !" );
  64.    } else {
  65.       affichePage(page_courante+1);
  66.    }
  67. }
  68. function affichePage (page){
  69.    document.getElementById("page"+page_courante).style.display = "none";
  70.    document.getElementById("lienpage"+page_courante).style.fontWeight = "normal";
  71.    document.getElementById("page"+page).style.display = "block";
  72.    document.getElementById("lienpage"+page).style.fontWeight = "bold";
  73.    page_courante=page;
  74. }
  75. </script>
  76. </head>
  77. <body>
  78. <div id="main">
  79. <?php
  80. if(isset($_POST['requete' and 'requetelangue']) && $_POST['requete' or 'requetelangue'] != NULL)
  81. {
  82. mysql_connect('sql.olympe-network.com','essaye12','*****');
  83. mysql_select_db('essaye12');
  84. $requete = htmlspecialchars($_POST['requete']);
  85. $requetelangue = htmlspecialchars($_POST['requetelangue']);
  86. $query = mysql_query("SELECT * FROM jeux WHERE taille LIKE '%$requete%' AND type LIKE '%$requetelangue%" ) or die (mysql_error());
  87. $nb_resultats = mysql_num_rows($query);
  88. if($nb_resultats != 0)
  89. {
  90. ?>
  91. <h3>Résultats de votre recherche.</h3>
  92. <p>Nous avons trouvé <?php echo $nb_resultats;
  93. if($nb_resultats > 1) { echo 'résultats'; } else { echo 'résultat'; }
  94. ?>
  95. dans notre base de données. Voici les fonctions que nous avons trouvé :<br/>
  96. <br/>
  97. <?php
  98. while($donnees = mysql_fetch_array($query))
  99. {
  100. ?>
  101. <a href="fonction.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['taille']; ?></a><br/>
  102. <?php
  103. }
  104. ?><br/>
  105. <br/>
  106. <a href="rechercher.php">Faire une nouvelle recherche</a></p>
  107. <?php
  108. }
  109. else
  110. {
  111. ?>
  112. <h3>Pas de résultats</h3>
  113. <p>Nous n'avons trouvé aucun résultats pour votre requête "<?php echo $_POST['requete']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
  114. <?php
  115. }
  116. mysql_close();
  117. }
  118. else
  119. {
  120. ?><div id="recherche">
  121. <p>recherche</p>
  122. <form action="rechercher.php" method="Post">
  123. <input type="checkbox" value="320*240" name="requete" /> 320*240
  124. <input type="checkbox" value="220*176" name="requete" /> 176*220
  125. <input type="checkbox" value="fr" name="requetelangue" /> fr
  126. <input type="submit" value="Ok">
  127. </form></div>
  128. <?php
  129. }
  130. ?>


 
le système qui ne fonctionne pas est à cette adresse http://essaye12.olympe-network.com/rechercher.php
 
 Voilà, si j'ai pas été assez complet ou clair dites le.


Message édité par godmax le 08-08-2008 à 17:05:34
Reply

Marsh Posté le 08-08-2008 à 17:04:07   

Reply

Marsh Posté le 09-08-2008 à 12:00:10    

c'est quoi ça :  

Citation :


(isset($_POST['requete' and 'requetelangue'])


[:le kneu]
 
essaie plutôt

Code :
  1. if ((isset($_POST['requete'])) && (isset($_POST['requetelangue'])))
  2. {
  3. ...
  4. }


 
EDIT : pour tester qu'ils ne soient pas nuls non plus :

Code :
  1. $requete = (isset($_POST['requete'])) ? $_POST['requete'] : '';
  2. $reqlangue = (isset($_POST['requetelangue'])) ? $_POST['requetelangue'] : '';
  3. if (($requete != '') && ($reqlangue != ''))
  4. {
  5. ...
  6. }


 
Et c'est aussi là que tu dois penser à sécuriser tes rentrées ...
par exemple,  
$requete = (isset($_POST['requete'])) ? trim(sprintf("%s", $_POST['requete'])) : '';

Message cité 1 fois
Message édité par NewsletTux le 09-08-2008 à 12:03:39

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 09-08-2008 à 13:49:36    

NewsletTux a écrit :

c'est quoi ça :  
 
EDIT : pour tester qu'ils ne soient pas nuls non plus :

Code :
  1. $requete = (isset($_POST['requete'])) ? $_POST['requete'] : '';
  2. $reqlangue = (isset($_POST['requetelangue'])) ? $_POST['requetelangue'] : '';
  3. if (($requete != '') && ($reqlangue != ''))
  4. {
  5. ...
  6. }


 
Et c'est aussi là que tu dois penser à sécuriser tes rentrées ...
par exemple,  
$requete = (isset($_POST['requete'])) ? trim(sprintf("%s", $_POST['requete'])) : '';


 
 
 
 [:noxauror]  

Code :
  1. <?php
  2. $requ=trim($_POST['requete']);
  3. $reql=trim($_POST['requetelangue']);
  4. if(!empty($requ) && !empty($reql))
  5. {
  6.    //...
  7. }
  8. ?>


 [:doc petrus]  

Reply

Marsh Posté le 09-08-2008 à 19:19:02    

merci je venais juste voir si on m'avais répondu car j'ai du monde cher moi.  
Par contre, y a des trucs que j'ai jamais vu dans ce que vous me donner,  
qu-est ce que trim sprintf et le ? juste avant.
J'ai juste lu le début d'un tutos sur le C avec les printf et scanf, sa a avoir avec sa ?
 
merci d'avance.

Reply

Marsh Posté le 09-08-2008 à 19:28:29    

Non, ça à voir avec ça http://www.php.net/sprintf
le ! devant signifie (comme en C) "le contraire boolean" :
 
!true => false

Reply

Marsh Posté le 09-08-2008 à 19:30:44    

trim permet de supprimer les caractères blancs en début de la chaîne passée en paramètre. sprintf permet d'éviter d'écrasé la variable $_POST['requete'] par le résultat de trim (pour garder l'origine).
Le point d'interrogation signifie qu'il s'agit ici d'une équation ternaire.
 
TRIM => http://fr.php.net/trim
SPRINTF => http://fr.php.net/sprintf
CONDITION TERNAIRE => http://fr3.php.net/operators.comparison à opérateur ternaire

Reply

Marsh Posté le 09-08-2008 à 19:32:30    

esox_ch a écrit :


le ! devant signifie (comme en C) "le contraire boolean" :
 
!true => false


 
C'est pô ce qu'il a demandé  :sleep:  

Reply

Marsh Posté le 09-08-2008 à 20:13:27    

Merci de votre aide mais sa ne fonctionne toujours pas. celle de NewsletTux n'a toujours aucun effet, et celle que lucas a mit si je coche une seul case, rien du tout, et si j'en coche 2 j'ai ceci You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''%fr%' at line 1
 
je reposte le code peut-être que c'est une erreur de ma part car j'ai du mal a comprendre certaine chose.
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3. <head>
  4. <title></title>
  5. <link href="style.css" rel="stylesheet" type="text/css">
  6. <div id="all">
  7. <div id="banniere">
  8. <div id="pub">
  9. <script type="text/javascript"><!--
  10. google_ad_client = "pub-8258802225837101";
  11. google_ad_width = 468;
  12. google_ad_height = 60;
  13. google_ad_format = "468x60_as";
  14. google_ad_type = "text_image";
  15. google_ad_channel = "";
  16. google_color_border = "FFFFFF";
  17. google_color_bg = "FFFFFF";
  18. google_color_link = "008000";
  19. google_color_text = "000000";
  20. google_color_url = "008000";
  21. //-->
  22. </script>
  23. <script type="text/javascript"
  24. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  25. </script>
  26. </div>
  27. </div>
  28. <div id="luigi">
  29. </div>
  30. <div id="menu">
  31. </div>
  32. <div id="contenu">
  33.  <ul id="menu_horizontal">
  34.     <div id="menuitem">
  35.    <li class="bouton_gauche"><a href='index.php'>Accueil</a>
  36.   </li>
  37.    <li class="bouton_gauche">
  38.    <a href='http://zone-mobiles.leforum.eu/'>Forum</a>
  39.   </li>
  40.    <li class="bouton_gauche">
  41.    <a href='jeux.php'>Téléchargements</a>
  42.   </li>
  43.   <li class="bouton_droit">
  44.    <a href='rechercher.php'>Recherche</a>
  45.   </li>
  46.    <li class="bouton_droit">
  47.    <a href='inscription.php'>Inscription</a>
  48.   </li>
  49.  </div></ul>
  50. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  51. <script type="text/javascript">
  52. var page_courante=1;
  53. var nb_pages=1;
  54. function pagePrecedente() {
  55.    if (page_courante==1) {
  56.       alert("Vous êtes déjà sur la première page !" );
  57.    } else {
  58.       affichePage(page_courante-1);
  59.    }
  60. }
  61. function pageSuivante() {
  62.    if (page_courante==nbpages) {
  63.       alert("Vous êtes déjà sur la dernière page !" );
  64.    } else {
  65.       affichePage(page_courante+1);
  66.    }
  67. }
  68. function affichePage (page){
  69.    document.getElementById("page"+page_courante).style.display = "none";
  70.    document.getElementById("lienpage"+page_courante).style.fontWeight = "normal";
  71.    document.getElementById("page"+page).style.display = "block";
  72.    document.getElementById("lienpage"+page).style.fontWeight = "bold";
  73.    page_courante=page;
  74. }
  75. </script>
  76. </head>
  77. <body>
  78. <div id="main">
  79. <?php
  80. $requete=trim($_POST['requete']);
  81. $requetelangue=trim($_POST['requetelangue']);
  82. if(!empty($requete) && !empty($requetelangue))
  83. {
  84. mysql_connect('sql.olympe-network.com','essaye12','*****');
  85. mysql_select_db('essaye12');
  86. $query = mysql_query("SELECT * FROM jeux WHERE taille LIKE '%$requete%' AND type LIKE '%$requetelangue%" ) or die (mysql_error());
  87. $nb_resultats = mysql_num_rows($query);
  88. if($nb_resultats != 0)
  89. {
  90. ?>
  91. <h3>Résultats de votre recherche.</h3>
  92. <p>Nous avons trouvé <?php echo $nb_resultats;
  93. if($nb_resultats > 1) { echo 'résultats'; } else { echo 'résultat'; }
  94. ?>
  95. dans notre base de données. Voici les fonctions que nous avons trouvé :<br/>
  96. <br/>
  97. <?php
  98. while($donnees = mysql_fetch_array($query))
  99. {
  100. ?>
  101. <a href="fonction.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['taille']; ?></a><br/>
  102. <?php
  103. }
  104. ?><br/>
  105. <br/>
  106. <a href="rechercher.php">Faire une nouvelle recherche</a></p>
  107. <?php
  108. }
  109. else
  110. {
  111. ?>
  112. <h3>Pas de résultats</h3>
  113. <p>Nous n'avons trouvé aucun résultats pour votre requête "<?php echo $_POST['requete']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
  114. <?php
  115. }
  116. mysql_close();
  117. }
  118. else
  119. {
  120. ?><div id="recherche">
  121. <p>recherche</p>
  122. <form action="rechercher.php" method="Post">
  123. <input type="checkbox" value="320*240" name="requete" /> 320*240
  124. <input type="checkbox" value="220*176" name="requete" /> 176*220
  125. <input type="checkbox" value="fr" name="requetelangue" /> fr
  126. <input type="submit" value="Ok">
  127. </form></div>
  128. <?php
  129. }
  130. ?>


 
Re-merci

Reply

Marsh Posté le 10-08-2008 à 09:54:51    

Code :
  1. <?php
  2. $requ=trim($_POST['requete']);
  3. $reql=trim($_POST['requetelangue']);
  4. if(!empty($requ) || !empty($reql))
  5. {
  6.    //...
  7. }
  8. ?>


 
et Ligne 101 :
 

Code :
  1. $query = mysql_query("SELECT * FROM jeux WHERE taille LIKE '%$requete%' AND type LIKE '%$requetelangue%' " ) or die (mysql_error());

Reply

Marsh Posté le 10-08-2008 à 16:40:09    

Voilà voilà sa à l'air de fonctionner. Merci à tous et en particulier luc@s.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed