sortierung sql ausgabe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeige
ausgabe
beleg
code
dank
date
datum
eintrag
fehler
http
lese
menge
ordern
platz
punkt
tabelle
uhr
uhrzeit
umwandeln
url
-
Halli Hallo,
ich habe folgendes Problem, ich lese aus meiner DB Punktestände aus und sortiere diese nach den Punkten. Der mit den meisten Punkten sollte ja oben stehen. Soweit klappt das auch, allerdings wird mir das dazugehörige Datum falsch ausgelesen. Es wird also richtig nach Punkten sortiert aber das falsche Datum genommen.
Hier mal das Codestück zum sql
$slq_scorre_susi = "SELECT max(menge) as menge, name, datum FROM `logs_susi` GROUP BY `name` ORDER BY `menge` DESC LIMIT 0 , 30 "; $result_scorre_susi = mysql_db_query ($dbname, $slq_scorre_susi, $verbindung);
Die Ausgabe kommt dann in einer while
$platz = 1; while ($ausgabe_scorre = mysql_fetch_array ($result_scorre_susi)){ $name = $ausgabe_scorre[name];//name des users $menge = $ausgabe_scorre[menge];// menge der gefangenen Fliegen $logTIME = $ausgabe_scorre[datum];// datum $datum = date("d.m.Y",$logTIME);// datum umwandeln $uhrzeit = date("H:i",$logTIME);// Uhrzeit umwandeln $fighttime = $uhrzeit . " Uhr " . $datum;// Anzeige für Datum belegen // Platz 1-3 hervorheben if( $platz == 1 || $platz == 2 || $platz ==3 ) {$platz_ausgabe = "<b>$platz | $menge | $name | $fighttime </b><br />";} // ab platz 4 normale ausgabe else {$platz_ausgabe = "$platz | $menge | $name | $fighttime <br />";} echo "$platz_ausgabe "; // scorreplatz hochzählen $platz = $platz+1; }
Die Ausgabe sieht dann wie folgt aus.
http://prntscr.com/2wk25v
Die Punkte, der Name stimmen. Das Datum ist immer das Datum vom ersten Eintrag, wird also einfach nicht mit sortiert. Ich hoffe Ihr habt nen Tip für mich, ich weiß das sieht sicher sehr Chaotisch aus, hoffe mal Ihr blickt trotzdem durch..
Euch schon mal ein entspanntes WE
Gruß Marco
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie liegt denn das Datum in der DB vor? Als Datetime oder Unix timestamp?
Könntest auch noch folgendes versuchen:
$datum = date("H:i Uhr d.m.Y",$logTIME);// ist Datum und Uhrzeit
Auch schon mal in PHPMyadmin geschaut?
Bzw. wenn Unix Timestamp vielleicht mal das Datum einzeln aus der Tabelle ziehen und mal umwandeln. Eventuell liegt ja schon ein Fehler beim Eintragen vor.
-
Hi,
also in der DB ist das Datum richtig als Unix hinterlegt. Ich lese die Daten noch für eine weitere Anzeige aus und da wird das Datum richtig gezeigt.
In dieser Ausgabe werden einfach die letzten 30 Einträge ausgegeben, als Übersicht was die letzten so geschafft haben.
In der „Problemanzeige“ werden die Daten aus der gleichen Tabelle gezogen, dann aber umsortiert nach der Menge. Das sortieren nach Menge klappt auch noch, nur nimmt er dann halt nicht das Datum des Eintrags sondern das Datum des ersten Eintrags, der vom User in der DB liegt.
Im Screen ist alles auf den 17.02 weil ich da eine neue Runde gestartet habe und das somit der erste Eintrag ist den der jeweilige User erzeugt hat.
Die User haben also mehrere Einträge in dieser Tabelle, sie können alle 4h einen neuen Versuch starten der dann ebenfalls in die Tabelle kommt.
Hier mal ein Beispiel, chuck norris beachten.
Ausgabe 1 Sortiert nach Datum (DESC) klappt
http://prntscr.com/2wmrx3
Ausgabe 2 Sortiert nach Menge (DESC) ergibt falsches Datum
http://prntscr.com/2wmrze
$datum = date("H:i Uhr d.m.Y",$logTIME);// ist Datum und Uhrzeit
Leider gleiches Ergebnis.
Gruß Marco
-
liegt am Group by, da kann dann nur der erste Treffer ausgegeben werden. Das ist so einer der Nachteile bei relationalen Datenbanken.
-
Hi,
danke für die Aufklärung, da kann ich ja lange testen und Fehler suchen.
Dann muss es wohl ohne Datum an ideser Stelle gehen.
Nen Daumen kann ich Dir leider nicht geben, den musst Du Dir vorstellen :)
Danke und ein schönes Wochenende. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage