classement apres calcul

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : classement apres calcul

par Ajoloca » 07 déc. 2006, 21:01

Re,

Avec un petit [Résolu] c'est parfait!

par jp.bond » 07 déc. 2006, 20:14

ok j'ai trouvé grâce à ton lien et à un peu de torturage de cerveau :

1/ attribution à la volée des valeurs dans 2 tableaux provisoires
2/ tri de ces tableaux en fonction de ma valeur de classement ($fpc)
3/ affichage HTML dans l'ordre croissant des valeurs triées

voila le code qui cette fois ci fonctionne comme je voulais :
		// indice classment
		$i=0;
		$j=0;
		
		$l_base = eco_connect();
		$requete = "SELECT * FROM 2007_ecoles ORDER BY nom_ecole";
		  
		$resultat = eco_query($l_base,$requete);
		eco_close($l_base);
		while ($enregistrement = mysql_fetch_array( $resultat ))
		{
			// je remets le compteur à 0
			$fpc=0;
			
			$l_base1 = eco_connect();
			$requete1 = "SELECT * FROM 2007_ecoles_membres WHERE id_ecole = '$enregistrement[id]'";
			  
			$resultat1 = eco_query($l_base1,$requete1);
			eco_close($l_base1);
			while ($enregistrement1 = mysql_fetch_array( $resultat1 ))
			{
				$fpc++;
			}
			// j'inscris le total des FPC vendus par cette ecole dans un tableau
			$total_fpc[$j] = $fpc;
			$ecole[$j] = $enregistrement['nom_ecole'];
			$j++;
			
		}


		// je tri le tableau dans l'ordre croissant des total_fpc
		arsort($total_fpc);
		// j'affiche ce tableau et l'ecole correspondant en fonction de l'indice
		while(list($cle, $val) = each($total_fpc))
		{
			$i++;
			echo '
				  <tr>
					<td><div align="center">'.$i.'</div></td>
					<td class="general"><div align="left">'.strtoupper($ecole[$cle]).'</div></td>
				  </tr>
			';
		}
		
MERCI !!!

par Ajoloca » 07 déc. 2006, 16:01

Re,

Ceci devrait pouvoir t'aider.

Si tu as des difficultés, n'hesite pas à revenir avec le nouveau code.

par jp.bond » 07 déc. 2006, 15:43

oui voila...c'est ca que je ne sais pas faire...arg !
tu ne sais pas où je pourrais trouver un exemple ?

merci de ton aide

par Ajoloca » 07 déc. 2006, 15:16

merci de ta reponse mais cette methode ne s'applique pas ici car le classement devrait s'appliquer sur une valeur qui n'est pas encore calculée au moment de la requete à la base de donnée...d'où mes problemes de classement justement...et mon idée d'utiliser un tableau provisoire...
Dans ce cas tu devras construire ton tableau PHP, le trier et afficher tan tableau HTML après avec les valeurs du tableau PHP.

par jp.bond » 07 déc. 2006, 15:03

merci de ta reponse mais cette methode ne s'applique pas ici car le classement devrait s'appliquer sur une valeur qui n'est pas encore calculée au moment de la requete à la base de donnée...d'où mes problemes de classement justement...et mon idée d'utiliser un tableau provisoire...

par Ajoloca » 07 déc. 2006, 14:55

Bonjour,

Dans tes requêtes utilises la clause "ORDER BY nom_du_champ DESC".

Ça te donnera tes enregistrements classés du plus grand au plus petit.

classement apres calcul

par jp.bond » 07 déc. 2006, 14:38

bonjour,

j'ai besoin d'afficher un classement suite à une serie de calculs entre des valeurs de champs.
Je crois que la chose à faire c'est un tableau provisoire...enfin je crois. Mais je ne sais pas comment ca fonctionne.

pour vous expliquer en vitesse, j'ai des personnes qui achetent un pass. Tous les 7 achats, ils en ont un offert.
Je voudrais afficher le classement de ceux qui en ont le plus vendus.

Pour l'instant, j'arrive à afficher la liste des personnes avec sur la meme ligne le nombre de pass vendus, le nombre de pass offerts, et le nombre de pass à vendre avant d'atteindre un nouveau pass offert.
Voila le code du tableau :
		$l_base = eco_connect();
		$requete = "SELECT * FROM 2007_ecoles ORDER BY nom_ecole";
		  
		$resultat = eco_query($l_base,$requete);
		eco_close($l_base);
		while ($enregistrement = mysql_fetch_array( $resultat ))
		{
			echo '
			  <tr>
				<td class="general"><div align="left">'.strtoupper($enregistrement['nom_ecole']).'</div></td>
			';
					// je remets le compteur à 0
					$fpc=0;
					
					$l_base1 = eco_connect();
					$requete1 = "SELECT * FROM 2007_ecoles_membres WHERE id_ecole = '$enregistrement[id]'";
					  
					$resultat1 = eco_query($l_base1,$requete1);
					eco_close($l_base1);
					while ($enregistrement1 = mysql_fetch_array( $resultat1 ))
					{
						$fpc++;
					}
			echo '
				<td><div align="center">'.$fpc.'</div></td>
				';
				// je calcule le nombre de full pass classic gagnés
				$fpc_gain = intval(abs($fpc/7));
				// je calcule la tranche de full pass classic atteinte
				$tranche_fpc = 7*$fpc_gain;
				// je calcule le nbre de full pass classic acheté en plus de la tranche
				$plus_fpc = $fpc - $tranche_fpc;
				// je calcule le nombre de full pass classic restant à acheté pour atteindre la nouvelle tranche (un offert)
				$reste_fpc = 7 - $plus_fpc;
			echo '
				<td><div align="center">'.$fpc_gain.'</div></td>
				<td><div align="center">encore '.$reste_fpc.' </div></td>
			  </tr>
		  ';
		}

La seule chose que je voudrais c'est classer ces personnes à l'affichage du tableau, du meilleur vendeur au moins bon...pour qu'ils se tirent un peu la bourre...

merci de votre aide !

jp