Rechercher : dans
Par :

Problème d'imbrication if pour ma requete

Dernière réponse le 5 mai 2009 à 15:04:32 sinifer, le 4 mai 2009 à 17:04:06 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « problème d'imbrication if pour ma requete » dans :
Google Hacks - Automatiser les requêtes complexes VoirGoogle Hacks est un logiciel open source totalement gratuit qui permet de générer automatiquement des requêtes complexes pour rechercher de la musique, des livres, des programmes, des polices, des vidéos, etc. Google Hacks est une véritable...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...

1

Dante-33, le 4 mai 2009 à 17:10:18

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");
		}
	}
?>
Les gens qui disent que windows est pourri et qui continuent de l'utiliser me font bien rire ...
95 % des erreurs proviennent de ce qu'il y a entre le clavier et la chaise

Répondre à Dante-33

2

sinifer, le 5 mai 2009 à 07:52:31

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???

Répondre à sinifer

3

sinifer, le 5 mai 2009 à 09:37:13

Merci Dante-33,

Mais je comprend pas pourquoi avec des if sa marche et pas avec des else if ??

Répondre à sinifer

5

 Dante-33, le 5 mai 2009 à 15:04:32

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 Les gens qui disent que windows est pourri et qui continuent de l'utiliser me font bien rire ...
95 % des erreurs proviennent de ce qu'il y a entre le clavier et la chaise

Répondre à Dante-33

4

sinifer, le 5 mai 2009 à 14:36:39

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 " );

Répondre à sinifer