Jump to content
Invision Board France
Sign in to follow this  
Androus

[astuce] comptabiliser les messages des membres

Recommended Posts

Androus

Bonsoir à tous,

 

Y a t'il un moyen quelconque de recomptabiliser les messages des membres?

 

Merci d'avance

Share this post


Link to post
Share on other sites
Hideo Kojima

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:

Share this post


Link to post
Share on other sites
Androus

J'ai essayé ça fonctionne pas, ça remet tout sauf les posts des membres.

 

Mais merci quand même :lol:

Share this post


Link to post
Share on other sites
thewiseoldman

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.

Share this post


Link to post
Share on other sites
Androus

Merci tu me sauves la peau encore une fois :lol:

 

 

Edit: ça a fonctionné ^_^

Edited by Androus

Share this post


Link to post
Share on other sites
thewiseoldman

Bah bien sur que ca fonctionne je teste toujours avant de donner des solutions, surtout des comme ca avec mise à jour de la base de données :lol:

Share this post


Link to post
Share on other sites
Androus

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:

Share this post


Link to post
Share on other sites
thewiseoldman

Des risques ? non non je teste sur une base de ........... tests ;)

Share this post


Link to post
Share on other sites
Androus

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

Share this post


Link to post
Share on other sites
thewiseoldman

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 ^_^

Share this post


Link to post
Share on other sites
Androus

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. ^_^

Share this post


Link to post
Share on other sites
thewiseoldman

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.

Share this post


Link to post
Share on other sites
Androus

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?

Edited by Androus

Share this post


Link to post
Share on other sites
Chab

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

Share this post


Link to post
Share on other sites
thewiseoldman

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.

Share this post


Link to post
Share on other sites
Chab

Merci !! Le probleme est réglé :P

Share this post


Link to post
Share on other sites
Mr Strange
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

Share this post


Link to post
Share on other sites
thewiseoldman

Bonjour,

 

Essayez de baisser la limit 400 mais il vous faudra récupérer les résultats sur plusieurs pages au lieu d'une seule.

Share this post


Link to post
Share on other sites
Guest 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+

Share this post


Link to post
Share on other sites
thewiseoldman

J'y peux malheureusement pas grand chose si votre phpmyadmin ne fait pas ce qu'on lui demande de faire ;) Contactez votre hébergeur.

Share this post


Link to post
Share on other sites
Guest 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

Share this post


Link to post
Share on other sites
thewiseoldman
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.

Share this post


Link to post
Share on other sites
CattiBri

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

Edited by CattiBri

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.