PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-01-2010 08:44:08

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Top parrain

Bonjour je voudrais faire un top parrain sur mon site mais j'ai un problem ma base se présente comme ça :
id             login                    ref
1              pierre                   0
2              marc                    1
3              luc                       1
4              valentin                2


voila dans ref il y a l'id du membre qui a parrainé et je voudrais faire un top dans un tableau de cette forme :

$reponse = mysql_query("SELECT login, ref FROM tbl_user ORDER BY ref DESC LIMIT 0, 30");

while ($donnees = mysql_fetch_array($reponse) )
{
?>

<?php echo $donnees['login']; ?><br />
<?php echo $donnees['ref']; ?><br />

<?php
}

Mais comment montrer le total de filleul par parrain il faut que je récupere l'id que je fasse une requete mais comment faire pour le while ?

Hors ligne

#2 21-01-2010 15:51:16

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Top parrain

SELECT login, REF, (SELECT COUNT(id) FROM tbl_users WHERE id=t.REF) AS nbrParains FROM tbl_user AS t ORDER BY REF DESC LIMIT 0, 30

^__^

Hors ligne

#3 21-01-2010 16:30:03

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Top parrain

Saluton,
Une non-équijointure de la table tbl_users, sur elle-même serait moins gourmande sur le serveur.

SELECT t1.login, t1.REF, COUNT(*) AS nbrParains
FROM tbl_users t1
INNER JOIN tbl_users t2
ON t1.id=t2.REF
GROUP BY t1.login
ORDER BY nbrParains DESC LIMIT 0, 30

J'ai modifié la clause de jointure


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 21-01-2010 17:13:20

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

Merci pour vos réponses mais comment je fait pour afficher ? et c'est quoi nbrParrain ?

Dernière modification par madstrix (21-01-2010 17:15:44)

Hors ligne

#5 21-01-2010 18:18:26

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Top parrain

C'est juste Kris. big_smile

nbrParain est le chiffre que tu cherchais à calculer d'après ta question. La requête compte le nombre de filleuil(et non de parain en fait... mal nommée ^^) pour chaque personne.
Ou alors il va te falloir reformuler ta question car je n'ai pas compris.

Hors ligne

#6 21-01-2010 19:23:24

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

ben si je met ça :

$reponse = mysql_query("SELECT login, ref, SELECT count(id) FROM tbl_users WHERE id=t.ref) AS nbrParains FROM tbl_user AS t ORDER BY ref DESC LIMIT 0, 30");


while ($donnees = mysql_fetch_array($reponse) )
{


 echo $donnees['login'];
 echo $donnees['ref'];

}

il me retounre :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/129/free.fr/2/d/superptp/test.php on line 20

et comment on utilise le code de kris ?

Hors ligne

#7 21-01-2010 19:27:56

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

et en faite la vous m'avez donné un code qui calcule le nombre de parrain d'un membre moi je veut le nombre de filleul d'un membre.

Hors ligne

#8 21-01-2010 19:59:38

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Top parrain

Mais non, un filleul n'a, de toutes façons, qu'1 parrain, ne te fie pas au nom de la colonne, essaye plutôt de comprendre la logique de la requête.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 21-01-2010 21:02:16

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Top parrain

Oui c'est moi qui ai mal nommé la variable. ^^
Pour l'erreur utilises la fonction mysql_error() pour débugguer la requête.

Hors ligne

#10 21-01-2010 21:06:52

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

Voila ce que m'affiche la requete
J'ai enlevé cette image dont le poids et le temps de chargement plombe le forum.

MK

Je suis pas tres fort en prog j'ai commencé vraiment y 2 mois donc j'arrive pas a comprendre la requete dsl

Hors ligne

#11 21-01-2010 22:18:29

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Top parrain

Il y a en effet soucis avec le count. ^^
Je laisse cependant Kris t'aider, ce n'est vraiment pas mon fort les jointures en SQL.

Hors ligne

#12 22-01-2010 13:33:09

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Top parrain

La requête utilisée n'est pas celle que j'ai fournie et modifiée (jointure) mais celle avec sub-select de xTG.
Comme au demeurant la copie d'écran PMA est à peine lisible....


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#13 22-01-2010 18:12:43

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

quand je met ta requete kris phpmyadmin ne me sort rien du tout O_o
Donc j'ai utilisé celle de xTg

Hors ligne

#14 22-01-2010 18:31:31

madstrix
Membre
Inscription : 23-12-2009
Messages : 58

Re : Top parrain

c'est bon ça marche cette requete marche :

SELECT id, ref, (SELECT count(ref) FROM tbl_user WHERE ref=t.id) AS nbrParains FROM tbl_user AS t ORDER BY ref DESC LIMIT 0, 30

par contre je veut bien que tu m'explique ton code kris car je n'ai jamais vu de code de cette forme.

Hors ligne

Pied de page des forums