Saubere Methode um Datensätze zu sortieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Saubere Methode um Datensätze zu sortieren

    Ich bin unzufrieden mit meiner aktuellen Umsetzung dem User die Möglichkeit zu geben angezeigte Datensätze nach irgendwelchen Kriterien sprich zum Beispiel Name, Größte, Datum (auf & ab) zu sortieren, in diesem Fall bedeutet das mit x if & else's ein SQL Query zusammen zu schustern ...

    Mein Frage gibt es da eine saubere Möglichkeit oder besser noch gibt es eine Helfer Klasse / Funktion die mir die Arbeit abnimmt und diese Querys zusammen baut?

    Ich suche sowas wie also in der Anwendung ...

    Quellcode

    1. <?php
    2. $entries = sort('entries', 'name', 'desc');
    3. ?>


    Am coolsten wäre noch eine Pagigation Unterstützung! ;)

    Quellcode

    1. <?php
    2. $entries = sort('entries', 'name', 'desc', 0, 10); - 0 = offset | 10 = limit
    3. ?>
  • Ist doch schnell selbst geschrieben? Mit if & else musst Du Dich ja nur ärgern, wenn du es nicht abstrakt schreibst.

    Beispiel:

    Quellcode

    1. function sort($table, $sortBy, $order = "desc", $offset = 0, $limit = 10){
    2. $select = "SELECT * FROM `".$table."` WHERE `id` >= '".$offset."' ORDER BY `".$sortBy."` ".$order." LIMIT '".$limit."'";
    3. $entries = DB::query($select);
    4. return $entries;
    5. }
  • Schau dir mal das Thema Subselect ein.

    Beispiel:

    Baue dir eine beliebig komplexes Query mit Joins, uvm

    Quellcode

    1. SELECT * FROM table INNER JOIN table2 USING(x) WHERE SUBSTRING(column,1,1) = 'a' AND y = 1


    Hierauf willst du sortieren, Limitten und Offsetten

    Quellcode

    1. SELECT * FROM (
    2. SELECT * FROM table INNER JOIN table2 USING(x) WHERE SUBSTRING(column,1,1) = 'a' AND y = 1
    3. ) x
    4. ORDER BY column5 DESC
    5. LIMIT 10
    6. OFFSET 0


    Du kannst dir also einfach einen SQL String mit PHP zusammenbauen:

    Quellcode

    1. SELECT * FROM (
    2. $query
    3. ) x
    4. ORDER BY $sortBy $order
    5. LIMIT $limit
    6. OFFSET $offset