Pb mise en place systeme de top 5 des posteurs avec systeme de points

the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005 - 14 févr. 2004 à 23:01
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005 - 15 févr. 2004 à 12:40
Bonjour donc voila le pb :
J'ai trois tables qui correpondent soit a des fiches postees sur mon site soit à des articles
pour chaque ligne il y a un nom de poteur
Donc je voudrais faire un systeme de top 5 des posteurs un peu comme sur codes sources mais la je me suis un peu embrouillé et je vois plus trop la facon de procèder pour arriver ou resultat genre
tel nom : tant de posts
enfin un classement general
j'avais commence avec unne table qui correpond a des fiches :

$req = mysql_query("SELECT username, COUNT(*) FROM liste_tbl GROUP BY username ");
while( $sortie = mysql_fetch_array($req))
{
print 'Username:';
print $sortie[username].'
';
print 'Nombre:';
print $sortie[1];
print '
';
print '-----------------------------------------------------------------
';
}

Ca m'affiche en fait le nombre de posts par posteurs mais que pour les fiches 1
apres je voulais faire pareil pour les fiches 2 et ensuite pour la table des articles

Mais je sais pas si c'est la bonne solution car je voi plus comment faire pour faire le cumul et afficher le classement final et encore moins pour transrmer les nb de post en point
pour faire pour une fiche 1 point et pour un artice 2 points

Enfin voila je suis un peu perdu ! pour pas dire carrement !
Merci d'avance pour votre aide !
SNAKE

11 réponses

perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
15 févr. 2004 à 09:17
Peux-tu nous donner clairement l'architecture de tes 3 bases de post et de celle ou tu as le nom de tous les membres stp?

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
15 févr. 2004 à 09:43
Surtout le nom de tes trois tables

Je pense avoir trouvé.
Il faut :

1 aller chercher dans ta table membre tous les nom des membres

2 tu fais une boucle sur le résultat précédent (foreach)

3 dans la boucle tu vas chercher tous les postes que ce membre a posté dans chacune des 3 tables

4 tu récupère le nb de ligne

5 tu multiplie par ton facteur de point

6 tu affiche

7 fermetures de la boucle

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 09:59
Bonjour
En fait c'est 3 tables mysql
la premiere
nom : liste_tbl
Nom_commun,Nom_scientifique,Famille,Photos,Description,Genre,Espece,Origine,Taille,Comportement,Sociabilite,Regime,Reproduction,Zone_occupee,Temperature,PH,Durete,Aeration,Hydro_dynamique,username,Generalites,Habitat,Remarques

la 2eme :
nom : listeplantes_tbl
Nom_commun,Nom_scientifique,Famille,Photos,Hauteur,Origine,Eclairage,Eau,Reproduction,Emplacement,Generalites,username

La 3 eme (Pas encore cree) du genre
nom : articles_tbl
Titre,Contenu,username

Pour chaque table des qu'il y a un post cela cree une ligne ds la table exemple :
ARNOLD poste un article
dans articles_tbl
cela cree une nouvelle ligne
Le titre bidon de l'article / Le corrps de l'article machintruc .../
ARNOLD

La table de membres est celle d'un forum ipb
Mais en fait je ne veu pas m'occuper de tous les memebres du sites mais seuleument de ceux qui on postes.
Leur pseudo est inscrit dans username de chaque table.

Moi j'etais parti au debut pour :
Ouvrir la table 1
compter le nombre de lignes par peudo ce qui correspon d au nombre de posts par username pour cette table
ensuite faire pareil pour les deux autres et faire apres le total des 3 mais la c'est plus complique que cela n'avais l'air !
Je rame carrement ! :-p

SNAKE
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 10:15
excuse moi nos messages se sont croises
Oui en fait il n'y a pas beaucoup de posteurs par rapport au membres donc ca me semblait mois lourd de faire ca en recuperant seulement le nom de ceux qui on postes
comme dans mon premier essai de reqette en fait

$req = mysql_query("SELECT username, COUNT(*) FROM liste_tbl GROUP BY username ");
while( $sortie = mysql_fetch_array($req))
{
print 'Username:';
print $sortie[username].'
';
print 'Nombre:';
print $sortie[1];
print '
';
print '-----------------------------------------------------------------
';
}

Qui me donnait en gros ce que je veux mais que pour une table apres je voi plus comment faire

SNAKE
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
15 févr. 2004 à 11:17
je sais pas si ça marche mais essai avec :

$req = mysql_query("SELECT username, COUNT(*) FROM liste_tbl GROUP BY username ");
while( $sortie = mysql_fetch_array($req))
{
$tab[$sortie[username]]=$sortie[1];
}

$req = mysql_query("SELECT username, COUNT(*) FROM listeplantes_tbl GROUP BY username ");
while( $sortie = mysql_fetch_array($req))
{
$tab[$sortie[username]]+=$sortie[1];
}

$req = mysql_query("SELECT username, COUNT(*) FROM articles_tbl GROUP BY username ");
while( $sortie = mysql_fetch_array($req))
{
$tab[$sortie[username]]+=$sortie[1];
}

arsort($tab);//trie le tableau tout en conservant les couples index/valeurs.
foreach($tab as $username=>$point)
{
print ' Username: ';
print $username.'
';
print 'Nombre:';
print $point;
print '
';
print '-----------------------------------------------------------------
';
}

ps: Je sais vraiment pas si ca va marcher!!
Y'a ptétre un prob car quand je fais $tab[$sortie[username]]+ =$sortie[1]; je supose que la valeur est initialisée a 0 (c'est normalement le cas en php)
et je connais pas dutout le COUNT(*) mais je l'ai réutilisé en suposant que ca te donne le nb de lignes.

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 11:28
Je viens de tester ca a l'air de marcher nickel !
C'est super je te remercie je vais essyer de comprendre le fonctionnement .

Je te remercie
j'etais pas la de trouver moi je partais a la, derive !
encore merci tu m'as sauvé !

SNAKE
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 11:30
Ah si j'oubliais
excuse moi mais si je veux mettre par exemple 2 points par post dans le articles je fais ca comment ?
SNAKE
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
15 févr. 2004 à 11:39
De rien!!!! ;)

Mais j'ai pas changé beaucoup de choses sur ton script,
J’ai juste mis les points dans un tableau avec pour index de chaque ligne le nom de l'utilisateur!!!
Et j'ai réutilisé ta fonction sur les autres tables en ajoutant les nouveaux points aux points existant.
Si l'utilisateur n avait pas encore de points alors on le rajoute dans le tableau.

Pour mettre 2 points par article tu remplace
$tab[$sortie[username]]+=$sortie[1];
Par $tab[$sortie[username]]+=$sortie[1]*2;
Dans la dernière boucle while.

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 11:51
Merci
Pour mon script j'avais deja galere pour trouver ca je comprennait rien au count et a la recuperation du tableau c'est pour ca que je ne voyais pas comment continuer.

SNAKE
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 12:26
je crois que j'ai un petit bug ????
giorgio : 43
: 10
giorgio : 2
Wilduni : 1
V. COURTS : 1
exopoismer : 1
Aqua-Passion : 1
jyll.2 : 1

pour celui ou il y a pas de nom c'est des fiches ou il y a pas de pseudo ( avant que je mette en place le portail je rentrais des fiches manuellement )
Parcontre avant toujours a cause de l'entree manuelle il y avait Giorgio et giorgio , j'ai fait un update des tables pour changer Giorgio en giorgio et la j'ai ce rsultat : 2 memebre giorgio je comprend pas trop ???
Voyez vous de ou cela peut venir ?
SNAKE
0
the_snake Messages postés 20 Date d'inscription dimanche 21 septembre 2003 Statut Membre Dernière intervention 31 octobre 2005
15 févr. 2004 à 12:40
Ok j'ai trouve le pb pour les 2 giorgio
en fait il y avait 2 entrees avec un espace avant giorgio donc avec le update ils etaient pas pris en compte j'ai fait un update de touts les giorgio en giorgi et j'ai trouve les deux fantomes ! 8-)
SNAKE
0
Rejoignez-nous