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 !

7 réponses

  1. sam3000 Messages postés 1226 Statut Membre 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
    1. 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
  2. GallyNet Messages postés 437 Statut Membre 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
  3. sam3000 Messages postés 1226 Statut Membre 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
  4. SomeOne
     
    Tu aurai aussi bien pu travail avec la fonction "Switch"!!! Je pense qu'elle serait la plus appropiée...mé bon
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. GallyNet Messages postés 437 Statut Membre 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
  7. 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
  8. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    recette.rubriqueid='%s' AND 
    
    0
    1. 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
    2. 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