Wie verwirkliche ich eine Sortierfunktion ?

Falke

Mitglied
Ich möchte es gerne so haben das wenn man auf die überschrift klickt, zum beispiel titel, sollen beim ersten klick alle titel von a-z sortiert werden und wenn man dann nochmal draufklickt sollen alle titel von z-a sortiert werden. Mein problem ist bloß das ich keine ahnung habe wie ich das umsetze. Kann mir jemand ein beispiel sagen , oder gibt es dafür sogar eine funktion in php ?
 
Hallo Falke,
ich habe zu deinem Post erstmal ein paar Sachen zu sagen:

1. Irgendwie kommt dein Post nicht sehr sympatisch rüber, also ein bisschen netter gehts doch wohl, oder ? ;)
2. Ich würd mich freuen, wenn du dein Problem genauer beschreiben würdest.

So, nun zum Thema...

Dafür ist wichtig, wie/wo du deine Daten gespeichert hast.
 
Hallo!

Nun ja, das kommt darauf an wo Deine Daten gespeichert sind. Liegen die in einem Array vor, oder holst Du die Daten aus einer Datenbank?

Wenn Du sie aus einer Datenbank holst reicht es aus den SELECT-Befehl zu erweitern durch ORDER BY blablabla ASC bzw. DESC:
Code:
SELECT * FROM table WHERE feld1='suchkriterium' ORDER BY feld1 ASC;
bzw.
Code:
SELECT * FROM table WHERE feld1='suchkriterium' ORDER BY feld1 DESC;
Das eine ist aufsteigende Sortierung, das andere für absteigende.

Bei Arrays könnte Dir der Sort-Befehl weiterhelfen:
Code:
<?php
   $fruits = array ("Zitrone", "Orange", "Banane", "Apfel");
   sort ($fruits);
   reset ($fruits);
   while (list ($key, $val) = each ($fruits)) {
      echo "fruits[".$key."] = ".$val."\n";
}
?>

Schau am besten mal hier auf http://www.php.net nach. :)

Hoffe ich konnte helfen.
 
Prinzipiell kann ich Lars zustimmen.

Aber ein Lösungsansatz wäre (unabhängig von der Speicherungsmethode der Daten), eine Variable via URL zu übergeben und abhängig von dieser deine Daten einmal normal über ein Array auszugeben und dieses Array im anderen Falle, via array_reverse() umzukehren.
 
Ich glaube er wollte es so haben, dass er auf die Überschriften der Tabelle klickt und die Einträge sich danach dann ordnen.
Oder?

Du setzt auf die überschrift einen Link:

PHP:
<a href="seite.php?feld=tabellenfeld&folge=asc">Tabellenüberschrift</a>

Dann musst du einfach noch die MySQL Abfrage machen:

PHP:
$result=mysql_query=("SELECT * FROM tabelle ORDER BY $feld $folge;
");
 
Tut mir leid wenn ich unfreundlich rübergekommen bin, bin sonst eigentlich ganz nett :rolleyes:

Ja nun zum Thema.Ich hole die Daten aus einer Datenbank. Die SQL Funtion zum sortieren kenne ich. Bloß das problem ist das ich nicht weiß wie ich das umsetzte da ich 3 verschiede sachen habe. Titel, Autor, Verlag. Titel und Autor in einer Tabelle, Verlag in einer weiteren. Ich würde gerne wissen wie ich das mit den Links mache und wie php erkennt welche reihenfolge als nächstes kommt und was es sortieren soll, die titel oder die autoren. Ich muss doch bestimmt irgendwie irgendwelche parameter per link übergeben, oder ? ich komm irgendwie da nicht weiter. Ist auch schwer mein problem zu erklären
 
Ja genauso meinte ich das @ Lars.

Und wie mache ich das dann noch das er erst nach a-z und beim 2. klick z-a sortiert ?

vielen dank dafür :-)
Ich geh dann mal testen ....
 
Mensch, hier muss man ja alles vorkauen. :)
Natürlich muss man die Seite irgendwann reloaden, am besten mit einem Link. *fg* :D

Du könntest einen Übergabeparameter verwenden. Eine Variable, die bei 0 beispielsweise a-z sortiert und bei 1 von z-a.

Je nach dem wie die Variable gesetzt wurde musst Du die Sortierfunktionen ausführen.

Häng einfach an den Link einen Parameter an:
Code:
<a href="seite.php?order=1">[A-Z]</a>

bzw.

Code:
<a href="seite.php?order=0">[Z-A]</a>
 
Zuletzt bearbeitet:
Ich glaub ich hab verstanden was du willst ;)

Ich hab das doch noch irgendwo rumliegen...*rumwühl* *grübel*

PHP:
<? 
//Hier werden die Standardwerte festgelegt
if($sortfield!="") { } else { $sortfield="titel"; } 
if($sortorder!="") { } else { $sortorder="asc"; }  
?>
<a href="seite.php?sortfield=titel&sortorder=$sortfield">Titel</a>
<a href="seite.php?sortfield=author&sortorder=$sortfield">Author</a>

<?
//Hier wird die Datemnankabfrage erstellt
$result = mysql_query("SELECT * FROM tabelle ORDER BY $sortfield $sortorder");

//Damit beim erneuten klicken auf den Link die Reihenfolge andersherum ist
if($sortorder=="asc") { $sortorder="desc"; } else { $sortorder="asc"; }
?>

Boah, für diese Schnippsel musst ich aber tief graben ;)
Ich gebe keine Garantie auf die Richtigkeit des Codes :-)
 
Zuletzt bearbeitet:
Zurück