php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.02.2006, 11:56  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard Aus mehreren Tabellen (Foren) den Top User ermitteln

Hallo,
ich habe hier ein Open Source Foren Script welches schon ca. 6 Jahre im Einsatz ist.
Wenn man in der Administration ein neues Forum erstellt dann wird in der Datenbank automatisch eine neue Tabelle bzw. Tabellen erzeugt.
Jetzt zu meinem Problem.
Ich möchte jetzt aus allen Foren Tabellen den User ermitteln der die meisten Posts hat. (evtl. auch die Top 10 User)
Ich bin jetzt schon soweit das ich aus jedem Forum den User mit den meisten Posts erhalte. Jetzt möchte ich aber von den Top Usern
der Foren den mit den meisten Posts haben. Ich hoffe ihr könnt mir helfen.
Hier mal der Code den ich bisher habe:

PHP-Code:
$result=mysql_list_tables("diadiscussion");
echo 
"<u>Top Forums User</u>

"
;
for (
$i=0;$i<dbnum_rows($result);$i++) {
    
$table mysql_tablename($result,$i);
    if (
ereg("([a-zA-Z_0-9]+)_type$",$table,$field)) {    
        
$result4=dbquery("SELECT author, COUNT(author) AS anz FROM $field[1] GROUP BY author ORDER BY anz DESC Limit 1",$hd_discussion);

while (
$row mysql_fetch_row($result4)) {    
    
echo 
"[b]$row[1]$row[0][/b]
"
;
}

    }

So sieht die Ausgabe in etwa aus:

Forum 1
36 hans

Forum 2
19 peter

Forum 3
7 tom

Forum 4
58 martin

usw......

Der Top User würde jetzt in diesem Beispiel martin mit 58 Posts sein.
wizzardxx ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.02.2006, 12:54  
Erfahrener Benutzer
 
Registriert seit: 23.05.2005
Beiträge: 376
scooter
scooter eine Nachricht über ICQ schicken
Standard

Alle User mit der Anzahl an Einträgen in ein Array und denndie Anzahl der Einträge mit arsort sortieren und denn den 1. Eintrag des Array ausgeben, das ist denn der user mit den meißten Einträgen.
__________________
Life is Life and life is hard
scooter ist offline  
Alt 14.02.2006, 13:10  
Erfahrener Benutzer
 
Registriert seit: 23.05.2005
Beiträge: 376
scooter
scooter eine Nachricht über ICQ schicken
Standard

Ok Ich lass mich hinreißen...

PHP-Code:

$result
=mysql_list_tables("diadiscussion");
echo 
"<u>Top Forums User</u>

"
;
for (
$i=0;$i<dbnum_rows($result);$i++) {
    
$table mysql_tablename($result,$i);
    if (
ereg("([a-zA-Z_0-9]+)_type$",$table,$field)) {    
        
$result4=dbquery("SELECT author, COUNT(author) AS anz FROM $field[1] GROUP BY author ORDER BY anz DESC Limit 1",$hd_discussion);

$user = Array(); // $user ist ein array

while ($row mysql_fetch_row($result4)) {    //dein Code und ab hier meiner^^
    
$user["$row[1]"] = $row[0]; //in $user wird der name als Indize und die Anzahl der Einträge als array Wert eingetragen
}

    }
}   

arsort($user); // $user wird nach den Werten entgegengesetzt sortiert
echo $user[0];  //Der 1. Eintrag des arrays (der mit den meißten Einträgen) wird ausgegeben 
ungetestet. beim letzten Echo bin ich mir nicht sicher, ob das so machbar ist...
__________________
Life is Life and life is hard
scooter ist offline  
Alt 14.02.2006, 13:43  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Hallo scooter,
erstmal danke das du dich hast hinreißen lassen. :wink:
Zitat:
Zitat von scooter
ungetestet. beim letzten Echo bin ich mir nicht sicher, ob das so machbar ist...
Stimmt geht so wohl nicht.

error_reporting(E_ALL);
Sagt mir folgendes:

Notice: Undefined offset: 0 in /var/httpd/mysql/security/admin/members_top_activities.php on line 118
wizzardxx ist offline  
Alt 14.02.2006, 13:50  
Erfahrener Benutzer
 
Registriert seit: 23.05.2005
Beiträge: 376
scooter
scooter eine Nachricht über ICQ schicken
Standard

Naja.. musst mal sehen wie du denn den ersten eintrag aus dem array bekommst. vl ' um die 0 setzen^^
__________________
Life is Life and life is hard
scooter ist offline  
Alt 14.02.2006, 13:56  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Das habe ich schon probiert.
Aber dann heisst es: Notice: Undefined index: 0 in....

Ich probier mal noch was rum.
wizzardxx ist offline  
Alt 14.02.2006, 14:00  
Erfahrener Benutzer
 
Registriert seit: 23.05.2005
Beiträge: 376
scooter
scooter eine Nachricht über ICQ schicken
Standard

Hab die Lösung^^ reset() und current() sollten dir helfen. Versuch mal damit was, sonst meld dich nochmal, ok?!

EDIT: Danach hast du 2 Möglichkeiten:
1. Du bekommst das dazugehörige Indize des Arrays auch ausgegeben (weiß grad nit wie...
2. Durchsuchst nochmal die DB nach allen Usern mit dieser Anzahl an Einträgen und gibts diese denn aus.

Musst wissen was du willst. Ich denke ich würde letzteres machen, denn das ist fehlertolleranter. Solltest du erste Möglichkeit wählen und du hast 2 user mit der selben anzahl einträgen könnte das script abschmieren. Nimmst du die 2. Möglichkeit, kann man auch den bisherigen Teil des Scripts vereinfachen
__________________
Life is Life and life is hard
scooter ist offline  
Alt 14.02.2006, 14:12  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Danke, ich werde mich damit mal versuchen.
Wenn ich nicht weiter komme melde ich mich nochmal.
wizzardxx ist offline  
Alt 14.02.2006, 16:15  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Ich glaube so geht das nicht.

Wenn ich mir mit
PHP-Code:
echo "<pre>";
var_dump($user);
echo 
"</pre>"
innerhalb der while schleife
das array anzeigen lasse, erhalte folgende Ausgabe:
PHP-Code:
array(1) {
  [
2]=>
  
string(5"user1"
}

array(
1) {
  [
29]=>
  
string(5"user2"
}

array(
1) {
  [
3]=>
  
string(5"user3"
}

array(
1) {
  [
5]=>
  
string(5"user1"

Ausserhalb der Schleife dann:

array(0) {
}

Müsste das nicht so aussehen?
PHP-Code:
array(4) {
  [
2]=>
  
string(5"user1"
  
[29]=>
  
string(5"user2"
  
[3]=>
  
string(5"user3"
  
[5]=>
  
string(5"user1"

Dann kann ja bei:
echo $user[0];
nur eine Fehlermeldung kommen da nichts vorhanden ist.
wizzardxx ist offline  
Alt 15.02.2006, 10:39  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Kann es sein das die ganzen arrays mit array_merge erstmal zu einem array
zusammengefasst werden muss
wizzardxx ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
löschen in mehreren Tabellen maeck Datenbanken 5 10.07.2008 23:19
[MATCH...AGAINST] mit mehreren Tabellen und Datensätzen? becks123 Datenbanken 6 20.06.2007 12:17
Zeilen aus mehreren Tabellen löschn mit Bezug auf eine Table Riks Datenbanken 3 25.02.2007 20:17
select mit inhalten aus mehreren Tabellen wurtzel Datenbanken 6 02.12.2006 17:37
phpbb foren für mehrere user kid01 PHP Tipps 2006 5 26.11.2006 13:22
Bestimmte ID in mehreren Tabellen suchen Dummy2006 PHP Tipps 2006 10 01.06.2006 21:54
Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
[Erledigt] werte aus mehreren tabellen auslesen Datenbanken 5 18.09.2005 13:45
[Erledigt] MySQL Abfrage aus mehreren Tabellen Datenbanken 1 12.04.2005 17:53
mysql update query mit mehreren Tabellen funktioniert nicht PHP-Fortgeschrittene 5 08.01.2005 16:29
[Erledigt] Suche mit mehreren unterschiedlichen Tabellen Datenbanken 9 31.12.2004 17:39
[Erledigt] Löschen in mehreren Tabellen gleichzeitig Datenbanken 2 05.12.2004 00:43
Aktuelle Anzahl eingeloggter User ermitteln? PHP Tipps 2004-2 6 02.12.2004 13:03
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
letztes Datum aus mehreren Tabellen wizzardxx PHP Tipps 2004 6 05.07.2004 23:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php \top user\

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.