begin process at 2010 02 09 22:39:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

requetes avec des ifs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

requetes avec des ifs

lundi 22 septembre 2008 à 11:56:24 | requetes avec des ifs

valery54

Bonjour
j'ai un formulaire avec 4 champs. Lorsqu'on le valide, les champs sais permettent de renvoyer les resutals d'une ou plusieur table suivant les cas.
Ca signifie pour moi que dans chaque cas ou les champs du formulaire sot remplis, je dois avoir une requette particulière, donc une infinité de if.

Voici une partie.


$nom1= substr($_POST['sql_nom'],0,3);
$prenom1= substr($_POST['sql_prenom'],0,3);
$paysres1= $_POST['sql_pays'];

if ($nom1)
      { 
    if ($prenom1)
             { if ($paysres1)
               {
                 $req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
                                                                           where nom like '$nom1%'
                                                                          and prenom like '$prenom1%'
                                                                          and paysr = '$payres1'
                                                                          and users.id = agenda_anniv.id_mbr");
               }
              else
              {
              $req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
                                                                          where nom like '$nom1%'
                                                                          and prenom like '$prenom1%'
                                                                          and users.id = agenda_anniv.id_mbr");
              
             
              }
            
             }
            
    else if ($paysres1)
           {
             $req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
                                                                     where nom like '$nom1%'
                                                                     and paysr like '$prenom1%'
                                                                     and users.id = agenda_anniv.id_mbr");
          
          
           }
           else
           {
           $req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
                                                                      where nom like '$nom1%'
                                                                      and users.id = agenda_anniv.id_mbr");
      
Est ce que je peux gérer tout ça avec une seule requete? si oui, laquelle?

Merci  à vous.

c'est bien celà
lundi 22 septembre 2008 à 13:41:38 | Re : requetes avec des ifs

nhervagault

Administrateur CodeS-SourceS
Salut

Tu peux factoriser la premiere partie de la requete
comme
$sql = "select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
                                                                     where 1=1 " //1==1  renvoie  toutes les  données et permet de gerer plus facilement les AND ;-)

ensuite tu fais tes tests
if ($nom1)
{
$sql += " AND nom like '$nom1%'"
}
if ($prenom1) {
.....
}
if(.....){...}
.....

//
Et pour finir
$req = reqmysql($sql,"agenda_anniv.id_mbr")

Apres tu peux faire une fonction pour concatener l'ordre SQL si tu as 50 if
(tu place les champs dans un tableau et tu le parcoures)


--> plus propre et plus maintenable
lundi 22 septembre 2008 à 14:08:02 | Re : requetes avec des ifs

valery54

ça parait logique, sauf que je pense que tu veux dire
pour les test,
if ($nom1)
{
$sql += " AND nom like '$nom1%'";
$sql1 =$ql+
}
if ($prenom1) {
.$sql += " AND nom like '$prenom1%'";
$sql = $sql+}
if(........

pour pouvoir concatener dans une boucle for...
J'essaie et je vois ce que ça donne.




c'est bien celà
lundi 22 septembre 2008 à 15:02:29 | Re : requetes avec des ifs

nhervagault

Administrateur CodeS-SourceS
Je ne comprends pas trop
les lignes :
$sql1 =$ql+
et
$sql = $sql+

Nouvelle variables ou autres ??
Je ne développes pas souvent en PHP

Je concaténais tout dans $sql pour montrer le type d'algo
mais il y a surement plus sur avec des requetes parametrees contre l'injection SQL


lundi 22 septembre 2008 à 17:47:32 | Re : requetes avec des ifs

valery54

Réponse acceptée !

Partant de ce que tu m'as propsé, voilà ce que j'ai fait et qui fonctionne.


$sql = "select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
        where 1=1 and users.id=agenda_anniv.id_mbr" ;

if ($nom)
{
$sql1 = " AND users.nom like '$nom%'";

};
if ($prenom)
{
$sql2 = " AND users.prenom like '$prenom%'";

};
if ($paysres)
{
$sql3 = " AND users.paysr like '$paysres%'";

};
   $conditions="$sql1 $sql2 $sql3";
  
                
   $request = "$sql $conditions" ;
   
            
    $req = reqmysql("$request");
 }

lundi 22 septembre 2008 à 19:46:09 | Re : requetes avec des ifs

nhervagault

Administrateur CodeS-SourceS
Cool que ca marche.

J'avais oublié que la concatenation en php c'est .= ou .

Et j'avais oublié la form que tu proposes elle est peut être meilleure je ne sais pas.

N'oublies pas de valider la source ;-)





Cette discussion est classée dans : and, id, agenda, users, anniv


Répondre à ce message

Sujets en rapport avec ce message

Problème de dates [ par gabrenicolas ] Bonjour à tous, Bon j'ai un problème de date: en effet dans un formulaire, je calcul le nombre d'activité faite par jour dans une colonne A, dans la Concatener dans une requete sql [ par gabrenicolas ] Bonjour à tous , Petit problème, pour une fois la requête fonctionne nickel cependant j'ai un problème avec ma concatenation.. Il y aurait-il un pr set d'une variable retourne null [ par bootchoz ] salut !qu'est-ce qui ne va pas dans ma procédure ?quelqu'un peut m'aider ? pourquoi @id_pers vaut null apres le set ?merci d'avance...CREATE PROCEDURE traduction d'une requtte sql [ par 071714016 ] j'ai un problème avec une version SQL 4.0 il ne reconnait pas "not in (select" "select * from chat where recepteur='$idlogin' and etat_r!=1 and emeteu Nombre de requête imbriquer max??? [ par Polack77 ] Bonjour , Je développe acculement une appli (en VB) qui gère une base de données. Mon problème est que je dois être compatible avec un maximum de SGBD probleme de AND , = [ par sheorogath ] bonjour a tousvoila m'etant mis un peu a la programmation de base de donnees en java j'ai commence le sqlj'ai trois tablele point commun de c'est tabl probleme de groupe by sql server [ par wally88 ] Bonjour voila j'ai une galere avec Group by en sql de sql serveur Avec sql serveur il faut apprement mettre tout les champs que l'on veux dans un cert DELETE en cascade. [ par moimadmax ] Bonjour, Voici mon problème. J'ai cette structure de base (http://lepetitmas.free.fr/base.png): Pour chaques classes il y a plusieurs séquences par c Procedure de recherche [ par hardzip ] Bonjour tout le mondeJe suis actuellement entrain de mettre en place un formulaire de recherche avec asp et  .NET et j'ai un probleme qui me bloque de Probleme avec une requete [ par deadstar2 ] Bonjour à tous, Je n'ai pas un excellent niveau en sql, j'aimerais faire appel à vos connaissances pour une requete dont je n'arrive pas à obtenir ce


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales