Sortieren per Klick (wie in phpmyadmin)

Ruediger

Erfahrenes Mitglied
Hallo zusammen,

ich möchte meine Datenspalten, die ich auslese, per Klick sortieren lassen. Und zwar auf und absteigend nach ID und nach Datum.

(bei phpmyadmin ist die gleiche funktionsweise, wenn man auf den spaltennamen klickt.)

wie kann ich das anstellen?
danke im voraus
rue
 
du musst deine mysql queries einfach dynamisch erstellt, also variablen einsetzen.

$ORDER = $_GET["order"];
'SELECT * FROM table ORDER BY $ORDER'

nun übergiebst du $ORDER per url: script.php?order=id

dann ergibt dein query ja 'SELECT * FROM table ORDER BY id

für id kannst du jetzt jeden spaltennamen einsetzten.

bei ASC bzw DESC machst du das gleich, erstellst ne variable $ASCDESC und übergibst ihr mit der url einen wert.
 
hi dave,

danke für den tip.
die übergabe von der order_by variablen klappt. allerdings kann ich nicht ASC und DESC übergeben.

PHP:
if ($sort=="")
							  {
							  	$sort="DESC";
							  }
							  elseif ($sort=="DESC")
							  {
							  	$sort="ASC";
							  }
							  elseif ($sort=="ASC")
							  {
							  	$sort="DESC";
							  }

$sort stellt bei mir ASC oder DESC dar. Wenn die liste zur zeit nach asc sortiert wird, soll sie das nächste mal nach desc sortiert werden. das klappt aber so nicht. er sortiert imer nach desc.
 
was meinst du mit "das nächste mal" ?

wenn man dein script aufruft, ohne $sort zu definieren, ist es so, dass DESC hergenommen wird.

definiert man $sort mit desc, wird asc hergenommen, bei asc mit desc hergenommen.

den sinn verstehe ich nicht ganz.
 
standardmäßig gehe ich davon aus, dass die seite ohne die variable
$sort aufgerufen wird, also setze ich Sie gleich "DESC" - das klappt.

dann habe ich den link "Status", dieser verweist zur selben Seite und übergibt die order_by variable. dann soll er außerdem je nach einstellung der variable ($sort) das gegenteil übermitteln. also wenn $sort=ASC ist soll $sort=DESC übermittelt werden.

nur das geht nicht .....
 
du kannst es soch machen:

PHP:
$sort = $_GET["sort"];

if(!$sort){
 $sort = "DESC";
}else{

 if($sort=="ASC"){
   $sort = "DESC"; 
 }elseif($sort == "DESC"){
   $sort = "ASC";
 }

}

du willst ja, dass wenn $sort nicht gesetzt ist sort desc ist (und nicht in asc umgewandelt wird) richtig?
 
eleganter und übersichtlicher als if-konstrukte sind switches.


PHP:
switch($schalter){

 case asc:
        $sorieren = "ASC";
        break;
    case desc:
        $sorieren = "DESC";
        break;
    default:
        $sorieren = "DESC";
        break;
}

wobei default immer benutzt wird, wenn $schalter nicht gesetzt ist, wenn schalter asc bzw. desc ist, wird umgeschaltet.

das ist in den vielen fällen übersichtlicher und einfacher als if zu verwenden.

Greetz,
Neuro
 
Zurück