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.
 

Neue Beiträge

Zurück