Trier une liste en PHP

WRInaute occasionnel
Bonjour, le code ci dessous me donne une liste de mes membres, avec leurs ID, leur email, et leur nombre de filleuls (ref). Je voudrai trier cette liste par nombre de filleuls. Comment faire? Merci.

Code:
<?
include("header.inc.php");

?>
          </strong>Liste des membres class&eacute; par parrain</u></span><br>
          <table width="88%" height="32" border="1" align="center" bordercolor="#000000" bgcolor="#FFFFFF">
<tr><td width="9%" class=Style1>
<center class=Style1 >ID</center></td><td width="20%" class=Style1>
<center class=Style1 >E-mail</center></td><td width="17%" class=Style1>
<center class=Style1 >Ref
<? $result = mysql_query("SELECT name, id, email, url, points, views, hits, savepoints FROM `demo_a_accounts`");
  while ($myrow = mysql_fetch_row($result)){
$direkt = mysql_num_rows(mysql_query("SELECT id FROM `demo_a_accounts` WHERE `refererid` = '$myrow[1]'"));
if ($myrow[7] == 1) {$sparen = "oui";} else {$sparen = "non";};
  $resultb = mysql_query("SELECT name, id, email, url, points, views, hits FROM `demo_a_accounts`  WHERE id='$myrow[1]'");
  while ($myrowb = mysql_fetch_row($resultb)) {
  echo"
<TR>
<td class=Style1><center class=Style1 ><b> $myrow[1] </b></TD>
<td class=Style1><center class=Style46 ><b><A href=mailto:$myrow[2]>E-mail</a></b></A></TD>
<td class=Style1><center class=Style1 ><b>Refs: $direkt </b></TD>";
};
};
?>
 
WRInaute accro
Coucou,

le schéma de la table demo_a_accounts serait un plus stp.
Et si tu avais ajouté davantage de variables ton code serait un peu plus lisible mais là n'est pas la question... :wink:

Commence par calculer le nombre_total_filleul par id membre et ensuite tu fais un order by nombre_total_filleul ??
 
WRInaute occasionnel
Voici le schéma de la table :
copie.jpg

Commence par calculer le nombre_total_filleul par id membre
Comment faire? Merci.
 
WRInaute discret
Alors essaye de remplacer ca

Code:
$result = mysql_query("SELECT name, id, email, url, points, views, hits, savepoints FROM `demo_a_accounts`");

par

Code:
$result = mysql_query("SELECT name, id, email, url, points, views, hits, savepoints FROM `demo_a_accounts` ORDER BY ref DESC");

en esperant que ce soit cela
 
WRInaute discret
arf la bourde ref n'existe pas dans ta table!
Remplace le par refererid
(du moins je pense que c'est le champs du nombre de filleul)
 
WRInaute accro
Je pense qu'il faut chercher dans une requête SQL de ce genre :
Code:
SELECT COUNT( DISTINCT D.refererid ), E.id  FROM demo_a_accounts D, demo_a_accounts E WHERE D.refererid = E.id GROUP BY E.refererid ORDER BY E.id
??

Ou, si la requête est fausse, en gros l'idée c'est de faire une jointure sur la même table,
de grouper par refererid (GROUP BY),
de compter les rereferid
et ensuite de les ordonner (ORDER BY)

mais c'est une idée de lessivée à 1h du mat' lol
 
WRInaute occasionnel
J'ai essayé pas mal de possibilitées en vain. Voilà le CODE :
Code:
<?
include("header.inc.php");

?>
<? $result = mysql_query("SELECT name, id, email FROM `demo_a_accounts`");
   while ($myrow = mysql_fetch_row($result)){
$direkt = mysql_num_rows(mysql_query("SELECT id FROM `demo_a_accounts` WHERE `refererid` = '$myrow[1]'"));
   echo"
Affichage des valeurs
};
?>

N'arrivant toujours pas à trier par "Ref", je pensais à ceci :
->Créer une nouvelle valeur "nbref" dans demo_a_accounts
->Stocker dans cette valeur le nombre de filleuls par membre "$direkt"
->Et après prendre dans demo_a_accounts les valeur ID email, nbref, les lister et trier par nbref.
Qu'en pensez-vous? Est-ce réalisable?
Merci.
 
Discussions similaires
Haut