Accueil > Forum > > > > Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]
Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]
mercredi 4 janvier 2006 à 17:00:46 |
Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

skiso
|
j'ai concu un site pour une agence immobiliere, en cherchant un bien sur ma base de donnee en multi-critere. je fait ce qui suit : j'ai un formulaire de plusieur champ, ce sont les critere de recherche :
type de bien : (appartement ou villa ou ....) lieu : (paris ou lion ou ....) prix minimal : 1 ou 2 ... prix maximal : 9999999 ou 9999999999 suprefacie : 100m ou 200m ou ....
le problem que j'ai et quant un champ est vide.
alors je cherche en testant tout les champ : si le champ type est remplee et lieu et prix min et prix max et superfacie son vide alors je accede a la requete qui chere que le champ type
et
si le champ lieu est remplee et type et prix min et prix max et superfacie son vide alors je accede a la requete qui chere que le champ lieu
je fait ces test et ca fait des enormes ligne de code.
je veux savoir svp es que cette methode est exacte ou il y a une methode oplimal qui peut m'eviter toutes ces lignes de code. merci .
|
|
mercredi 4 janvier 2006 à 17:10:50 |
Re : es exacte?

malalam
|
Hello,
le mieux aurait été de faire une fonction. Tu mets tes champs à value="null" par défaut. A la soumission, tu appelles la fonction qui crée la requête, en lui passant en paramètre tes différents $_POST.
Dans ta fonction, tu construits tes clauses WHERE (et éventuellement FROM) en fonction de la valeur des post. Exemple à prendre avec des pincettes parce que c'est la copie de la méthode d'une des classes de mon projet actuel...C'est donc juste pour l'exemple :
function getList($comtId = null, $entId = null, $contId = null, $artId = null) { $whereClauseArr = array (); if ($comtId !== null) { $whereClauseArr[] = ' AND (sk.comt_id = '.$comtId.')'; } if ($entId !== null) { $whereClauseArr[] = ' AND (sk.ent_id = '.$entId.')'; } if ($contId !== null) { $whereClauseArr[] = ' AND (sk.cont_id = '.$contId.')'; } if ($artId !== null) { $whereClauseArr[] = ' AND (sk.art_id = '.$artId.')'; } $sQuery = 'SELECT sk.sk_id, rg.rg_libelle, zone.zone_libelle, etg.etg_libelle FROM stocks sk, sk_rangees rg, sk_zones zone, sk_etages etg WHERE (sk.rg_id = rg.rg_id) AND (sk.zone_id = zone.zone_id) AND (sk.etg_id = etg.etg_id) ';
foreach ($whereClauseArr as $qry) { $sQuery .= $qry; } $sQuery .= ' ORDER BY sk.rg_id, sk.zone_id, sk.etg_id'; $aTmp = array(); $this->oDB->query($sQuery);
while($a = $this->oDB->fetch_assoc() ) { $aTmp[$a['sk_id']] = $a['rg_libelle'].$a['zone_libelle'].$a['etg_libelle']; } return $aTmp; }
|
|
vendredi 6 janvier 2006 à 12:33:55 |
Re : es exacte?

skiso
|
svp c tu veut me rendre service, par ce que je suis debutant en php et en sql peut tu traduire ce que tu a ecrit au par avant (en haut) sur ce formulaire. le nom des champ de haut en bas : - type - ville - nbr pieces - surfmin - surrmax - prixmin - prixmax merci pour ta reponce
|
|
dimanche 8 janvier 2006 à 12:01:11 |
Re : es exacte?

FhX
|
Nan mais tu veux pas qu'on te le chie non plus ?
|
|
dimanche 8 janvier 2006 à 12:22:04 |
Re : es exacte?

EagleEye
|
Lol, oui c'est un peu abusé je trouve, tu as juste a remplacer ohh :s
|
|
lundi 9 janvier 2006 à 14:09:32 |
Re : Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

FhX
|
Juste pour toi Malalam au passage :)
"if ($comtId !== null) {" Que c'est bien mocheuh :) En plus, tu ne testes même pas le type de ta variable si c'est différent de NULL ! Bon, j'en déduis que c'est tout sauf un objet, une ressource, ou alors un type NULL... donc de ce fait, pour tester une bonne fois pour toute ==> is_scalar() !
Donc : if ( is_scalar($comtId) ) { ... } etc... Au moins comme ca, tu es assuré au pire :)
Pareil, pourquoi avoir fait ca sous forme de tableau pour tes requètes avec AND ?
$query_ext = ''; if ( is_scalar($comtId) ) { $query_ext .= 'AND (sk.comt_id = '.$comtId.')'; } // etc... // et à la fin : if ( !empty($query_ext) ) $sQuery .= $query_ext;
Voila, c'est qu'un conseil que je te donne, mais si c'est plus rapide ta facon, pourquoi pas :)
|
|
lundi 9 janvier 2006 à 14:19:47 |
Re : Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

malalam
|
FhX => disons qu'on est 2 à bosser là-dessus, et que je dois m'adapter... ;-) le getList est appelé explicitement, à partir de valeurs connues; le but est simplement de dire : si on passe NULL, on ne fait rien. Sinon, c'est qu'on a passé un entier (c'est epxlicite, comme je te l'ai dit, on sait ce qu'on aura toujours : un entier). Maintenant, oui, is_scalar () est plus joli :-) Quant au tableau, je ne défends pas : mes portions de code étaient avec une bête concaténation, en effet. Mais comme mon collègue a plus de mal à s'adapter à mon code, que moi au sien, j'ai laissé tomber et j'ai calqué son mode de fonctionnement. Bref, non, je ne pense pas que ce soit plus rapide, bien au contraire.
|
|
lundi 9 janvier 2006 à 14:26:15 |
Re : Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

malalam
|
J'ai remplacé is_scalar (), en tous cas dans mes portions de code...lol. Je nepense pas qu'il ait des problèmes pour lire ça...quand même ;-)
|
|
lundi 9 janvier 2006 à 20:25:07 |
Re : Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

FhX
|
oh quand même !! Sinon tu lui dis à quoi ca sert en commentaire :)
Par contre dis moi, si tu ne passes aucun argument dans ta méthode, quand tu fais un foreach, t'as pas une erreur du fait que ton tableau peut être vide ?
|
|
lundi 9 janvier 2006 à 20:26:51 |
Re : Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]

FhX
|
Enfin moi je te dis ca comme ca, étant donnée que c'est une classe, et qu'une classe peut se faire hériter très vite, autant la faire la plus générique possible, et surtout la plus strict au niveau des valeurs qui viennent et qui repartent des méthodes :)
|
|
Cette discussion est classée dans : problème, type, champ, lieu, prix
Répondre à ce message
Sujets en rapport avec ce message
Masquer un champ ??? [ par rich25200 ]
Comment fait-on pour masquer un champ de type input type='text' ???merciPS je sais qu'il existe disabled mais je veux que l'utilisateur ne le voit pas
formulaire + champ de type "File" [ par ironnyc ]
Salut a tous!!j ai un petit prob avec mon formulaire pour faire un upload.Dans mon ficher "Formulaire.htm"j utilise un champ de type "File" (avec encr
pb avec un champ de type file [ par ouiskie ]
Salut,j'ai un formulaire, et dedans il y a un chmap de type file, pour aller chercher l'adresse d'une image. Je v chercher l'adresse avec le bouton pa
Problème de header("Content-type: image/jpeg") [ par clemthecool ]
Salut à tous,j'ai un 'ti soucis au niveau de l'affichage de mes utilisateurs inscrits dans mon annuaire LDAP.Mon annuaire marche correctement et j'arr
Aidez moi problème php [ par Tazleboss76 ]
Bonjour à tous voila j'ai un champ gains dans la table membre de ma base de donnée quelqu'un peut m'expliquer comment faire pour que lorsque quelqu'un
Problème de champ texte [ par eka808 ]
BonsoirJ'ai créé un petit forum où l'on peut poster comme dans tous les forumsCependant, lorsque le message qui est écrit dans un champ texte a plusie
FireFox, problème avec champ File ! [ par ripoux ]
Hi everybody,J'ai une petite question de compatibilité entre FireFox et IE 6.0J'utilise un champ dans un formulaire de type "File" pour uploader une i
Problème de recupération de variable contenant un champ de requete sql dans une page [ par Maiku ]
BonjourJ'ai une liste déroulante, lorsque je choisis un champ de cette liste, une requete sql recuperer toutes les données de ce champ dans ma base my
champs [ par one_piece ]
salut a tous!! mon pb est le suivant: je souhaite creer une base de donnée composée de 2 champs un qui servirai d'identification et un autre qui conti
Récupérer les valeurs d'un champ de type ENUM [ par zemele ]
Bonjour, Quelqu'un connait-il la commande PHP pour récupérer les valeurs d'un champ de type ENUM ? (exemple : champ1, type ENUM, 'valeur1', 'valeur2
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|