Variable "Tous" en php/MySQL

Fermé
ToNf - 4 janv. 2005 à 15:26
 alavotre - 27 avril 2005 à 10:55
Salut,

Mon problème est tout bête : je fais un formulaire de recherche dans lequel se trouve une liste déroulante dont une des valeurs est "Tous".
Dans le traitement du formulaire, je récupère la valeur de la liste déroulante et la passe via une variable dans une requête SQL (WHERE 'valeur de la colonne dans la table'='valeur provenant de la liste déroulante'). Comment je fais quand l'utilisateur choisi "Tous" ? Je suis obligé de le mettre en variable, je ne tiens pas à avoir une requête par cas, surtout que j'ai plusieurs listes déroulantes...

Merci de votre aide !
A voir également:

7 réponses

sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
4 janv. 2005 à 15:35
pour le cas du "TOUS" tu devrais simplement enlever la clause "WHERE":

Select * From Table;

L'erreur est humaine mais un véritable désastre
ne peut être qu'informatique.
0
Non, je ne peux pas enlever la clause WHERE parce-que je ne veux faire qu'une requête.
Mais j'ai trouvé la solution, je fais un test avant la requête. Si la variable a pris la valeur "tous" dans la liste déroulante, je dis que cette variable est égal à"%" dans la requête, sinon elle garde sa valeur prise dans la liste déroulante. Ca marche comme ça !
0
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
5 janv. 2005 à 19:28
en faisant comme ca tu risque de ralentir un peu ton traitement sur la base SQL, alors que si tu fait un truc dans le genre:

$sql="select * from matable";
if($maVar!='Tous'){
  $sql.="where col=$maVar";
}
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
5 janv. 2005 à 19:46
il ne faut pas pas oublier l'espace avant WHERE!
et les quotes simples (') avant et apres $maVar si le champs est du type texte (char)

$sql="select * from matable";
if($maVar!='Tous'){
  $sql.=" where col='$maVar'";
}


L'erreur est humaine mais un véritable désastre
ne peut être qu'informatique.
0
Tu aurai aussi bien pu travail avec la fonction "Switch"!!! Je pense qu'elle serait la plus appropiée...mé bon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
6 janv. 2005 à 11:26
Non, le if est plus utile dans ce cas la car on a que 2 choix:
la variable égale Tous ou non, ce qui donne

si(var='Tous'){
   ...
} sinon {
   ...
}


le switch est utile dans le cas ou l'on a 3 valeur distincte et que l'on serait obligé d'utilisé deux if
0
Bonjour,

j'ai fait un moteur en utilisant DW mx, et pour insérer le "Tous", c ok, sauf que pour ma page de resultat, ça bug...erreur de synaxe...

$colrubrique_rsCatalogue = "1";
if (isset($_GET['VARrubrique'])) {
$colrubrique_rsCatalogue = (get_magic_quotes_gpc()) ? $_GET['VARrubrique'] : addslashes($_GET['VARrubrique']);
}

mysql_select_db($database_connBoutsimple, $connBoutsimple);
$query_rsCatalogue = sprintf("SELECT recette.nom, recette.vin_1, FROM recette, vin WHERE recette.rubriqueid=%s AND recette.nom LIKE '%%%s%%' AND vin.id_vin=recette.vin_1", $colrubrique_rsCatalogue,$colnom_rsCatalogue);
$query_limit_rsCatalogue = sprintf("%s LIMIT %d, %d", $query_rsCatalogue, $startRow_rsCatalogue, $maxRows_rsCatalogue);
$rsCatalogue = mysql_query($query_limit_rsCatalogue, $connBoutsimple) or die(mysql_error());
$row_rsCatalogue = mysql_fetch_assoc($rsCatalogue);

et le message pour la page de resultat

Erreur de syntaxe près de '% AND recette.nom LIKE '%iran%' AND vin.id_vin=recette.vin_1 LIM' à la ligne 1

merci de m'aider c mon dernier bug ..
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
26 avril 2005 à 18:58
recette.rubriqueid='%s' AND 
0
merci
en effet y'a plus de bug, par contre pas de résultat sur la page ... ce "Tous" est énervant...

une idée sur la source d'erreur ?
0
Autant pour moi, je viens de trouver la source de l'erreur, la condition "Tous" étant placé après celle des autres rubriques (pour appeler la requete) ça pouvait pas marcher...
0