mysql-Abfrage zur Ausgabe aktueller Datensätze MIT Sortierun
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuelle projekt
anwendungsfall
bleiben
brauche
chronologische aufbereitung
code
dank
datenbank
datum
limit
nachfolgende grafische aufbereitung
ordern
output
performance
punkt
recherche
tabelle
url
version
zeitstempel
-
Einen wunderschönen Abend wünsche ich euch!
Ich habe mich kürzlich (zugegeben etwas oberflächlich) in mysql eingearbeitet und meine Datensätze für die weitere Nutzung wie folgt in ein json-File ausgelesen:
include('zugang_sql.php'); $sql = "SELECT 1000*unix_timestamp(`Zeitstempel`),Daten FROM Tabelle ORDER BY Zeitstempel"; $query = mysql_query($sql) or die("Anfrage nicht erfolgreich"); while ( $row = mysql_fetch_row($query) ) { $output[] = $row; } echo json_encode($output, JSON_NUMERIC_CHECK); mysql_close();
Das hat gut funktioniert. Nun scheint es so, als könnte ich nur eine gewisse Anzahl von Datensätzen am Stück (eh etwas über 100000 - das würde absolut reichen) ausgelesen werden.
Für eine Eingrenzung der Datensätze habe ich schon einmal folgenden Code verwendet:
...ORDER BY Zeitstempel LIMIT 0,20...
Ich möchte jedoch die aktuellsten Datensätze sehen - ansich mit einem kleinen Zusatz kein Problem:
...ORDER BY Zeitstempel DESC LIMIT 0,20...
Leider brauche ich für meine nachfolgende grafische Aufbereitung eine chronologische Aufbereitung.
Folgende Hinweise hätte ich bei Recherchen gefunden:
$sql = "SELECT 1000*unix_timestamp(`Zeitstempel`),Daten FROM Tabelle ORDER BY Zeitstempel ASC LIMIT MAX(ID)-10,MAX(ID)"
bzw
$sql = "SELECT 1000*unix_timestamp(`Zeitstempel`),Daten FROM Tabelle ORDER BY Zeitstempel ASC LIMIT LAST_INSERT_ID()-10,LAST_INSERT_ID()"
leider beide Versionen ohne Erfolg.
Ich suche also noch einer möglichst praktikablen Version, um die letzten x Einträge einer mysql-Datenbank in Reihenfolge ASC auszugeben.
Könnt ihr mir vielleicht weiterhelfen?
Beste Grüße,
Christoph -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
chst schrieb:
Ja, an diesem Punkt wird es schwierig mit purem SQL-Code. Ich habe auf die Schnelle auch nichts passendes gefunden.
Leider brauche ich für meine nachfolgende grafische Aufbereitung eine chronologische Aufbereitung.
Da du die Datensätze aber sowieso in einem Array sammelst, kannst du dieses einfach in PHP umkehren.
Schreibe folgende Zeile hinter die Schleife, bevor du das JSON-Objekt erzeugst:
$output = array_reverse($output);
Und zur Abfrage nimmst du die Zeile mit "DESC" und "LIMIT 0, 20"
Das sollte für deinen Anwendungsfall ausreichen. -
Servus,
super vielen Dank für diese Antwort - die hat mir sehr geholfen!!
(Frag' mich bitte nicht, warum ich trotz Recherche nicht selbst auf diese Idee gekommen bin..)
Dir/euch noch einen schönen Abend,
ChSt -
Wenn du was Neues lernst, dann mach es gleich richtig.
Die mysql_*-Funktionen sind komplett veraltet und wurden ab PHP7 entfernt. Benutze die neuen mysqli_* oder PDO. -
Servus,
danke auch für diesen Hinweis!
Ich habe inzwischen versucht die Unterschiede/Vorteile herauszufinden:
- PDO scheint der flexiblere Zugang zu sein, da auch andere Datenbanken als mysql recht flexibel eingesetzt werden.
- mysqli dürfte - wenn man ausschließlich bei mysql bleiben möchte - der Performance helfen (falls man das braucht).
Für das aktuelle Projekt möchte ich zunächst noch bei der "alten" Version bleiben (never change a running system?), aber beim nächsten Versuch möchte ich gerne PDO probieren.
Also danke und einen schönen Abend! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage