begin process at 2012 05 31 02:19:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Problème de requêtes [TITRE MODERE CAR PEU EXPLICITE]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Rechercher un bien par critère

Type:
Ville:
Nbr de pièces:
Surface (m²) :
mini maxi
Prix  :
mini maxi



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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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 :)

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,752 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales