2015-04-20 21 views
-2

我有一個網格,我需要一些過濾器。 其實我只有2個參數可用,但事情是,我可能會有5/6/7甚至更多,我需要一個好方法來管理它在我的json編碼。反正有參數的功能添加條件嗎?

我管理它通過這種方式:

if(!empty($_GET['q']) && empty($_GET['s'])) { 
     $client = $_GET['q']; 

    $requeteDevis = myPDO::getInstance()->prepare(<<<SQL 
      SELECT SC_libelle, ETP_libelle, DVS_numDevis, DVS_libelle, DVS_montant, DVS_statut, DVS_pourcent, DVS_montant, 
      USR_Nom, USR_Prenom, CTC_Nom, CTC_Prenom, ctc.idContact, DVS_date 
      FROM Utilisateur usr, Devis dvs, SiteClient sc, Client clt, Contact ctc, Entreprise etp 
      WHERE usr.idEntreprise = etp.idEntreprise 
      AND usr.idUtilisateur = dvs.idUtilisateur 
      AND dvs.idSiteClient = sc.idSiteClient 
      AND sc.idClient = clt.idClient 
      AND dvs.idContact = ctc.idContact 
      AND clt.CLT_libelle = ? 
SQL 
); 


    $requeteDevis->execute(array($client));  
} else if (!empty($_GET['s']) && empty($_GET['q'])) { 
$stat = $_GET['s']; 

    $requeteDevis = myPDO::getInstance()->prepare(<<<SQL 
      SELECT SC_libelle, ETP_libelle, DVS_numDevis, DVS_libelle, DVS_montant, DVS_statut, DVS_pourcent, DVS_montant, 
      USR_Nom, USR_Prenom, CTC_Nom, CTC_Prenom, ctc.idContact, DVS_date 
      FROM Utilisateur usr, Devis dvs, SiteClient sc, Client clt, Contact ctc, Entreprise etp 
      WHERE usr.idEntreprise = etp.idEntreprise 
      AND usr.idUtilisateur = dvs.idUtilisateur 
      AND dvs.idSiteClient = sc.idSiteClient 
      AND sc.idClient = clt.idClient 
      AND dvs.idContact = ctc.idContact 
      AND dvs.DVS_statut = ? 
SQL 
); 



    $requeteDevis->execute(array($stat)); 
} 
    else if ...... 

那麼,你認爲有什麼辦法只有一個sql語句?否則,它將結束,我將有50分的人:/

感謝

+0

還請根據條件顯示你將如何處理你的sql代碼,以便我們在你的代碼 – Rizier123

+0

中看到完整的邏輯/模式,它只是增加/刪除了一個參數函數 – xNeyte

回答

0

我必須找到如何管理:

下面是代碼:

if(empty($_GET['s'])) { 
      $state = null; 
     } else $state = $_GET['s']; 

     if(empty($_GET['q'])) { 
      $client = null; 
     } else $client = $_GET['q']; 


     $requeteDevis = myPDO::getInstance()->prepare(<<<SQL 
      SELECT SC_libelle, ETP_libelle, DVS_numDevis, DVS_libelle, DVS_montant, DVS_statut, DVS_pourcent, DVS_montant, 
      USR_Nom, USR_Prenom, CTC_Nom, CTC_Prenom, ctc.idContact, DVS_date 
      FROM Utilisateur usr, Devis dvs, SiteClient sc, Client clt, Contact ctc, Entreprise etp 
      WHERE usr.idEntreprise = etp.idEntreprise 
      AND usr.idUtilisateur = dvs.idUtilisateur 
      AND dvs.idSiteClient = sc.idSiteClient 
      AND sc.idClient = clt.idClient 
      AND dvs.idContact = ctc.idContact 
      AND (dvs.DVS_statut = :statut OR :statut is null) 
      AND (clt.CLT_libelle = :client OR :client is null) 
SQL 
); 

     $requeteDevis->execute(array(":statut" => $state, 
            ":client" => $client)); 
只有

所以一個請求,您可以管理每個過濾器。謝謝你的幫助

0
$cond1 = ''; 
$cond2 = ''; 
$cond3 = ''; 
$var = 2; 
if(1==2){ 
$cond1 = ' AND column1>20'; 
} 
if(3==3){ 
$cond2 = ' AND column2 < '.$var; 
} 
$cond3 = ' ORDER BY id DESC'; 
$baseSQL = "SELECT * FROM table WHERE 1=1 $cond1 $cond2 $cont3";