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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Aide sur un WHERE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Aide sur un WHERE

n°1538607
lilougirl8
Posté le 04-04-2007 à 19:25:56  profilanswer
 

Bonjour,
 
Voila j'ai un petit souci, je ne vois pas comment m'y prendre...
J'ai une page qui affiche des annonces.
 
je selection les annonces dans ma base via le code suivant  
 

Code :
  1. $annonce = mysql_query("SELECT * FROM mabase WHERE (type_affaire='".$type1."' OR type_affaire='".$type2."') AND (type_affaire='".$type1."' OR type_affaire='".$type2."')
  2. AND (type_bien IN '".$typebien1."','".$typebien2."','".$typebien3."','".$typebien4."','".$typebien5."','".$typebien6."'))


 
 
Tout fonctionne y'a pas de probleme seulement j'aimerai encore rajouter une possibilité avec un affichage par communes...
Si je rajouter encore un AND... je ne pourrais plus affichier la liste total des annonces (toutes les communes quoi) je me trompe?
 
Donc comment m'y prendre pour faire en sorte que la selection par commune ne soit effective que si la requete "commune" existe... (en fait en gros il faudrai un OU... mai ça va faire sauter mes selection d'avant)

mood
Publicité
Posté le 04-04-2007 à 19:25:56  profilanswer
 

n°1538665
couak
Posté le 04-04-2007 à 21:05:27  profilanswer
 

bon on va déblayer le terrain parce que c'est pas très clair :
- ca ressemble à du php, vaut mieux éviter de mélanger code php et sql, ca va froisser des gens qui lisent la catégorie SGBD/SQL, à commercer par moi :o
- ca ressemble à du php qui requête un mysql, donc on va partir sur des requêtes qui fonctionnent sous mysql

 

On en profite pour convertir un peu le code histoire qu'il soit lisible :

Code :
  1. $query = "SELECT * FROM mabase WHERE
  2. (
  3.   type_affaire='$type1'
  4.   OR type_affaire='$type2'
  5. )
  6. AND
  7. (
  8.   type_affaire='$type1'
  9.   OR type_affaire='$type2'
  10. )
  11. AND
  12. (
  13.   type_bien IN
  14.   (
  15.     '$typebien1',
  16.     '$typebien2',
  17.     '$typebien3',
  18.     '$typebien4',
  19.     '$typebien5',
  20.     '$typebien6'
  21.   )
  22. )";
  23. $annonce = mysql_query ($query);
 

Bon allez les remarques :
- inutile de faire tout plein de concaténations quand il n'y a pas de besoin
- éviter de faire un "select *" mais un "select champs1, champs2, ..." car sinon c'est la porte ouverte aux failles de sécurité
- ta 2ème condition ressemble à la 1ère
- qu'appelles tu "par commune" ? l'utilisateur filtre sur les communes, tu ajoutes une condition "AND commune='...'" dans ta requête, il est donc normal qu'il ne voit plus toutes les annonces mais seulement les annonces filtrées par la commune choisie
- on ne fait pas de "select * from mabase" mais un "select * from matable"

 


Message édité par couak le 04-04-2007 à 21:06:31
n°1538695
lilougirl8
Posté le 04-04-2007 à 22:16:27  profilanswer
 

merci de t'intéréssé a mon cas :
- La 2eme c'est pas qu'elle ressemble ... c'est la même lol... j'avais meme pas vu tellement j'étais plongé ds mon code...
- on m'avait déja parlé pour le * , je vai le modifier y'a pas de souci pour ça...
- Concernant le mabase j'ai fait une erreur en postant lol... effectitvement j'aurai du ecrire ma table... me suis trompé
- Ce que j'appelle par commune => la possibilité de filtrer par commune ... mais comme je l'indique je voudrai que ça reste une possiblité... alor comment faire je créer un requete différente si l'utilisateur ne se sert pas du filtre?
 
Je suis débutant donc j'ai pas encore toute la logique :d...

n°1538699
lilougirl8
Posté le 04-04-2007 à 22:21:50  profilanswer
 

en fait ma solution je croi que je l'ai trouver... c'est plus par PHP que je vais m'aider...
En fait il suffit donc que je dise si par exemple $_GET['commune'] existe je définit ma requete avec bla bla WHERE commune='". $_GET['commune']."'
 
Sinon... je redifini ma requete sans le commune...
 
C'est bien ça non je suis pas a Ouest?

n°1538703
Martius
il/lui
Posté le 04-04-2007 à 22:24:34  profilanswer
 

c'est exactement ça, pour ajouter des filtres choisis par l'utilisateur, c'est à PHP de s'en occuper.

n°1538705
lilougirl8
Posté le 04-04-2007 à 22:29:10  profilanswer
 

donc si j'ai bien compris j'au un truc ds le genre...
 

Code :
  1. if (!empty($_GET['commune'])) {
  2. $requete = ("SELECT (bla, bla , bla) FROM ma_table WHERE transaction... AND commune='".$_GET['commune']."' " )
  3. else {
  4. $requete = ("SELECT (bla, bla , bla) FROM ma_table WHERE transaction... TOUT COURT " )
  5. }

n°1538741
couak
Posté le 05-04-2007 à 00:01:52  profilanswer
 

tu peux en tartiner un peu moins, car le problème c'est que si tu changes ta requête, tu vas tout te retaper en copier/coller avec les éventuels erreurs et fautes de frappes
Fais plutôt comme ca :

Code :
  1. $requete = SELECT (bla, bla , bla) FROM ma_table WHERE transaction ...";
  2. if ($_GET['commune'])
  3. {
  4.   $requete .= " and commune='".$_GET['commune']."'";
  5. }


L'intéret c'est que tu pourras ajouter des filtres supplémentaires, comme par exemple le nbre de pièces, la superficie, etc.
Exemple :

Code :
  1. $requete = SELECT (bla, bla , bla) FROM ma_table WHERE transaction ...";
  2. if ($_GET['commune'])
  3. {
  4.   $requete .= " and commune='".$_GET['commune']."'";
  5. }
  6. if ($_GET['superficie_min'])
  7. {
  8.   $requete .= " and superficie>=".$_GET['superficie_min'];
  9. }
  10. if ($_GET[...])
  11. {
  12.   $requete .= " and ......";
  13. }


Mais là on sort carrément du cadre SQL, va falloir continuer sur le topic PHP


Message édité par couak le 05-04-2007 à 00:04:52
n°1538786
lilougirl8
Posté le 05-04-2007 à 09:22:14  profilanswer
 

d'accord merci beaucoup je ne connais pas tro cette syntaxe...c'est super juste ce qu'il me fallai !!


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

  [SQL] Aide sur un WHERE

 

Sujets relatifs
PHP+SQL afficher 5 news et avoir accès aux autres...Contrôler une base SQL depuis Excel
Script - Base de donnéesRequête SQL pour modifier une partie d'une valeur d'un champ
[aide] Commande unix prob avec 'Û'Besoin d'aide sur ATL/COM
[PHP] Requete et SQLAide pour un programme de recherche SVP
[AIDE] Formule Excel avec nom de feuille variableDébutant PHP,besoin d'aide
Plus de sujets relatifs à : [SQL] Aide sur un WHERE


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