Aller au contenu
Invision Board France

[astuce] comptabiliser les messages des membres


Androus

Messages recommandés

J'ai trouvé ça...

 

Vas dans ton PCA,

> Le 5ème groupe d'option "Administration"

> Recompter statistque"

et tu mets OUI à "Recompter total des sujets et messages" (et au reste si tu veux)

 

Je pense que ça devrait marcher :lol:

Lien vers le commentaire
Partager sur d’autres sites

Faut passer par une requête sql manuelle

 

Pour avoir une idée, voici la requête d'affichage

 

SELECT ibf_members.name, count(*) as total_des_messages FROM ibf_posts, ibf_members WHERE ibf_posts.author_id = ibf_members.id group by ibf_members.id;

 

Le résultat :

 

name____total_des_messages

Guest__________791

thewiseoldman_1483

Carl____________16

Supernico________1

bugdaddy________4

hundge_________22

toto___________137

quarkcool_______756

Hell_____________37

Manic___________55

decimal_________14

 

Pour la mise à jour des données va falloir ruser un peu car le sql de Mysql est un peu limité

 

Exécutez:

SELECT CONCAT('UPDATE ibf_members SET ibf_members.posts ='), count(*), CONCAT('WHERE ibf_members.id='), ibf_members.id, CONCAT(';') FROM ibf_posts, ibf_members WHERE ibf_posts.author_id = ibf_members.id group by ibf_members.id LIMIT 0, 400

 

Si vous avez plus de 400 membres remplacez 400 par votre nombre de membres, exécutez, dans la case à droite de 'et répéter les en-têtes à chaque groupe de' mettez un nombre supérieur à votre nombre de membres par exemple 500, cliquez sur le bouton afficher

 

Voici le résultat de la requête :

 

UPDATE ibf_members SET ibf_members.posts =  791  WHERE ibf_members.id=  0;
UPDATE ibf_members SET ibf_members.posts = 1483 WHERE ibf_members.id= 1;
UPDATE ibf_members SET ibf_members.posts = 16 WHERE ibf_members.id= 2;
UPDATE ibf_members SET ibf_members.posts = 1 WHERE ibf_members.id= 3;
UPDATE ibf_members SET ibf_members.posts = 4 WHERE ibf_members.id= 4;
UPDATE ibf_members SET ibf_members.posts = 22 WHERE ibf_members.id= 8;
UPDATE ibf_members SET ibf_members.posts = 137 WHERE ibf_members.id= 9;
UPDATE ibf_members SET ibf_members.posts = 756 WHERE ibf_members.id= 10;
UPDATE ibf_members SET ibf_members.posts = 37 WHERE ibf_members.id= 11;
UPDATE ibf_members SET ibf_members.posts = 55 WHERE ibf_members.id= 13;

 

Magique hein ? :lol:

 

Donc sélectionnez toutes les lignes, copiez les, collez les et exécutez.

Lien vers le commentaire
Partager sur d’autres sites

Wouaaaaaaaaah c'est un admin comme on en trouve plus, il prend des risques pour aider les autres ^_^

 

Pour le "ça a fonctionné" c'était juste pour dire que j'étais content :lol:

Lien vers le commentaire
Partager sur d’autres sites

Salut je suis de retour, je viens de remarquer un petit problème, cette requête fonctionne avec les membres qui ont au moins 1 message, mais ceux qui n'ont plus aucun message sur le forum reste avec l'ancien nombre.

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

On va tricher encore parce que plus je lis la doc de mysql plus je me rend compte que le langage sql de mysql est VRAIMENT limité.

 

On va mettre tout le monde à 0 message dans la table ibf_members et ensuite tu relances les premières requêtes que je t'ai donné ci-dessus

 

Donc mise à 0

 

UPDATE ibf_members SET ibf_members.posts = 0;

 

Ensuite tu relances les autres requêtes ^_^

Lien vers le commentaire
Partager sur d’autres sites

Ok je vais essayer, sinon je peux le faire à la main, je prends ta première requête qui indique tout les posts des membres et je rectifie à la main. ^_^

Lien vers le commentaire
Partager sur d’autres sites

Non car les membres qui n'ont pas de messages ne seront pas retournés par la requête. Le plus facile et sur est de remettre tout le monde à 0 et ensuite de compter le nombre de messages par membres.

Lien vers le commentaire
Partager sur d’autres sites

Voilà je viens de le faire, je vais vérifier plus en détail mais à première vue tout est ok.

 

Merci à toi ^_^

 

ps: où tu as eu une doc sql?

Modifié par Androus
Lien vers le commentaire
Partager sur d’autres sites

  • 5 mois après...

Bonjour

 

Je viens d'appliquer cette methode et j'ai un soucis car au final il me semble que dans la base

le nombre de post est juste mais dans le forum le compteur reste à zero.

 

Voila ma config: Ibf 1.1.2 Version de PHP: 4.2.2, Version de mySQL: 3.23.56-log

je precise car vue la date du sujet il y a peut etre eu des changements au niveau des tables

 

J'ai fait dans l'ordre :

 

1) Donc mise à 0

CODE UPDATE ibf_members SET ibf_members.posts = 0;

 

2) requête d'affichage

CODE

SELECT ibf_members.name, count(*) as total_des_messages FROM ibf_posts, ibf_members WHERE ibf_posts.author_id = ibf_members.id group by ibf_members.id;

 

3) mise à jour des données

SELECT CONCAT('UPDATE ibf_members SET ibf_members.posts ='), count(*), CONCAT('WHERE ibf_members.id='), ibf_members.id, CONCAT(';') FROM ibf_posts, ibf_members WHERE ibf_posts.author_id = ibf_members.id group by ibf_members.id LIMIT 0, 400

 

Et c'est tous, à chaque fois j'ai vérifier, le résultat de la requete etait conforme à l'exemple

J'ai oublier qq chose ou c'est à cause de la 1.1.2 ?

 

Merci :P

Lien vers le commentaire
Partager sur d’autres sites

Il faut récupérer tous les résultats de la dernière requête (SELECT CONCAT('UPDATE ibf_members SET ibf_me...) qui seront du style UPDATE ibf_members SET ibf_members.posts = ..

 

Ce sont ces requêtes qui mettront à jour le nombre de messages des membres.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
Il faut récupérer tous les résultats de la dernière requête (SELECT CONCAT('UPDATE ibf_members SET ibf_me...) qui seront du style UPDATE ibf_members SET ibf_members.posts = ..

 

Ce sont ces requêtes qui mettront à jour le nombre de messages des membres.

j'ai le même problème de compteur de membre à zero et je n'ai pas compris ce qu'il fallait faire à cette étape,

 

tu parles de recuperer les resultats de la dernière requête, quels résultat ?

 

je n'ai que ça qui s'affiche à la dernière requete :

 

Requête: SELECT CONCAT('UPDATE ibf_members SET ibf_members.posts ='), count(*), CONCAT('WHERE ibf_members.id='), ibf_members.id, CONCAT(';') FROM ibf_posts, ibf_members WHERE ibf_posts.author_id = ibf_members.id group by ibf_members.id LIMIT 0, 400
Exécutée avec Succès

 

 

 

Conf : 1.1.2 + MySQL 3.23.43-log

Lien vers le commentaire
Partager sur d’autres sites

Invité MrStrange

le seul resultat que j'ai c'est celui que j'ai indiqué, je n'ai rien d'autre qui s'affiche, si ça doit s'afficher même en remplçant 400 par 10 (j'en suis au debut du forum)

 

a+

Lien vers le commentaire
Partager sur d’autres sites

Invité MrStrange

voila une info qui est interessante, a aucun moment dans ce post il n'est indiqué qu'il faut passer par le phpmyadmin, or il est tout à fait possible de saisir des requets sql dans Admin PC -> Gestion SQL - Boîte à outils mySQL

 

ceci expliquant cela, par le phpmyadmin cela donne effectivement un resultat et un copier-coller fait le reste

 

merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Si vous avez plus de 400 membres remplacez 400 par votre nombre de membres, exécutez, dans la case à droite de 'et répéter les en-têtes à chaque groupe de' mettez un nombre supérieur à votre nombre de membres par exemple 500, cliquez sur le bouton afficher
Ceci aurait du faire plus que vous mettre sur la voie, car ca n'existe pas dans les tools mysql d'IPB.
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

je vais surment me faire incendier mais somme toute je commence à avoir l'habitude ici -_-

 

( sauf quand c'est wise qui répond :bisou: )

 

le phpmyadmin c'est le dossier mis par l'hébergeur ? mais ya 36000 fichiers dedans.. même en retirant ceux des langues ça en fait beaucoup et aucun ne porte un titre evocateur ( en tout k pour moi :) ) ... dans quel fichier je dois chercher tout ça , siou plait ?? :P

Modifié par CattiBri
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...

Information importante

En utilisant ce site, vous êtes d’accords avec nos Conditions d’utilisation. Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookies, sinon nous supposerons que vous êtes d’accord pour continuer.