nadegeva Posté 21 Avril 2006 Partager Posté 21 Avril 2006 Bonjour à tous, Si quelqu'un pouvait m'aider il ferait sa BA de la journée..Et ce serait vraiment sympa. Je suis assez novice en PHP et j'utilise dreamweaver qui évidemment ne me permet pas d'écrire ma requête en entier Sur un site de biens immobiliers (PHP/mysql) j'ai mis en place un petit moteur de recherche multicritères, type, département et la surface (avec surfmini et surfmaxi) Si je fais cette requête sans prendre en compte la surface : SELECT * FROM bien WHERE type = '$type' AND cpb LIKE '$dptmt%'"; avec cpb le code postal du bien immobilier >>cela fonctionne Par contre dès que je change ma requête avec les variables surfmini et surfmaxi je n'ai plus de réponse. if(isset($_POST['surfmini'])) $surfmini=$_POST['surfmini']; else $surfmini="%"; if(isset($_POST['surfmaxi'])) $surfmaxi=$_POST['surfmaxi']; else $surfmaxi="%"; SELECT * FROM bien WHERE type = '$type' AND cpb LIKE '$dptmt%' AND surface BETWEEN '$surfmini' AND '$surfmaxi' "; J'ai le même problème avec la recherche détaillée qui prend en considération d'autres critères tels que la ville, le nombre de pièces, etc... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 21 Avril 2006 Partager Posté 21 Avril 2006 Bonjour, Tu peux faire plus simplement ainsi : <?$type = $_POST["type"];$dptmt = $_POST["dptmt"];$surfmini = $_POST["surfmini"];$surfmaxi = $_POST["surfmaxi"];if($type!=""){$sqlwhere = $sqlwhere . " and type = '".$type."'"; }if($dptmt !=""){$sqlwhere = $sqlwhere . " and dptmt = '".$dptmt ."'"; }if(!isset($_POST['surfmini']))$surfmini=0;if(!isset($_POST['surfmaxi']))$surfmini=1000000;$sqlwhere = " and surface BETWEEN '".$surfmini."' AND '".$surfmaxi."'";//La requete :$sql = "SELECT * FROM bien WHERE 1=1 " . $sqlwhere?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
nadegeva Posté 21 Avril 2006 Auteur Partager Posté 21 Avril 2006 Merci de ton aide. mais ça ne marche pas ...Etrange, je dois mal m'y prendre. Mais sais tu pourquoi mon code ne fonctionne pas ? Car lorsque je rentre cette requête dans phpmyadmin avec des valeurs $surfmini= 30 et $surfmaxi=120, j'obtiens bien des réponses.. Lien vers le commentaire Partager sur d’autres sites More sharing options...
nadegeva Posté 21 Avril 2006 Auteur Partager Posté 21 Avril 2006 Je me disais que peut-être je pourrai créer une variable tranche mais la synthaxe je sais pas du tout. Du genre $tranche <= $surfmaxi $tranche >= $surfmini Et après je fais ma requête SELECT * FROM bien Where surface = $tranche >>C'est possible ça ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Earalia Posté 21 Avril 2006 Partager Posté 21 Avril 2006 je pense que ça vient du BETWEEN : BETWEEN is employed to specify integer ranges. Thus instead of age >= 32 AND age <= 40, we can use age BETWEEN 32 and 40. ( http://www.webdevelopersnotes.com/tutorial...nd_between.php3 ) En effet, si tes variables ne sont pas renseignées, tu mets "%" dedans... alors qu'avec BETWEEN, on attend un entier... en mettant 0 par défaut dans ton mini, et une valeur trop grande pour être valable dans ton max, ça devrait marcher (comme dans l'exemple de PorteKoi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nadegeva Posté 22 Avril 2006 Auteur Partager Posté 22 Avril 2006 Bonjour à tous. J'ai trouver la solution, c'est con mais dans ma base le champs surface était en type char, alors qu'il fallait un entier. Du coup la requête ne renvoyait aucune valeur. Ni d'erreur d'ailleurs. Donc merci à Porte Koi pour son style, j'ai bien aimé le principe de ta requête et merci à Earalia pour m'avoir aiguilloné sur le type... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Frank85 Posté 16 Juin 2006 Partager Posté 16 Juin 2006 Bonjour à tous! question à Portekoi: pourquoi effectues tu des tests sur les variables en utilisant une fois la variable "simple" ($type) et après la variable globale ($_POST...)? Merci! Frank Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 16 Juin 2006 Partager Posté 16 Juin 2006 Bonjour, J'avais repris le code plus haut sans le corriger Mais cela ne change rien sauf pour s'il y a un traitement à la 'réception' de la variable. Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant