kostenloser Webspace werbefrei: lima-city


mysql-Abfrage zur Ausgabe aktueller Datensätze MIT Sortierun

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chst

    chst hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. chst schrieb:
    Leider brauche ich für meine nachfolgende grafische Aufbereitung eine chronologische Aufbereitung.
    Ja, an diesem Punkt wird es schwierig mit purem SQL-Code. Ich habe auf die Schnelle auch nichts passendes gefunden.
    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.
  4. Autor dieses Themas

    chst

    chst hat kostenlosen Webspace.

    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
  5. 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.
  6. Autor dieses Themas

    chst

    chst hat kostenlosen Webspace.

    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!
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!