Echte Beitragszahl

Volken
Im Threadpostbit wird angezeigt wieviel Postpunkte man gesammelt hat.
Das ist also die Anzahl der Beiträge die man in Foren geschrieben hat wo das Zählen von Beiträgen aktiviert ist.

Wenn man jetzt im Profil eines Users auf Suchen clickt, werden die Beiträge des Users angezeigt.

Dann steht oben zb
"Zeige Beiträge 1 bis 20 von 4.769 Treffern"

Diese 4769 würde ich gerne zusätzlich zur Postpunktzahl im Threadpostbit und in der Memberliste angezeigt haben.

Hat jemand ne Idee wie man das verwirklichen kann ?
[kamui]
Soweit ich weiß, werden die Beiträge als ganze Zahl in der DB gespeichert. Und bei der Suche werden eben ALLE Beiträge gezählt. Du kannst ja eine Maschiene in gewissen Abständen (Cronjob) überprüfen, ob diese beiden Zahlen identisch sind, falls nicht, soll sie die in der DB anpassen.

Oder du suchst die Codestelle heraus, die verhindert, dass ein Post gezählt wird, und entfernst diese smile
Volken
Und jetzt bitte nochmal die Version für halbDAUs, bitte.


Zitat:
Oder du suchst die Codestelle heraus, die verhindert, dass ein Post gezählt wird, und entfernst diese

Schlechte Idee. Ich möchte die Gesamtzahl ja zusätzlich zur richtigen haben und nicht nur die richtige. Sonst würd ich ja einfach zählen überall aktivieren. smile
[kamui]
Achsoo smile Dann einfach neues Profilfeld anlegen, die Stelle suchen, wo Beiträge gezählt werden, Code kopieren (die Stelle, wo nicht gezählt wird, in der Kopie auslassen) und das ganze eben ins neue Profilfeld umbennen ^^
Volken
na ich weiss nicht, ob ich das hinbekomm Versagt
[kamui]
Füge ein neues Feld in der Datenbank bb1_users (per PHPMyAdmin) hinzu (typ: mediumint; länge: 7), namens realuserposts

Öffne newthread.php und addreply.php, suche (in beiden) nach:
code:
1:
2:
checkPosts4AI();
				}


Füge darunter ein:
code:
1:
2:
3:
4:
5:
6:
7:
/** all userposts **/
        $check = $db->query('SELECT COUNT(*) AS zaehl FROM bb'.$n.'_posts WHERE userid="'.$wbbuserdata['userid'].'"');
        $checkt = $db->query('SELECT realuserposts FROM bb'.$n.'_users WHERE userid="'.$wbbuserdata['userid'].'"');
        if ($check['zaehl']>$checkt['realuserposts'])
          $db->unbuffered_query("UPDATE bb".$n."_users SET realuserposts=$check[zaehl] WHERE userid = '$wbbiserdata[userid]'", 1);
        else
          $db->unbuffered_query("UPDATE bb".$n."_users SET realuserposts=realuserposts+1 WHERE userid = '$wbbiserdata[userid]'", 1);


Öffne profile.php und suche nach:
code:
1:
eval("\$tpl->output(\"".$tpl->get("profile")."\");");


Füge darüber ein:
code:
1:
$real_posts = $user_info['realuserposts'];


---

Jetzt kannst du im Profil-Template die Variable $real_posts benutzen, um die echten Benutzerbeiträge anzeigen zu lassen.

Das ganze müsste/sollte/dürfte/könnte funktionieren, ich gebe jedoch keine Garantie XD
Volken
Zitat:
$wbbiserdata[userid]


$wbbuserdata[userid]

Vielen Dank. Das Funktioniert schonmal. Nur leider fängt der bei null an. Wie kann man das setzen lassen ?

Edit:
Hab mir was aus der Otherstuff.php zusammengeklaut

code:
1:
2:
3:
4:
5:
6:
7:
8:
<?php
require('global.php');
$result = $db->query("SELECT userid, userposts FROM bb1_users ORDER BY userid ASC", $perpage, $perpage * ($page - 1));
while ($row = $db->fetch_array($result)) {
list($realuserposts) = $db->query_first("SELECT COUNT(postid) FROM bb1_posts p, bb1_threads t LEFT JOIN bb1_boards b ON (t.boardid=b.boardid) WHERE t.threadid=p.threadid AND p.userid='$row[userid]'");
if ($realuserposts != $row['realuserposts']) $db->unbuffered_query("UPDATE bb1_users SET realuserposts='$realuserposts' WHERE userid='$row[userid]'", 1);
}
?>

Scheint zu klappen

Edit 2: hab jetzt die Zahl auch in den Threadpostbit...^^

nochmal Danke an Kamui
(btw "X" ist Klasse großes Grinsen )