Problème d'imbrication if pour ma requete

Résolu
sinifer Messages postés 323 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

j'ai un problème avec ce code je vois pas l'erreur??
J'esseil de récupérer une date et avec cette date j'affiche les différent éléments dont j'ai besoin mais sa marche pas :( si vous pouvez me donner votre avis ce serait gentille merci car j'arrive pas a trouvé mon erreur je pense que j'ai du fair une erreur dans le if??

if (isset($date_du) && isset($date_au)) {
		
		$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
								   COUNT(*) AS effectif_vg
									FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
									WHERE customers_client='0' 
									AND customers_emv='0' 
									AND customers_seance ='0' 
									AND relances_gratuites_inscription_date>='" . $date_du . "' and  relances_gratuites_inscription_date<='" . $date_au . "'
									GROUP BY Origin "); 
		
									and 
		
	     $query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
							   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
							   AVG(co.commandes_montant) AS Mmc 
								FROM customers cu
								INNER JOIN commandes co 
								ON cu.customers_id=co.customers_id 
								INNER JOIN relances_gratuites rg 
								ON cu.customers_id=rg.customers_id  
								WHERE co.commandes_status='1' 
								AND rg.relances_gratuites_inscription_date>='" . $date_du . "' AND  rg.relances_gratuites_inscription_date<='" . $date_au . "'  
								GROUP BY Origin ";
		
	} else if (isset($date_du) && $date_du != '') {
		$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
								   COUNT(*) AS effectif_vg
									FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
									WHERE customers_client='0' 
									AND customers_emv='0' 
									AND customers_seance ='0' 
									AND relances_gratuites_inscription_date>='" . $date_du . "' 
									GROUP BY Origin "); 
										
										and
										
		$query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
							   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
							   AVG(co.commandes_montant) AS Mmc 
								FROM customers cu
								INNER JOIN commandes co 
								ON cu.customers_id=co.customers_id 
								INNER JOIN relances_gratuites rg 
								ON cu.customers_id=rg.customers_id  
								WHERE co.commandes_status='1' 
								AND rg.relances_gratuites_inscription_date>='" . $date_du . "'   
								GROUP BY Origin");
	}
	
	else (isset($date_au) && $date_au != '') {
		$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
								   COUNT(*) AS effectif_vg
									FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
									WHERE customers_client='0' 
									AND customers_emv='0' 
									AND customers_seance ='0' 
									AND relances_gratuites_inscription_date>='" . $date_au . "' 
									GROUP BY Origin "); 
										
										and
										
		$query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
							   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
							   AVG(co.commandes_montant) AS Mmc 
								FROM customers cu
								INNER JOIN commandes co 
								ON cu.customers_id=co.customers_id 
								INNER JOIN relances_gratuites rg 
								ON cu.customers_id=rg.customers_id  
								WHERE co.commandes_status='1' 
								AND rg.relances_gratuites_inscription_date>='" . $date_au . "'   
								GROUP BY Origin");
	}
	
Configuration: Windows XP
Firefox 3.0.10

4 réponses

  1. Utilisateur anonyme
     
    ton code n'est pas du tout logique je trouve mais bon ...

    essaye ça

    <?php
    	if (isset($date_du) && isset($date_au)) 
    	{
    		
    		$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
    								   COUNT(*) AS effectif_vg
    									FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
    									WHERE customers_client='0' 
    									AND customers_emv='0' 
    									AND customers_seance ='0' 
    									AND relances_gratuites_inscription_date>='" . $date_du . "' and  relances_gratuites_inscription_date<='" . $date_au . "'
    									GROUP BY Origin "); 
    
    	     $query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
    							   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
    							   AVG(co.commandes_montant) AS Mmc 
    								FROM customers cu
    								INNER JOIN commandes co 
    								ON cu.customers_id=co.customers_id 
    								INNER JOIN relances_gratuites rg 
    								ON cu.customers_id=rg.customers_id  
    								WHERE co.commandes_status='1' 
    								AND rg.relances_gratuites_inscription_date>='" . $date_du . "' AND  rg.relances_gratuites_inscription_date<='" . $date_au . "'  
    								GROUP BY Origin ";
    								
    		if (isset($date_du) && $date_du != '') 
    		{
    			$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
    									   COUNT(*) AS effectif_vg
    										FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
    										WHERE customers_client='0' 
    										AND customers_emv='0' 
    										AND customers_seance ='0' 
    										AND relances_gratuites_inscription_date>='" . $date_du . "' 
    										GROUP BY Origin "); 
    			$query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
    								   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
    								   AVG(co.commandes_montant) AS Mmc 
    									FROM customers cu
    									INNER JOIN commandes co 
    									ON cu.customers_id=co.customers_id 
    									INNER JOIN relances_gratuites rg 
    									ON cu.customers_id=rg.customers_id  
    									WHERE co.commandes_status='1' 
    									AND rg.relances_gratuites_inscription_date>='" . $date_du . "'   
    									GROUP BY Origin");
    		}
    		
    		if(isset($date_au) && $date_au != '') 
    		{
    			$query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin, 
    									   COUNT(*) AS effectif_vg
    										FROM customers  inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id 
    										WHERE customers_client='0' 
    										AND customers_emv='0' 
    										AND customers_seance ='0' 
    										AND relances_gratuites_inscription_date>='" . $date_au . "' 
    										GROUP BY Origin "); 
    			$query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin, 
    								   COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
    								   AVG(co.commandes_montant) AS Mmc 
    									FROM customers cu
    									INNER JOIN commandes co 
    									ON cu.customers_id=co.customers_id 
    									INNER JOIN relances_gratuites rg 
    									ON cu.customers_id=rg.customers_id  
    									WHERE co.commandes_status='1' 
    									AND rg.relances_gratuites_inscription_date>='" . $date_au . "'   
    									GROUP BY Origin");
    		}
    	}
    ?>
    
    0
  2. sinifer Messages postés 323 Statut Membre 11
     
    Merci,

    Je sais qu'il est pas des plus logique mais si ta une piste ce serait gentile et merci pour le bout de code que tu vien de me donné par contre a la place de if je devrai pas mettre des else if et else???
    0
  3. sinifer Messages postés 323 Statut Membre 11
     
    Merci Dante-33,

    Mais je comprend pas pourquoi avec des if sa marche et pas avec des else if ??
    0
    1. Utilisateur anonyme
       
      En français ca donne ->

      dans ta version :

      Si la variable $date_du est définie et si la variable $date_au est définie
      // c'est là ou est l'erreur car on rentrera toujours dans ce cas
      on fait une action
      sinon si la variable $date_du est définie
      // c'est là ou est l'erreur car on rentrera jamais dans ce cas
      on fait une autre action
      sinon si la variable $date_au est définie
      // c'est là ou est l'erreur car on rentrera jamais dans ce cas
      on fait une dernière action

      dans ma version :

      Si la variable $date_du est définie et si la variable $date_au est définie alors
      si la variable $date_du est définie
      on fait une autre action
      si la variable $date_au est définie
      on fait une dernière action
      0
  4. sinifer Messages postés 323 Statut Membre 11
     
    pour ceu que sa intéresserai

     $condition = "";
       
          if (isset($date_du) && !empty($date_du)) {
                $condition .= " AND rg.relances_gratuites_inscription_date>='" . $date_du . "' ";
             }
       
          if (isset($date_au) && !empty($date_au)) {
                 $condition .= " AND rg.relances_gratuites_inscription_date<='" . $date_au . "' ";
            }
       
          $query_vg = mysql_query("SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin,
                                  COUNT(*) AS effectif_vg
                                   FROM customers c inner join relances_gratuites rg on c.customers_id=rg.customers_id
                                   WHERE customers_client='0'
                                   AND customers_emv='0'
                                   AND customers_seance ='0'
                                   " . $condition . "                        
                                   GROUP BY Origin " );
     
        
          $query = mysql_query("SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin,
                                  COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
                                  AVG(co.commandes_montant) AS Mmc
                                   FROM customers cu
                                   INNER JOIN commandes co
                                   ON cu.customers_id=co.customers_id
                                   INNER JOIN relances_gratuites rg
                                   ON cu.customers_id=rg.customers_id
                                   WHERE co.commandes_status='1'
                                   " . $condition . "
                                  GROUP BY Origin " );
    
    0