Abfrage mit Arrays

Lukaro

Mitglied
Ich möchte aus dieser MySQL-Tabelle eine Statistik erstellen lassen:

uid | dlid | dls | dlvote
1 | 1 | 1 | 1
2 | 1 | 0 | 3

in diesem falle wäre de Bewertung von Download (dlid) 1 = 2 (dlvote addieren/anzahl bewerungen)

Ich hab jetzt folgenden Code geschrieben, ist der so okay ?

PHP:
$abfragea = "SELECT dlid, dlvote FROM luk_member2dls";
$ergebnisa = mysql_query($abfragea);
while($rowa = mysql_fetch_object($ergebnisa)) {
	 $vote[$row->dlid] = $vote[$row->dlid] + $row->dlvote;
	 $timesvoted[$row->dlid]++;
	 $scratchdl = $vote[$row->dlid]/$timesvoted[$row->dlid];
	 $votegesamt[$row->dlid] = round ($scratchdl,2);
}

Außerdem weiss ich nich wie ich das dann ausgeben soll,

PHP:
foreach ($votegesamt as $votegasamt1) { bla };
geht irgendwie nicht.

Wär schön, wenn mir jemand helfen könnte

Lukaro
 
Das kannst du (SQL sei Dank) auch einfacher haben:

Beispielcode:
PHP:
$query = 'SELECT
    `dlid`, COUNT(*) AS `anzahl`, SUM(`dlvote`) AS `punkte`
    FROM `luk_member2dls`
    GROUP BY `dlid`';
$result = mysql_query($query);

while ($row = mysql_fetch_row($result)) {
    echo 'Der Download mit der ID ' . $row['dlid'] .
         ' hat bei '. $row['anzahl']. ' Stimmen durchschnittlich ' .
         number_format($row['punkte'] / $row['anzahl'], 2) . 
         ' Punkte erhalten!<br />';
}
 
Benutzt du [phpf]mysql_fetch_row[/phpf] oder [phpf]mysql_fetch_object[/phpf]? Wenn du mit letzterem arbeitest, muss du natürlich $row->anzahl schreiben.

Mir ist im Übrigen grad noch ein Fehler bei deinem Script aufgefallen: In der While-Schleife weist du $rowa einen Wert zu, in der Schleife selber verwendest du aber nur $row (ohne a).
 
Jetz will ich die Teile nach Punkten sortieren:
Code:
SELECT dlid, COUNT(*) AS anzahl, SUM(dlvote) AS punkte, punkte/anzahl AS gespkte FROM luk_member2dls GROUP BY dlid SORT BY gespkte
Was ist daran falsch ?

Und wie verhindere ich, division by zero? *malmysqllernenmüsste*
 
SORT BY gibt's nicht, wäre wenn dann ORDER BY...

Code:
SELECT
    `dlid`,
    COUNT(*) AS `anzahl`,
    AVG(`dlvote`) AS `gespkte`
    FROM `luk_member2dls`
    GROUP BY `dlid`
    ORDER BY `gespkte` DESC

Die Berechnung der Punktesumme hab ich mal weggelassen, da ich mal davon ausgehe, dass du diese nicht anzeigen willst, sondern nur den Durchschnitt sowie die Anzahl der Tabellenzeilen.
 
Zurück