Variable "Tous" en php/MySQL

ToNf -  
 alavotre -
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   Statut Membre Dernière intervention   144
 
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
ToNf
 
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   Statut Membre Dernière intervention   387
 
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   Statut Membre Dernière intervention   144
 
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
SomeOne
 
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   Statut Membre Dernière intervention   387
 
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
alavotre
 
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   Statut Contributeur Dernière intervention   857
 
recette.rubriqueid='%s' AND 
0
alavotre
 
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
alavotre
 
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