PHP -> Arrays addieren

Sorry das ich Dich noch weiter beanspruche. Es will einfach nicht klappen.

PHP:
//Array für die Punkteliste initialisieren
//Array('userid'=>punkte)
$punkteliste = array();

//SQL so umschreiben, dass das Datum und die Richtig-Liste ausgelesen werden
$sql = "SELECT nummer, user_richtig FROM `".PREFIX."quiz`";
$result = mysql_query($sql);

while($node = mysql_fetch_array($result)){
    //Alle Users aus der Richtig-Liste extrahieren
    $users = explode(',',(str_replace('|', '', str_replace('||', ',', $node['user_richtig']))));
    //Alle User durchgehen
    foreach($users as $user){
        //Der Punkteliste die Punkte (Tag) hinzuzählen     
        $punkteliste[$user] = $punkteliste[$user]+($node['nummer']);
    }
    
}    
//Die Punkteliste umgekehrt sortieren
arsort($punkteliste);    
//Die Rangliste erstellen
//Array(Rang-1 => 'userid'
$rangliste = array_values($punkteliste);
var_dump($punkteliste, $rangliste);

Gibt aus:

array(26) { [""]=> int(295) [259]=> int(5) [339]=> int(5) [625]=> int(5) [95]=> int(5) [707]=> int(5) [1237]=> int(3) [85]=> int(3) [637]=> int(3) [744]=> int(3) [1412]=> int(3) [1693]=> int(3) [873]=> int(3) [732]=> int(3) [841]=> int(2) [2]=> int(2) [1653]=> int(2) [184]=> int(2) [1190]=> int(2) [1255]=> int(2) [1303]=> int(2) [1414]=> int(2) [27]=> int(2) [79]=> int(2) [331]=> int(2) [762]=> int(2) } array(26) { [0]=> int(295) [1]=> int(5) [2]=> int(5) [3]=> int(5) [4]=> int(5) [5]=> int(5) [6]=> int(3) [7]=> int(3) [8]=> int(3) [9]=> int(3) [10]=> int(3) [11]=> int(3) [12]=> int(3) [13]=> int(3) [14]=> int(2) [15]=> int(2) [16]=> int(2) [17]=> int(2) [18]=> int(2) [19]=> int(2) [20]=> int(2) [21]=> int(2) [22]=> int(2) [23]=> int(2) [24]=> int(2) [25]=> int(2) }

Ist dies Zahl hinter int(2), int(3), int(5) die Punktezahl? Was auch immer das ist, es ist nicht das was ich möchte ;P

*UPDATE*
[""]=> int(295) sind das die Gesamtpunkte von allen? Wenn ich es mir genau anschaue, ist es doch das was ich möchte - zumindest teilweise. Weshalb wird das array 2x ausgegeben?
 
Zuletzt bearbeitet:
Ja, das ist ide Punktezahl nach dem System wie ich es verstanden habe wie du es haben willst. Tja, dann muss wohl jemand her der versteht was du haben willst.

Der erster Array $punkteliste setzt sich zusammen mit der userid als Schlüssel und der Punktezahl als Wert.
Der zweite Array $rangliste ist die User als Rangliste, wobei der Schlüssel den Rang-1 ist (index beginnt bei 0) und der Wert die Userid ist.

Irgnedwie nimmt er noch einen leeren user mit 295 Punkten. Hab ohne deine Daten zu sehen grad keien Ahnung wo der herkommt.
 
Soweit so gut. Nur gibt es ein Problem. Je mehr Leute mirmachen, desto mehr Pseudouser werden in die Rangliste eingefügt. Ich weiß nur nicht weshalb.

PHP:
############
#rangliste
############

if (issuperadmin($userID)) 
{
$punkteliste = array();
$sql = "SELECT nummer, user_richtig FROM `".PREFIX."quiz`";
$result = mysql_query($sql);
while($node = mysql_fetch_array($result)){
    $users = explode(',',(str_replace('|', '', str_replace('||', ',', $node['user_richtig']))));
    foreach($users as $user){
        $punkteliste[$user] = $punkteliste[$user]+($node['nummer']);
    }
}
arsort($punkteliste);    
$x=0;
echo '<div style="padding:50px 0px 0px 50px;">
      - - - - -<br/><br/>Die Rangliste ist nur als Superadmin sichtbar!<br/><br/>- - - - -<br/><br/>
      <table><tr><td>Platz</td><td>Punkte</td><td>User</td><tr>';
    foreach ($punkteliste as $id => $rangliste) {
    $fragen_richtig_sql  = safe_query('SELECT COUNT(*) FROM `webs_quiz` WHERE `user_richtig` LIKE \'%|'.$id.'|%\'');
    $fragen_richtig      = mysql_result($fragen_richtig_sql,0);
    $fragen_gesamt_sql   = safe_query('SELECT COUNT(*) FROM `webs_quiz` WHERE `user_alle` LIKE \'%|'.$id.'|%\'');
    $fragen_gesamt       = mysql_result($fragen_gesamt_sql,0);
       echo '<tr><td>'.$x++.'</td><td>'.$rangliste.'</td><td>'.getnickname_org($id).'
       <font color="#CCC">(UserID:'.$id.') - '.$fragen_richtig.' von '.$fragen_gesamt.' korrekt!</font></td><tr>';
     }  
echo '</table></div>';
}

gibt aus:

Code:
 - - - - -

Die Rangliste ist nur als Superadmin sichtbar!

- - - - -

Platz	Punkte	User
0	276	(UserID:) - 3 von 3 korrekt!
1	15	(UserID:antwort1) - 0 von 0 korrekt!
2	9	f!x×x×xi*nDs (UserID:95) - 3 von 3 korrekt!
3	9	RbK (UserID:707) - 3 von 3 korrekt!
4	7	Ncom.sax (UserID:85) - 2 von 2 korrekt!
5	6	Nightfire (UserID:79) - 2 von 3 korrekt!
6	6	Remus.gL (UserID:27) - 2 von 2 korrekt!
7	5	jordeeeh (UserID:259) - 2 von 2 korrekt!
8	5	sil3nt (UserID:339) - 2 von 3 korrekt!
...
..
.

Das ist meine SQL Tabellenstruktur, an der ich nun nichts mehr ändern kann, da sie bereits gefüllt ist!


Code:
-- 
-- Tabellenstruktur für Tabelle `webs_quiz`
-- 

CREATE TABLE `webs_quiz` (
  `nummer` int(11) NOT NULL,
  `frage` varchar(500) NOT NULL,
  `antwort1` varchar(500) NOT NULL,
  `antwort2` varchar(500) NOT NULL,
  `antwort3` varchar(500) NOT NULL,
  `ergebnis` varchar(500) NOT NULL,
  `user_richtig` text NOT NULL,
  `user_falsch` text NOT NULL,
  `user_over30` text NOT NULL,
  `user_alle` text NOT NULL,
  PRIMARY KEY  (`nummer`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;

An was kann das liegen, das diese "Pseudouser" erstellt werden?

0 276 (UserID:) - 3 von 3 korrekt!
1 15 (UserID:antwort1) - 0 von 0 korrekt!

LG
 
Zuletzt bearbeitet:
Zurück