OK - ich komme gleich zur Sache - hier ist der fragliche PHP-Code:
<h2>Highest Rated:</h2>
<?php
// Our query base
$query = $this->db->query("SELECT * FROM code ORDER BY rating DESC");
foreach($query->result() as $row) {
?>
<h3><?php echo $row->title." ID: ";echo $row->id; ?></h3>
<p class="author"><?php $query2 = $this->db->query("SELECT email FROM users WHERE id = ".$row->author);
echo $query2->row('email');?></p>
<?php echo ($this->bbcode->Parse($row->code)); ?>
<?php } ?>
Tut mir leid, dass es ein bisschen unordentlich ist, es ist noch ein Entwurf. Jedenfalls habe ich recherchiert, wie ich ein Bewertungssystem verwenden kann - vorher hatte ich ein einziges 'Bewertungs'-Feld, wie Sie es durch SELECT * FROM code ORDER BY rating DESC sehen können. Mir wurde jedoch schnell klar, dass die Berechnung von Durchschnittswerten so nicht machbar war, also habe ich fünf neue Spalten erstellt - rating1, rating2, rating3, rating4, rating5. Wenn also 5 Benutzer etwas mit 4 Sternen bewerten, steht in rating4 5... macht das Sinn? Jede ratingx-Spalte zählt, wie oft die Bewertung abgegeben wurde.
Also, wie auch immer: Ich habe diese SQL-Anweisung:
SELECT id, (ifnull(rating1,0) + ifnull(rating2,0) + ifnull(rating3,0) + ifnull(rating4,0) + ifnull(rating5,0)) / ((rating1 IS NOT NULL) + (rating2 IS NOT NULL) + (rating3 IS NOT NULL) + (rating4 IS NOT NULL) + (rating5 IS NOT NULL)) AS average FROM code
Wieder chaotisch, aber hey. Jetzt muss ich wissen, wie ich diese SQL-Anweisung in mein Skript einbauen kann. Idealerweise würde die Gesamtabfrage lauten: "SELECT * FROM code ORDER BY ( die wirklich lange Anfrage, die ich gerade gestellt habe ) DESC', aber ich kann mir nicht vorstellen, dass das funktioniert... wie mache ich das? Abfrage, das Ergebnis in einer Variablen speichern, oder so ähnlich?
Wenn das keinen Sinn ergibt, tut es mir leid! Aber ich weiß die Hilfe wirklich zu schätzen :)
Jack