You are not logged in.

  • Login

1

Friday, October 2nd 2009, 8:16pm

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 ...

PHP Quellcode

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


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

PHP Quellcode

1
2
3
<?php
$entries = sort('entries', 'name', 'desc', 0, 10); - 0 = offset | 10 = limit
?>

2

Saturday, October 3rd 2009, 2:37pm

Ist doch schnell selbst geschrieben? Mit if & else musst Du Dich ja nur ärgern, wenn du es nicht abstrakt schreibst.

Beispiel:

PHP Quellcode

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

3

Saturday, October 3rd 2009, 8:33pm

Ne ist schon etwas problematischer ich hab vergessen das es auch so etwas wie sortieren nach Buchstaben usw geben soll ich glaube aber irgendwie das lässt sich nicht extrem sauber / simple lösen ...

4

Sunday, October 4th 2009, 4:24pm

Wie meinst du das? "Sortieren nach Buchstaben"
MySQL sortiert problemlos Zahlen und Buchstaben - oder meinst du eine Einschränkung nach Anfangsbuchstaben? So wie hier in der Mitgliederliste.

5

Sunday, October 4th 2009, 5:15pm

Genau das meine ich das man sagen kann gib mir alle User die mit A anfangen ich meine die Umsetzung sprich so das es funktioniert ist ja kein wirkliches Problem aber ich finde es wie gesagt nicht wirklich sauber sprich die Abfrage zusammen bauen, die Links zum sortieren generieren usw ...

6

Sunday, October 4th 2009, 6:15pm

Schau dir mal das Thema Subselect ein.

Beispiel:

Baue dir eine beliebig komplexes Query mit Joins, uvm

SQL Code

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

SQL Code

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


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

PHP Quellcode

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

Similar threads

Social bookmarks