Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste
Anzahl an Threads eines Users in bestimmten Foren
#1
Hey Leute,

ich würde gerne wissen wie ich

1. Die genaue Anzahl an Threads eines Users in einem bestimmten Forum bekomme, und
2. Wie ich diese Anzahl als Variable auf das Userprofil einbinden kann.

Beispiel:

Forum A, mit Unterforum A1

User XYZ hat insgesamt 100 threads erstellt, 10 davon in Forum A, und 5 in A1.

Auf dem Userprofil sollte dann idealerweise soetwas stehen wie:

"Anzahl an Threads in Forum A = 15" (Click to see all threads.)

Oder soetwas in der Art. Smile
Wirklich 100% wichtig wäre mir nur, dass ich die genaue Anzahl der Threads direkt sehen kann, denn ich möchte ungern jedesmal eine Datenbankabfrage eingeben müssen. ^^

Vielen Dank schonmal.
Zitieren
#2
Die Beitragsanzahl eines Users in einem Forum kannst Du mit folgender Abfrage ermitteln
PHP-Code:
$query $db->simple_select("posts""count(pid) AS countpostnum""uid=X AND fid = Y"); 
Für X musst Du die User-ID eintragen (oder $memprofile['uid'] innerhalb des Profils eines Users) und für Y die entsprechende Foren-ID.

Mit den folgenden Zeilen kommst Du an die Ausgabe des Ergebnisses
PHP-Code:
$result $db->fetch_array($query);
$var $result[countpostnum]; 
und kannst $var in das entsprechende Profil-Template einsetzen....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#3
(10.03.2014, 20:13)Jockl schrieb: Die Beitragsanzahl eines Users in einem Forum kannst Du mit folgender Abfrage ermitteln
PHP-Code:
$query $db->simple_select("posts""count(pid) AS countpostnum""uid=X AND fid = Y"); 
Für X musst Du die User-ID eintragen (oder $memprofile['uid'] innerhalb des Profils eines Users) und für Y die entsprechende Foren-ID.

Mit den folgenden Zeilen kommst Du an die Ausgabe des Ergebnisses
PHP-Code:
$result $db->fetch_array($query);
$var $result[countpostnum]; 
und kannst $var in das entsprechende Profil-Template einsetzen....

Okay, ich binde $var in das Profil-Template ein, aber wo platziere ich den query code? In member.php? Wie genau sieht das aus?

Und anstatt posts, möchte ich wie gesagt die anzahl an threads haben.
Zitieren
#4
Wenn Du das im Benutzerprofil einbauen möchtest, dann ist die member.php entsprechend anzupassen, sowie das jeweilige Template für die richtige Positionierung und den Style.
Wenn Du die Threads haben möchtest, dann musst Du in dem Query "posts" und "pid" durch "threads" und "tid" ersetzen....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#5
(11.03.2014, 07:20)Jockl schrieb: Wenn Du das im Benutzerprofil einbauen möchtest, dann ist die member.php entsprechend anzupassen, sowie das jeweilige Template für die richtige Positionierung und den Style.
Wenn Du die Threads haben möchtest, dann musst Du in dem Query "posts" und "pid" durch "threads" und "tid" ersetzen....

Ja aber was heißt "entsprechend anpassen"? Genau da brauch ich ja die Anweisung von dir, Chef.^^ Ich bin mir nicht sicher ob wir auf der gleichen Wellenlänge sind. :/

Im Userprofil wird ja Registrierungsdatum, Postanzahl, etc. angezeigt, und genauso möchte ich auch "Total posts in forum A: ***" anzeigen lassen.

Also ich schreibe

PHP-Code:
$query $db->simple_select("threads""count(tid) AS countpostnum""uid=X AND fid = Y");
$result $db->fetch_array($query);
$var $result[countpostnum]; 

ganz ans Ende der member.php (mit angepasster fid für das entsprechende forum)?

Wie setze ich die uid? Denn ich kann die ja nicht fest vorgeben, es soll ja im profil des users angezeigt werden, dem diesen profil "gehört".^^

Funktioniert dafür

PHP-Code:
$query $db->simple_select("threads""count(tid) AS countpostnum""uid=$memprofile['uid']
 AND fid = Y"
); 

??

Und dann setze ich $var in das memberprofile_template.

Verstehst du was ich vorhabe? :s
Zitieren
#6
Ein Ansatz für eine Lösung:

Suche im Template member_profile folgende Zeilen
Code:
<tr>
<td class="trow1"><strong>{$lang->total_posts}</strong></td>
<td class="trow1">{$memprofile['postnum']} ({$lang->ppd_percent_total})<br /><span class="smalltext">(<a href="search.php?action=finduserthreads&amp;uid={$uid}">{$lang->find_threads}</a> &mdash; <a href="search.php?action=finduser&amp;uid={$uid}">{$lang->find_posts}</a>)</span></td>
und setze danach folgende Zeilen ein (geändert)
Code:
<tr>
<td class="trow1"><strong>Anzahl Beiträge im Forum "XY":</strong></td>
<td class="trow1"><a href="search.php?action=finduserthreads&amp;uid={$uid}&fid={$my_fid}">{$var}</a></td>
</tr>
"XY" müsstest Du anpassen und genauso die ID des Forums (fid=2)
Nun öffnest Du die Datei search.php und suchst die Zeilen
PHP-Code:
elseif($mybb->input['action'] == "finduserthreads")
{
    
$where_sql "t.uid='".intval($mybb->input['uid'])."'"
Darunter setzte diese Zeilen ein (geändert)
PHP-Code:
if(intval($mybb->input['fid'])){
    
$where_sql "t.fid IN ".$my_fid."";
  } 
Nun geht's in die member.php und dort suchst Du die Zeilen
PHP-Code:
    eval("\$profile = \"".$templates->get("member_profile")."\";");
    
output_page($profile); 
und fügst davor diese ein (geändert)
PHP-Code:
$my_fid "(2,16,17)"// passe bitte die Foren-IDs entsprechend an
$query $db->simple_select("threads""count(tid) AS countpostnum""uid= ".$memprofile['uid']." AND fid IN ".$my_fid."");
$result $db->fetch_array($query);
$var $result[countpostnum]; 
Wie oben erwähnt, musst Du noch die Foren-IDs anpassen....

Das sollte es gewesen sein.....und sieht so aus, wie im Anhang zu sehen ist.


Angehängte Dateien Thumbnail(s)
   
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#7
Okay, ersteinmal: Super Arbeit, wow Big Grin Vielen Dank!

Eine kleine Hilfe bräuchte ich allerdings noch: Und zwar möchte ich, dass alle threads einer Kategorie gezählt werden (also alle foren + unterforen), bzw. alle threads eines forums + alle unterforen. Mit der momentan fid=** bekomme ich ja nur die anzahl der threads, die auch wirklich in diesem forum sind, nciht aber die anzahl der dazugehörigen threads aus den unterforen, verstehst du?

Ist das irgendwie möglich? Kann ich vllt in der Suche "angeben", dass alle foren/unterforen berücksichtigt werden sollen?

Oh und noch etwas ist mir aufgefallen:
Wenn ich auf die Anzahl an threads klicke, dann werde ich zu der Suchergebnisseite weitergeleitet, die mir allerdings ALLE threads in dem Forum anzeigt, nicht nur meine eigenen.

Wenn ich normal die Suche betätigte, das Häkchen bei "Nur Titel suchen" setze, und nur in dem bestimmten Forum suchen lasse, dann listet die normale Suche mir als Ergebnis auch nur meine eigenen threads auf, und nicht alle threads in dem forum/der kategorie. Außerdem zählt die normale Suche auch alle threads mit auf, die in den Unterforen sind. Das wäre dann ja genau das, was ich auch fürs Profil haben möchte, idealerweise. Kann man das für das memberprofil nicht genauso machen/ irgendwie diese genaue Suchfunktion übernehmen?? Wäre doch top Big Grin

URL mit normaler Suche:
Code:
http://www.marineford.com/search.php?action=results&sid=697807476dfcba55810e9a0b8baa1294&sortby=lastpost&order=desc

URL mit dem Link aus dem Profil:
Code:
http://www.marineford.com/search.php?action=results&sid=5a9e5a1184601ccaf1797659a27c4804

ich bin hier jetzt wahrscheinlich sehr primitiv/naiv, aber müssten die URL's nicht exakt gleich sein?
Zitieren
#8
(12.03.2014, 01:14)Gobee129 schrieb: Mit der momentan fid=** bekomme ich ja nur die anzahl der threads, die auch wirklich in diesem forum sind, nciht aber die anzahl der dazugehörigen threads aus den unterforen, verstehst du?
Das lässt sich innerhalb eines MySQL Query mit "fid IN (x,y,z)" umsetzen.

(12.03.2014, 01:14)Gobee129 schrieb: Oh und noch etwas ist mir aufgefallen:
Wenn ich auf die Anzahl an threads klicke, dann werde ich zu der Suchergebnisseite weitergeleitet, die mir allerdings ALLE threads in dem Forum anzeigt, nicht nur meine eigenen.
Das kann ich in meinem Testforum so nicht bestätigen. Durch die Abfrage
PHP-Code:
elseif($mybb->input['action'] == "finduserthreads")... 
werden eigentlich nur die Themen in dem jeweiligen Forum des entsprechenden Users angezeigt....

(12.03.2014, 01:14)Gobee129 schrieb: Wenn ich normal die Suche betätigte, das Häkchen bei "Nur Titel suchen" setze, und nur in dem bestimmten Forum suchen lasse, dann listet die normale Suche mir als Ergebnis auch nur meine eigenen threads auf, und nicht alle threads in dem forum/der kategorie. Außerdem zählt die normale Suche auch alle threads mit auf, die in den Unterforen sind. Das wäre dann ja genau das, was ich auch fürs Profil haben möchte, idealerweise. Kann man das für das memberprofil nicht genauso machen/ irgendwie diese genaue Suchfunktion übernehmen??
Hier kann ich Dir leider nicht folgen....

Wegen der Abfrage der Unterforen werden ich nachher den Code in meinem obigen Beitrag anpassen.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#9
Okay ich habe jetzt diesen Code ins member_profile template eingesetzt:

Code:
<tr>
<td class="trow1"><strong>Anzahl Beiträge im Forum "XY":</strong></td>
<td class="trow1"><a href="search.php?action=finduserthreads&amp;uid={$uid}&fid={$my_fid}">{$var}</a></td>
</tr>

Diesen Code in die search.php

PHP-Code:
if(intval($mybb->input['fid'])){
    
$where_sql "t.fid IN ".$my_fid."";
  } 

Und diesen in die member.php

PHP-Code:
$my_fid "(2,16,17)"// passe bitte die Foren-IDs entsprechend an
$query $db->simple_select("threads""count(tid) AS countpostnum""uid= ".$memprofile['uid']." AND fid IN ".$my_fid."");
$result $db->fetch_array($query);
$var $result[countpostnum]; 

Wobei ich hier die 2,16,17 angepasst habe.

Die Anzahl, die jetzt auf meinem userprofil steht ist zwar korrekt, aber wenn ich auf die Zahl klicke, werde ich immernoch zu ALL meinen threads weitergeleitet, und eben nicht nur zu den besagten 10.
Zitieren
#10
Ich denke, ich habe den Fehler gefunden. Ändere folgende Zeilen in der search.php
PHP-Code:
if(intval($mybb->input['fid'])){
    
$where_sql "t.fid IN ".$my_fid."";
  } 
in
PHP-Code:
if(intval($mybb->input['fid'])){
    
$where_sql .= " AND t.fid IN (".$mybb->input['fid'].")";
  } 
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Gesamtzahl aller geschriebenen Worte eines Users Santhony 2 1.453 09.03.2020, 10:48
Letzter Beitrag: itsmeJAY
  Unterschiedliche Codebuttons in bestimmten Foren (fid) cthulhu 3 2.078 12.04.2016, 09:53
Letzter Beitrag: MrBrechreiz
  Ads in ersten Post eines Threads einfügen Line.Dev 1 1.666 16.01.2015, 02:04
Letzter Beitrag: MrBrechreiz
  Unterforen in bestimmten Foren ausblenden. Sandzange 15 5.143 30.03.2014, 10:43
Letzter Beitrag: webMasterAlex
  Melde-Button nur in bestimmten Foren sichtbar? GreenDragon 5 2.334 18.07.2012, 10:05
Letzter Beitrag: GreenDragon