Formulaire de recherche

Répondre
lolipops
le 05/01/2005 à 22:21
lolipops
coucou all,

je suis en train de preparer un formulaire de recherche et j'ai une petite question concernant ma requete finale.

je precise que je suis une codeuse novice mais que j'ai plus un probleme de structure de script que de syntaxe (on verra ca plus tard si j'arrive pas du tout à le scripter)

Ce formulaire contiendra des chekbox (pas de souci de ce cote) et des listes alimentées par un pre requete. (couleur par exemple)
Cependant je voudrais laisser le choix au visiteur d'utiliser ou non ce critere par liste, soit un statut pre selectionné "indiferent".

La question que je me pose c'est comment gerer ce statut indiferent ayant à priori une valeur vide dans mon SELECT WHERE.

exemple :

Si la valeure post[couleur] est vide, la requete cherche-t-elle des champs vides ou laisse-t-elle la colonne de coté ? (ce qui m'arragerait ... a mort)

Si elle considere la valeur vide comme une valeur en soit, comment lui indiquer en cours de requete ou precedemment que :

If post[couleur] not null $couleur recherchée
If post[couleur] null $couleur pas recherchée
smiley
arf je sais ca ressemble a rien mais j'en suis là looooool
smiley

Merci pour toute votre aide

A+
Pas douée mais acharnée
daVinci
le 05/01/2005 à 23:37
daVinci
Et si tu faisais comme ça ! Chez-moi dans un script similaire ça fonctionne bien smiley

<?php

if(isset($_POST['couleur']) && !empty($_POST['couleur'])) {$color = "WHERE couleur='".$_POST['couleur']."'";} else {$color = '';}
$req = mysql_query("SELECT * FROM tatable $color") or die ('Erreur dans la requête: '.$req.''.mysql_error());

?>


A+
lolipops
le 06/01/2005 à 01:44
lolipops
oui c pas mal du tout et ca marcherai si c'etait le seul critetre
mais vu que le WHERE est defini dans $couleur, je peut pas fair un select multicritere.

A moins qu'on puisse multiplier les WHERE dans la requete ? je sais pas ...

En tout cas merci car ton script me permet d'envisager autre chose pour une autre requete.
Pas douée mais acharnée
CLOUD
le 06/01/2005 à 02:17
CLOUD
Bon j't'explique comment j'vois la chose moi.

En gros tu stock le début de ta requete dans uen variable genre :
$requete = "SELECT * from $nomtable";

Ensuite tu crée une variable $buffer qui va s'ajouter a ta requete final...
Je m'explique :

Tu vérifie une par une que t'es checkbox sont cochés. SI une est coché tu vérifie si la variable $buffer est vide ou pas.
Si elle l'ai alors $buffer = " WHERE champs='$valeurcheckbox'";
Sinon elle vaut : $buffer .= " AND champs='$valeurcheckbox'";

J'utilise .= pour concaténer la valeur avec la valeur précédente.
Et enfin a la fin :
$requete .= $buffer;

J'espère que j'ai été assez clair :]
lolipops
le 07/01/2005 à 05:25
lolipops
heu sincerement je crois que j'ai compris le principe mais je vois pas bien comment cela peut etre appliquer, je vais faire mon formulaire et je verrais comment ca marche ...

merci à toi
Pas douée mais acharnée
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours