Morfois Geschrieben 25. Februar 2006 Teilen Geschrieben 25. Februar 2006 Ich habe folgenden code: function sort_parks($current_year) { $sql = "SELECT userid, nickname, age, wohnort, name FROM cbook_users WHERE online='1';"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { $i = "1"; while($row = mysql_fetch_assoc($result)) { $sql_p = "SELECT parkid FROM cbook_besuch WHERE jahr='".addslashes(htmlspecialchars($current_year))."' AND userid='".addslashes(htmlspecialchars($row['userid']))."' GROUP BY parkid;"; $result_p = mysql_query($sql_p) OR die(mysql_error()); if(mysql_num_rows($result_p)) { $daten_p = array(); while($row_p = mysql_fetch_assoc($result_p)) { $daten_p[] = $row_p['parkid']; } $parks = count($daten_p); } else { $parks = "0"; } if($parks > 0) { echo('<tr>'); echo("<td width=\"25\">".$i.".</td>"); echo("<td width=\"130\"><a href=\"./page1.php?userid=".$_GET['userid']."&showid=".$row['userid']."&jahr=".$current_year."&page=1\">"); if(isset($_SESSION['ID']) && $_SESSION['ID'] == $row['userid'] && $_GET['userid'] == $row['userid']) { echo("<font color=\"#FF0000\"><b>".$row['nickname']."</b></font>"); } else { echo($row['nickname']); } echo("</a></td><td>".$row['name']."</td><td>".$row['age']."</td><td>".$row['wohnort']."</td>"); echo('<td>'); echo($parks); echo('</td>'); echo('</tr>'); $i++; } } } }[/PHP] Diese Funktion ist eingebettet in eine Tabelle... mit ihr soll man alle User nach der Anzahl besuchter Parks sortieren können. Die derzeitige Ausgabe sieht ungefähr so aus: 1. Morfois 4 2. Noel 6 3. test 3 Problem hierbei: wie lasse ich den User mit den meisten besuchten Parks in der Liste oben stehen? Für Vorschläge währe ich sehr dankbar! Viele Grüße Morfois P.S. $current_year ist immer das aktuelle Jahr, dementsprechent derzeit 2006 ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 25. Februar 2006 Teilen Geschrieben 25. Februar 2006 Order by Parkbesuche DESC Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 ^^ na klasse! wenns so einfach währe, würde ich mich bestimmt ned an euch wenden :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 26. Februar 2006 Teilen Geschrieben 26. Februar 2006 SELECT userid.book_users, nickname.book_users, count(park_id.cbook_besuch) as zaehler FROM book_users, cbook_besuch WHERE online.book_users='1' AND userid.book_users = userid.cbook_besuch AND jahr .... GROUP BY userid.book_users ORDER BY zaehler DESC [/PHP] so vielleicht ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 mal sehen ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 Dankeschöööön, funktioniert super! ^^ Ebenfalls funktionsfähig ist diese Lösung: SELECT count( a.userid ) AS anzahl, a.Jahr, a.userid, nickname, age, wohnort, name FROM cbook_besuch a RIGHT JOIN cbook_users b ON a.userid = b.userid WHERE jahr =2006 GROUP BY userid ORDER BY anzahl DESC Hierbei nochmal vielen Dank an Schiller256! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 hm.... nun haben ja ein paar user einen park 2 mal besucht. also zum Beispiel: Noel war 2 mal im Europa-Park Morfois war ein mal im Europa-Park und ein mal im Phantasialand dann soll das ergebnis so aussehen: Morfois 2 Noel 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 26. Februar 2006 Teilen Geschrieben 26. Februar 2006 SELECT userid.book_users, nickname.book_users, count(DISTINCT park_id.cbook_besuch, userid.cbook_besuch) as zaehler FROM book_users, cbook_besuch WHERE online.book_users='1' AND userid.book_users = userid.cbook_besuch AND jahr .... GROUP BY userid.book_users ORDER BY zaehler DESC [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 wunderbar! :-D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 hm... wie sage ich ihm denn dann hierbei, das er die zwei "zaehler" zusammenaddieren soll??? SELECT cbook_users.userid, cbook_users.name, cbook_users.nickname, cbook_users.age, cbook_users.wohnort, count( DISTINCT cbook_kirmes.kirmesid, cbook_kirmes.userid ) AS zaehler FROM cbook_users, cbook_kirmes WHERE cbook_users.online = '1' AND cbook_users.userid = cbook_kirmes.userid AND jahr = '2006' GROUP BY cbook_users.userid UNION SELECT cbook_users.userid, cbook_users.name, cbook_users.nickname, cbook_users.age, cbook_users.wohnort, count( DISTINCT cbook_ride.rideid, cbook_ride.userid ) AS zaehler FROM cbook_users, cbook_ride WHERE cbook_users.online = '1' AND cbook_users.userid = cbook_ride.userid AND jahr = '2006' GROUP BY cbook_users.userid ORDER BY zaehler DESC[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 26. Februar 2006 Teilen Geschrieben 26. Februar 2006 was kommt den als ausgabe raus und was willst du wissen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 26. Februar 2006 Autor Teilen Geschrieben 26. Februar 2006 im prinzip das selbe wie oben, nur das es hier um insgesammt 3 tabellen geht. würde man beide SELECTS seperat ausführen und per PHP die zaehler addieren dann währe dies mein ergebnis, nach dem ich sortieren will! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 27. Februar 2006 Autor Teilen Geschrieben 27. Februar 2006 ich möchte also quasi die anzahl der einträge der tabelle cbook_ride aller user, welche online='1' sind mit denen der tabelle cbook_kirmes addieren, jedoch nicht die wirkliche anzahl, sondern die anzahl der gefahrenen bahnen, d.h. 2 mal eine bahn gefahren bedeutet für den user nicht fahrten == 2 sondern anzahl gefahrener bahnen == 1... plus dann natürlich die anzahl der tabelle cbook_kirmes. Und danach will ich dann anzahl DESC sortieren! fertig :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 27. Februar 2006 Teilen Geschrieben 27. Februar 2006 evtl mit SUM() ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 27. Februar 2006 Autor Teilen Geschrieben 27. Februar 2006 hab ich schon verschiedene möglichkeiten probiert, aber das funzt ned so dolle. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 27. Februar 2006 Teilen Geschrieben 27. Februar 2006 würde man beide SELECTS seperat ausführen und per PHP die zaehler addieren dann währe dies mein ergebnis, nach dem ich sortieren will! dann mach das so, was spricht dagegen ? andere Lösungen sehe ich nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 27. Februar 2006 Autor Teilen Geschrieben 27. Februar 2006 ja aber dann bekomme ich doch einen fehler in der sortierung. oder etwa nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 28. Februar 2006 Teilen Geschrieben 28. Februar 2006 Oder mit Group By Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Morfois Geschrieben 28. Februar 2006 Autor Teilen Geschrieben 28. Februar 2006 wie das? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.