Problème d'affichage sur 2 requette

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

j'ai un problème d'affichage sur 2 requettes les donnée quel me renvoit ne sont pas complete

voilà le resultat que sa me met :


Pays_____Prestataire____V G_________Commandes____C.A___________Mmc
_______________________100683_______11512________571055 euro___49.61
________1st____________829__________11___________1459 euro_____ 132.64
________adc____________119
________adw ___________23232
________aff____________212776
________bly____________8_____________23__________1879 euro_______81.68
________cm_____________222
________him____________2073
________StV____________1399
________tes ___________1
________xxx____________9 



et j'ai eu ce résultat avec ce code:

<?php include("application_top.php");?>
<html>
<head>
</head>
<body>
	<table border="1">
		<tr style="text-align: center; background-color:#FFAD5B; font-weight:bold;">
			<th> Pays </th>
 <th> Prestataire </th>
			<th> V G </th>
			<th> Commandes </th>
 <th> C.A </th>
 <th> Mmc </th>
		</tr>
<?php
	// REQUETE 1 : 
	$query = "SELECT substr(customers_from, 1, 3) AS Origin, 
 COUNT(*) AS effectif_vg
FROM customers 

GROUP BY Origin ";
	$result_vg = mysql_query($query) ;
	
	

					
	
while ($row = mysql_fetch_array($result_vg)) 
{ 
?>
<tr>
			<td style="background-color:#CCCCCC;"> </td>
 <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
			
				
				
<?php
				// REQUETE 2 : 		
			$query_produit = 
					" SELECT substr(customers_from, 1, 3) 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 
						WHERE co.commandes_status='1' 
						and customers_from='".$row['Origin']."'
						GROUP BY Origin ";
							
							$result = mysql_query($query_produit) ;	
					
	while ($row = mysql_fetch_array($result)) 
	{ 
					
?>
	 
				 <td style="text-align:center;"> <?php echo $row['command'] ?> </td>
			 <td style="text-align:center;"> <?php echo round($row['command']*$row['Mmc']) ?> euro </td>
 <td style="text-align:center;"> <?php echo round($row['Mmc'] ,2) ?> </td>
 
	
<?php
} 	
	}
?>
</table>
</body>
</html>



donc si quelqu'un arrive a voir l'erreur ce serai cool car la j'en peu plus merci
Configuration: Windows XP
Firefox 3.0.10

10 réponses

  1. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour Siniper,

    Je n'ai pas testé ma réponse, mais je dirais à première vue que le fait d'utiliser deux fois la même variable $row dans deux boucles while différentes n'est pas la meilleure solution. J'essayerai de remplacer dans la deuxième boucle while la variable $row par $row1 ainsi que dans les lignes suivantes.

    A plus
    0
  2. sinifer Messages postés 323 Statut Membre 11
     
    Je te remerci christounet

    Mais j'avais déjà essayé $row1 d'ailleur je sai pas pourquoi je l'avai pas arrangé mais c'est pas sa le problème

    Merci en tous cas de t'être penché dessu
    0
  3. sinifer Messages postés 323 Statut Membre 11
     
    après avoir modifié mon code j'ai toujours un problème sa me sort que 3 ligne alors que je devrai en avoir minimum 5

    <?php
    	
    	// REQUETE 1 : 
    	$query = "SELECT substr(customers_from, 1, 3) AS Origin, 
           COUNT(*) AS effectif_vg
    FROM customers 
    
    GROUP BY Origin ";
    	$result_vg = mysql_query($query) ;
    		
    	
     
    while ($row = mysql_fetch_array($result_vg)) 
    {  
    
     	// REQUETE 2 : 		
    			$query_produit = 
    					" SELECT substr(customers_from, 1, 3) 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 
    						WHERE co.commandes_status='1' 
    						and  customers_from='".$row['Origin']."'
    						GROUP BY Origin ";
    							
    							$result = mysql_query($query_produit) ;	
    				
    	while ($row1 = mysql_fetch_array($result)) 
    	{	
    					
    ?>
    	 <tr>
    			<td style="background-color:#CCCCCC;">  </td>
                <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
    				 <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
    			 <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?> euro </td>
                 <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?> </td>
                    
    	</tr>
    <?php
    } 	
    	}
    
    ?>
    0
  4. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,

    Peux-tu rajouter le code suivant après la première instruction mysql_query
    $num_rows = mysql_num_rows($result_vg);
    echo "$num_rows Rows\n";

    et le code suivant après la deuxième
    $num_rows1 = mysql_num_rows($result);
    echo "$num_rows1 Rows\n";

    Ceci devrait te donner le nombre de lignes de chaque requête et pourra peut-être nous aider à trouver le problème.
    A plus
    0
    1. sinifer Messages postés 323 Statut Membre 11
       
      Merci

      donc après avoirs effectué les différentes modiffication et ajouté ce que tu ma dit de faire

      <?php
      	
      	// REQUETE 1 : 
      	$query = "SELECT substr(customers_from, 1, 3) AS Origin, 
             COUNT(*) AS effectif_vg
      FROM customers 
      
      GROUP BY Origin ";
      	$result_vg = mysql_query($query) ;
      		
      	$num_rows = mysql_num_rows($result_vg);
      echo "$num_rows Rows1\n";
       
      while ($row = mysql_fetch_array($result_vg)) 
      {  
      
       
      	// REQUETE 2 : 		
      			$query_produit = 
      					" SELECT substr(customers_from, 1, 3) 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 
      						WHERE co.commandes_status='1' 
      						and  customers_from='".$row['Origin']."'
      						GROUP BY Origin ";
      							
      							$result = mysql_query($query_produit) ;	
      							
      				$num_rows1 = mysql_num_rows($result);
      echo "$num_rows1 Rows2\n";
      
      	while ($row1 = mysql_fetch_array($result)) 
      	{	
      					
      ?>
      	 <tr>
      			<td style="background-color:#CCCCCC;">  </td>
                  <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
      			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
      				 <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
      			 <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?> euro </td>
                   <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?> </td>
                      
      	</tr>
      <?php
      } 	
      	}
      
      ?>
      


      j'ai obtenu le résultat suivant

      12 Rows1 1 Rows2 1 Rows2 0 Rows2 0 Rows2 0 Rows2 1 Rows2 0 Rows2 0 Rows2 0 Rows2 0 Rows2 0 Rows2 0 Rows2
      Pays 	Prestataire 	V G 	Commandes 	C.A 	Mmc
      		________100832 	11532 	573017 euro 	49.69
      	1st __________855 	11 	1459 euro 	132.64
      	bly __________8 	23 	1879 euro 	81.68 
      
      
      


      et normalement je dois avoir 7 lignes
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,

    Ok, la première requête te trouve donc 12 lignes, ensuite la deuxième requête trouve une ligne pour la 1ère, 2ème et 6ème ligne, cela voudrait dire que pour les autres lignes, la deuxième requête ne trouve pas de données dans la table commandes soit parce il n'existe pas de lignes avec le même customer_id ou bien aucune ligne pour ce customer_id n'a de ligne où commande_status égale à 1 (c'est que ce tu peux voir dans les résultats de ton premier post).

    Est-tu sur que tu devrais avoir au minimum 5 lignes ? (tu peux peut-être inclure dans ta réponse quelques lignes de ta table commande que tu penses devoir être retournées par ta deuxième requête).

    A plus
    0
    1. sinifer Messages postés 323 Statut Membre 11
       
      Merci

      voilà ce que sa me sort sur easyphp quant j'execute ma deuxième requette

      Origin 	effectif 	command 	Mmc
        	7525 	11317 	49.22652646
      1st 	57 	71 	89.15422535
      adc 	1 	1 	79.00000000
      adw 	1950 	2927 	58.41648446
      aff 	14349 	22406 	57.93342185
      bly 	1 	22 	84.71363636
      him 	120 	196 	58.32066327
      StV 	76 	109 	62.64954128
      xxx 	1 	2 	29.00000000
      
      
      0
  7. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,

    Peux-tu exécuter la requête suivante sur ta table commande et inclure le résultat dans ta réponse
    SELECT substr(cu.customers_from, 1, 3) AS Origin,
    cu.customers_id AS Client,
    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 
    WHERE co.commandes_status = '1'
    GROUP BY Origin , Client
    

    Ceci devrait me permettre de vérifier que tu n'as pas différents customers_id pour les mêmes trois premiers caractères de customer_from.
    A plus
    0
    1. sinifer Messages postés 323 Statut Membre 11
       
      voilà les résultats que sa me donnes:

      Origin 	Client 	command 	Mmc
      __________6 	1 	29.00000000
        	62 	1 	79.00000000
        	71 	1 	49.00000000
        	72 	1 	79.00000000
        	81 	1 	79.00000000
        	87 	1 	19.95000000
        	94 	1 	19.95000000
        	102 	3 	32.96666667
        	123 	1 	49.00000000
        	128 	1 	14.95000000
        	131 	1 	49.00000000
        	140 	1 	19.00000000
        	142 	1 	9.00000000
        	146 	1 	39.00000000
        	156 	2 	24.47500000
        	159 	1 	19.95000000
        	173 	1 	49.00000000
        	174 	1 	79.00000000
        	185 	2 	229.00000000
      adw 	217856 	2 	49.00000000
      adw 	217934 	1 	14.95000000
      adw 	218060 	1 	79.00000000
      adw 	218358 	1 	79.00000000
      adw 	218534 	1 	9.00000000
      adw 	218934 	7 	35.52857143
      adw 	219298 	2 	79.00000000
      adw 	219368 	1 	79.00000000
      adw 	219736 	1 	9.00000000
      adw 	219806 	2 	11.97500000
      adw 	219867 	1 	79.00000000
      

      il y a plusieur page comme sa
      0
  8. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,
    Je crois que j'ai trouvé, dans ta deuxième requête tu as le code suivant:
    and  customers_from='".$row['Origin']."'

    or dans ta première requête tu ne prends que les trois premiers caractères de customers_from, le code ne devrait-il pas être
    and  substr(customers_from , 1 , 3) ='".$row['Origin']."'


    A plus
    0
    1. sinifer Messages postés 323 Statut Membre 11
       
      je suis sur que t'es une princesse toi

      En tous cas mille merci
      et un
      Excellent week-hend
      0
      1. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393 > sinifer Messages postés 323 Statut Membre
         
        Bonjour,

        Non, tu verras dans mon profil que je suis un homme (;-)) et puis t'aider était fait avec plaisir.
        Passe également un excellent weekend et n'oublie pas d'indiquer que ton problème est résolu.
        A plus
        0
  9. sinifer Messages postés 323 Statut Membre 11
     
    :( hello Christounet

    désolé je m'étais réjouis un peu trop vite et excuse moi pour t'avoir dis princess j'ai mis deux s de trop a la fin.

    voilà mon affichage est bon merci mais mon problème c'est que sa doit m'affiché sa:

    Partenaire  	Nb de leads  	Nb de commandes  	Tx conv.  	CA  	MMC
    n/a 	5271 	234 	4.44 	22676 € 	96.91
    1st 	259 	12 	4.63 	1558 € 	129.83
    adc 	82 	2 	2.44 	138 € 	69
    adw 	2258 	122 	5.4 	11408 € 	93.51
    aff 	6211 	288 	4.64 	25202 € 	87.51
    cm_ 	2 	0 	0 	0 € 	0
    StV 	11 	0 	0 	0 € 	0
    


    et chez moi sa n'affiche que:
    Pays  	 Prestataire  	 V G  	 Commandes  	 C.A  	 Mmc
    		5271 	234 	22676 euro 	96.91
    	1st 	259 	12 	1558 euro 	129.83
    	adc 	82 	2 	138 euro 	69
    	adw 	2258 	122 	11408 euro 	93.51
    	aff 	6211 	288 	25202 euro 	87.51 
    


    donc on peut constaté que quand on a pas de commande on affiche rien??
    j'ai essayer je me suis acharné a modifier ma requete pour que sa marche mais rien a faire

    et comme je sais que tu es un prince ;) tu pourrai me donner un coup de main
    0
  10. sinifer Messages postés 323 Statut Membre 11
     
    hello a croire qu'en t'envoyan ce message du ma donné des hondes positif qui ma fai solutionné mon problème j'ai finalement réussi.

    mais a chaque solution ce pose un autre problème qui est que si je met aucune date il y a rien qui s'affiche
    alors qu'ils pren aucune donné il devrai tou me mettre???

    je comprend pas?

    sinon ma requette je l'ai modifier comme celà:
    $query_produit = 
    					" SELECT 
    					   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 
    						WHERE " . $condition . " and co.commandes_status='1'
    						and   customers_from LIKE '{$row['Origin']}%'
    						 ";
    
    0
  11. sinifer Messages postés 323 Statut Membre 11
     
    c'est tous bon je te remerci pour tou bonne journée
    0