Aller au contenu
WebFrance

Rejoignez WebFrance (Cadeau : Le Guide 2017 pour rentabiliser un site)

Rejoindre WebFrance

Connexion  
spacemarmotte

requête avec des variables... ou pas !

Messages recommandés

Bonsoir à tous,

je sèche sur un truc...

je dois faire un SELECT * FROM mabase WHERE var1='$var1' AND var2='$var2' AND var3='$var3' AND ... ... mais les variables ne sont pas forcément envoyé par POST (en fait, il y en a plus que 3 !!) !

comment faire ma requête sur les variables disponibles tout en ne tenant pas compte des variables non envoyées ?

je ne pense pas pouvoir utiliser if car un internaute peut envoyer la variable 1, ou la 2, ou la 1 ET la 3 ou la 3 tout seul etc etc... ça ferait beaucoup de if/elseif !!

y a t'il une fonction php qui permet de dire: "tient compte de la condition si elle existe" ??

merci de vos lumières

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

>> Nouveau : Découvrez la marketplace d'Achat / Vente de Sites !

Salut spacemarmotte :)

y a t'il une fonction php qui permet de dire: "tient compte de la condition si elle existe"

Ben, le "si" que tu utilises, c'est un "if" donc pas le choix :)

Tu peux construire petit à petit ta requête avant de l'exécuter ensuite, par exemple :

$tab_vars=array('var1','var2','var3',...);

$req='SELECT * FROM mabase WHERE 1';

foreach($tab_vars as $var){

  if(isset($_REQUEST[$var]) && $_REQUEST[$var]!=''){

     $req.=' AND '.$var.'="'.mysql_real_escape_string($_REQUEST[$var]).'"';

  }

}

$result = mysql_query($req);

...

En espérant que cela t'aide :)

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

Merci Pascal,

je comprends l'idée générale mais... (forcément, il y a un "mais") les $var font référence à des champs différents de la base. Ce n'est pas id=$var1 AND id=$var2...

c'est plutôt une requête croisée sur plusieurs champs de la bdd: if id=$var1 AND nom=$var2 AND region=$var3 ...

j'avoue ne pas comprendre, dans la structure de la requête, comment placer les conditions..

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

si tu n'as pas de variable & qu'il ne faut donc pas la sélectionner tu met la condition dans ta requête SQL.

mysql_query("SELECT * FROM matable WHERE '. if(isset($var1)) { id=$var1 AND } .' '. if(isset($var2)) { title=$var2 AND } .' etc... !

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

Merci Him..

j'avoue mieux comprendre cette syntaxe... même si je n'arrive pas a la mettre en pratique ! ça bug !

les variables sont bien reconnues et prennent bien les valeurs par $_POST (ou rien si je ne sélectionne rien !) mais on dirait que la requête ne donne aucun résultat !

j'ai pourtant ciblé sur des éléments présents dans la base !

a quoi servent les .' '. dans la requête ? c'est une concaténation ?

Modifié par spacemarmotte

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

Apparemment, il n'est pas possible de mettre des if dans un SELECT !!

j'ai lu ça sur quelques fora et tutos et comme je n'ai pas réussi à le mettre en place, je ne peux pas prouver le contraire !!

J'y suis parvenu autrement. Si ça intéresse qqun:

//on vérifie l'existence des variables S_POST

$rq1 = NULL;

          if (isset($_POST["id"])) {

               $rq1 = " AND id='$id'";

               }

          if(empty($_POST["id"])) {

               $rq1 = '';

          }


          $rq2 = NULL;

          if (isset($_POST["nom"])) {

               $rq2 = " AND nom='$nom'";

               }

          if(empty($_POST["nom"])) {

               $rq2 = '';

          } etc etc.. pour toutes les variables a contrôler


//le select:


$requete = "SELECT * FROM mabase WHERE 1=1 $rq1 $rq2 .. autant de $rqX .. ORDER BY.. ";

c'est un peu lourd, il existe peut-être plus simple... mais je n'ai pas trouvé ! et là, ça fonctionne !

Merci quand même pour le coup de main les copains ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites
Partagez cette page :

Ajouter un commentaire :

-

Créer un compte

en 3 secondes

INSCRIPTION

Se connecter

ici

CONNEXION

Connexion  

Partagez cette page :



© WebFrance 2017 - Contact - Annonceurs - Conditions générales

×

Nouveau : Marketplace WebFrance

2.png

Vente de sites internet, domaines, applications...