2016-06-30 4 views
1

Guten Tag, ich arbeite an einem Scoring-System, das alle Noten von allen Benutzern anzeigen würde und würde es mit PHP von MySQL zusammenfassen. Das Ergebnis funktioniert gut und die Berechnung ebenfalls (die Berechnung erfolgt mit php, nicht auf MySQL). Nun ist mein Problem, wie kann ich die Gesamtpunktzahlen vom höchsten zum niedrigsten ordnen.Holen Sie sich das Ranking der TOTAL-Werte von PHP, die nicht in Mysql gespeichert ist

Hier ist der Code:

$sel_query="Select * from tbl_scores"; 
$result = mysql_query($sel_query); 
while($row = mysql_fetch_array($result)) { 
$crit_3 = $row["crit_3"]; 
$crit_3a = number_format($crit_3); 

$crit2_3 = $row["crit2_3"]; 
$crit2_3a = number_format($crit2_3); 

$crit3_3 = $row["crit3_3"]; 
$crit3_3a = number_format($crit3_3); 

$user1 = ($crit_3) ; 
$user2 = ($crit2_3); 
$user3 = ($crit3_3); 
$divide = ($user1 + $user2 + $user3); 
$total = number_format($divide/9 , 2, '.', ''); 
$average = number_format($total * 0.15 , 2, '.', ''); 
?> 

Vielen Dank im Voraus.

+1

1.Bitte verwenden Sie nicht mehr (veraltet + entfernt) 'mysql_ *', verwenden Sie 'mysqli_ *' ODER 'PDO'.2. Definieren Sie eine Array-Variable außerhalb der Schleife, und innerhalb der Schleife zuweisen Gesamtzahlen zu diesem Array .3. Jetzt erhalten Sie eine Reihe von Punkten und jetzt können Sie kurze Methoden verwenden, um Daten korrekt zu erhalten. Danke, –

Antwort

1

1.Bitte beenden Sie die Verwendung (veraltet von php5.5 + von php7 entfernt) mysql_*, verwenden Sie mysqli_* ODER PDO.

2.Definieren Sie eine Array-Variable außerhalb der Schleife, und geben Sie in der Schleife Gesamtzahlen für dieses Array ein.

3. Jetzt erhalten Sie eine Reihe von Punkten und jetzt können Sie rshort() Methode verwenden, um Daten richtig zu erhalten.

So sollte der Code wie unten sein: -

$sel_query="Select * from tbl_scores"; 
$result = mysql_query($sel_query); 
$scores_array = array();//create an array 
while($row = mysql_fetch_array($result)) { 
$crit_3 = $row["crit_3"]; 
$crit_3a = number_format($crit_3); 

$crit2_3 = $row["crit2_3"]; 
$crit2_3a = number_format($crit2_3); 

$crit3_3 = $row["crit3_3"]; 
$crit3_3a = number_format($crit3_3); 

$user1 = ($crit_3) ; 
$user2 = ($crit2_3); 
$user3 = ($crit3_3); 
$divide = ($user1 + $user2 + $user3); 
$total = number_format($divide/9 , 2, '.', ''); 
$average = number_format($total * 0.15 , 2, '.', ''); 
$scores_array[$row['user_name']] = $total; // assign total to the array and i assume that your table has one column name user_name for each user, change accordingly 
} 
rsort($scores_array);// sort the array in decending order of total scores 
foreach ($scores_array as $key=>$value){ // iterate through array 
     echo $key.'has scored total score:-'.$value; //print the score along with username 
} 
?> 

Hinweis: - Bitte nehmen Sie sich die Variablennamen in einer solchen Art und Weise, dass sie jede Zweideutigkeit nicht produzieren wird.

+0

Danke dafür. Es funktioniert, aber eine Frage, was meinst du mit deinem ersten Punkt? Dies ist meine erste App mit PHP. Thanks a bundle – Joshua

+0

Eigentlich 'mysql_ *' ist alte Bibliothek in PHP-Versionen unter diesem 5.5 verwendet. Jetzt ist diese Bibliothek vollständig von der neuesten Version von PHP entfernt. Dein Code wird also nicht funktionieren, wenn du nach der neuesten Version von PHP suchst. das ist, was ich sage –

+0

Und bitte versuchen Sie, Ihre PHP-Versionen zu aktualisieren. Damit dein Code für jede aktuelle Version von PHP funktioniert. –

Verwandte Themen