Nombre d'élement

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 : Nombre d'élement

par Dexion » 20 févr. 2007, 13:06

Et que ne le disais tu plus tot que c'était bon ?! :)
Désoler, j'étais dans mon truc j'y ai pas penser :(
Bon alors aucune idée si cela fonctionne, mais tu peux toujours essayer un

Code : Tout sélectionner

SELECT fu, MAX(COUNT(*)) AS nb FROM membres GROUP BY fu
pour avoir le count max :)
Non sa ne marche pas, sa ne me renvoie rien du tous ( page blanche ).
Sinon dans le while il te suffit de stocker le résultat dans une valeur temporaire que tu écrases chaque fois qu'un résultat est plus grand :
$fu = '';
$nb = 0;
while ($row = mysql_fetch_array($rs)) {  
  // echo $row['fu'] . '=>' .$row['nb'] .'<br>';  
  if($nb < $row['nb']) {
    $fu = $row['fu'];
    $nb = $row['nb'];
  }
}
echo "Le max est de ".$nb." pour ".$fu;
Youhouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu !!!! cette fois-ci c'est la bonne !!! sa marche !! Merci de m'avoir aider ! je vous ai.... :oops:
( :D )

par Ryle » 20 févr. 2007, 12:53

Et que ne le disais tu plus tot que c'était bon ?! :)

Bon alors aucune idée si cela fonctionne, mais tu peux toujours essayer un

Code : Tout sélectionner

SELECT fu, MAX(COUNT(*)) AS nb FROM membres GROUP BY fu
pour avoir le count max :)


Sinon dans le while il te suffit de stocker le résultat dans une valeur temporaire que tu écrases chaque fois qu'un résultat est plus grand :
$fu = '';
$nb = 0;
while ($row = mysql_fetch_array($rs)) {  
  // echo $row['fu'] . '=>' .$row['nb'] .'<br>';  
  if($nb < $row['nb']) {
    $fu = $row['fu'];
    $nb = $row['nb'];
  }
}
echo "Le max est de ".$nb." pour ".$fu;

par Dexion » 20 févr. 2007, 12:37

Je comprends pas bien que la requête dans mysql te donne

Code : Tout sélectionner

FU nb FU +2 4 FU +1 2 FU +3 1
et que la lecture par php puisse de donner des valeurs et un ordre différent.... :-k
Non, Non c'est que pour faire des test j'ai modifié les valeur, ta requête est les valeurs sont tout à fais bonne j'ai ses chiffres là dans ma base de donnée !!

mais maintenant faudrais que je puisse lui dire que je veux extraire le chiffre le plus gros du tableau ^^ enfin je pense que c'est comme ça qu'il faut faire.

Ps : sur mysql sa me donne bien :

Code : Tout sélectionner

fu nb FU +1 1 FU +2 2

par Ryle » 20 févr. 2007, 12:36

Je comprends pas bien que la requête dans mysql te donne

Code : Tout sélectionner

FU nb FU +2 4 FU +1 2 FU +3 1
et que la lecture par php puisse de donner des valeurs et un ordre différent.... :-k

par Dexion » 20 févr. 2007, 12:25

Heu oui sa me donne :

Code : Tout sélectionner

FU +1=>1 FU +2=>2

par Ryle » 20 févr. 2007, 12:23

Et ça ? tu l'as essayé ? qu'est ce que ca te donne ?
$rs = mysql_query("SELECT fu, COUNT(*) AS nb FROM membres GROUP BY fu") or die($erreur=mysql_error()); 
while ($row = mysql_fetch_array($rs)) { 
  echo $row['fu'] . '=>' .$row['nb'] .'<br>'; 
}
@Albat : je l'ai mis sous clé.. on sait jamais, tu pourrais te blesser ;)

par Dexion » 20 févr. 2007, 12:19

//////////////////////////////////////////////////
// TEST POUR LE NOMBRE DE FU POUR CHAQUE FU//
/////////////////////////////////////////////////

//Compter le nombre de FU 1
$req1 = "SELECT count(*) FROM membres FU where FU='FU +1'"; 
$res1 = mysql_query($req1) or die(); 
$nb_FU1 = mysql_result($res1, 0); 

//Compter le nombre de FU2
$req2 = "SELECT count(*) FROM membres FU where FU='FU +2'"; 
$res2 = mysql_query($req2) or die(); 
$nb_FU2 = mysql_result($res2, 0); 

//Compter le nombre de FU3
$req3 = "SELECT count(*) FROM membres FU where FU='FU +3'"; 
$res3 = mysql_query($req3) or die(); 
$nb_FU3 = mysql_result($res3, 0); 

if (($nb_FU1 >= $nb_FU2) and ($nb_FU1 >= $nb_FU3)) {
$max_nb = $nb_FU1;
}

if (($nb_FU2 >= $nb_FU1) and ($nb_FU2 >= $nb_FU3)) {
$max_nb = $nb_FU2;
}

if (($nb_FU3 >= $nb_FU1 )and  ($nb_FU3 >= $nb_FU2)) {
$max_nb = $nb_FU3;
}

Voilà ce que j'ai du faire pour afficher un malheureux nombre :twisted: :twisted:

par albat » 20 févr. 2007, 11:46

Sinon tu peux utiliser la solution inneficace de la coccinnelle prétentieuse
Où c'est qu'j'ai mis mon flingue ?... :evil:

par Dexion » 20 févr. 2007, 11:41

Sinon tu peux utiliser la solution inneficace de la coccinnelle prétentieuse en lui ajoutant un "ORDER BY fu" pour avoir tes résultats par ordre croissant de fu ;)
Non sa j'ai déjà essayer sa ne peux pas marcher étant donnée que si j'ai "1" dans fu 1 il va m'afficher le 1 en premier quelle que soit le resultat du fu 2 ou fu 3 ^^

par Ryle » 20 févr. 2007, 11:29

Essaye comme ceci :
$rs = mysql_query("SELECT fu, COUNT(*) AS nb FROM membres GROUP BY fu") or die($erreur=mysql_error()); 
while ($row = mysql_fetch_array($rs)) { 
  echo $row['fu'] . '=>' .$row['nb'] .'<br>'; 
}
Sinon tu peux utiliser la solution inneficace de la coccinnelle prétentieuse en lui ajoutant un "ORDER BY fu" pour avoir tes résultats par ordre croissant de fu ;)

par Dexion » 20 févr. 2007, 11:16

En faite j'ai sortis le champagne un peu trop tôt sa marche sans vraiment marcher :shock:

Quand je fais :

Code : Tout sélectionner

SELECT count(*) FROM membres GROUP BY fu
J'ai comme résultat ( dans la base de donnée ) :

Code : Tout sélectionner

count(*) 2 4 1
Donc en faite il ne me donne pas le nobmre maximum qu'il compte mais il les trie par FU donc sa sera toujours la FU 1 si elle existe en premier

donc j'ai essayer de faire :

Code : Tout sélectionner

SELECT FU, COUNT(*) AS nb FROM membres GROUP BY FU order by nb desc
Quand je regarde le resultat sa me donne bien :

Code : Tout sélectionner

FU nb FU +2 4 FU +1 2 FU +3 1
Donc la il faudrait que je récupère le fameux "nb" mais je vois pas trop comment :?:

par albat » 20 févr. 2007, 10:11

Et, une fois de plus, une écrasante victoire de la coccinelle facétieuse sur le piaf anémique ! \:D/ :langue:

par Dexion » 20 févr. 2007, 09:57

$req = "SELECT count(*) FROM membres GROUP BY fu";
$res = mysql_query($req) or die();
$nb_fu = mysql_result($res, 0);
Génial !! Merci albat c'est exactement ce que je voulais !!

par albat » 20 févr. 2007, 00:37

Et si on essayait de faire simple ?... ;)
$req = "SELECT count(*) FROM membres GROUP BY fu";
$res = mysql_query($req) or die();
$nb_fu = mysql_result($res, 0);

par Dexion » 19 févr. 2007, 22:47

Bah sa me retourne "Array" comme réponse :////