Problème conditions requete SQL

Problème conditions requete SQL - SQL/NoSQL - Programmation

Marsh Posté le 21-01-2010 à 22:00:18    

Bonsoir,
Je suis entrain de préparer un site internet pour mon bac de fin d'année et voila que je butte déja.
Il s'agit d'un site de petites annonces.
 
J'ai un formulaire en php permetant de "trier" les annonces celon les besoins des l'utilisateurs (prixmax, prixmin, categorie, etc..)
Le probleme est que lorsque l'utilisateur ne choisi pas de catégorie, celle par défaut est "Toutes catégories" mais aucun annonce n'a comme catégorie cette dernière!  
 
Voici le code:
 

Code :
  1. <?php
  2. $titre= htmlspecialchars ($_POST["titre"]);                   // récupération des variables du formulaire
  3. $categorie= htmlspecialchars ($_POST["categorie"]);
  4. $prix_min= htmlspecialchars ($_POST["prix_min"]);
  5. $prix_max= htmlspecialchars ($_POST["prix_max"]);
  6. $contenu= htmlspecialchars ($_POST["contenu"]);
  7. $region= htmlspecialchars ($_POST["region"]);
  8. $cp= htmlspecialchars ($_POST["cp"]);
  9. $ville= htmlspecialchars ($_POST["ville"]);
  10. if ($prix_max ==NULL)
  11. {
  12. $prix_max=100000000000000000000000000000;
  13. }
  14. if ($prix_min ==NULL)
  15. {
  16. $prix_min=0;
  17. }
  18. mysql_connect("sql.free.fr", "***", "***" );      // connection à la base de donnée
  19. mysql_select_db("***" );
  20. $reponse = mysql_query("SELECT * FROM annonce WHERE titre LIKE '%$titre%' AND prix <= $prix_max AND prix >= $prix_min" );   // requete sql
  21. [...]
  22. mysql_close();
  23. ?>


 
Comment pourais-je faire pour que la requete puisse ignorer cette condition?
 
merci pour vos réponces
Bonne soirée à tous


Message édité par martomy le 21-01-2010 à 22:13:57
Reply

Marsh Posté le 21-01-2010 à 22:00:18   

Reply

Marsh Posté le 22-01-2010 à 14:20:13    

Je ne vois pas le rapport entre "trier par prix, catégorie, etc." et filtrer par "catégorie"...

 

Bon, on va dire que tu veux filtrer soit par la catégorie passée en paramètre, soit toutes les catégorie si pas de choix utilisateur.

 
Code :
  1. $sql = "SELECT * FROM annonce WHERE titre LIKE '%$titre%' AND prix <= $prix_max AND prix >= $prix_min"
  2.  
  3. if (strlen($categorie) > 0)
  4. {
  5.  $sql += " and categorie = '$categortie'";
  6. }
  7.  
  8. $reponse = mysql_query($sql);


Message édité par MagicBuzz le 22-01-2010 à 14:20:47
Reply

Marsh Posté le 22-01-2010 à 15:59:40    

au passage, c'est quoi cette connerie :??:

Code :
  1. $prix_max=100000000000000000000000000000;


Ca m'étonnerait que php gère des entiers avec un tel nb de chiffres :/
 
Je ferais plutôt :

Code :
  1. if (!empty($prix_max))
  2. {
  3.     $sql .= " and prix <= $prix_max";
  4. }


 
ps : MagicBuzz, la concat en php, c'est .= et pas += (ça, c'est pour les nombres).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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