PHP/MySQL - Im Query so rum im Link andesrum (ASC & DESC)

Benutzer-621

abgemeldet
20 April 2006
744
64
Moin,
Sorry, für den net so passenden Titel, aber weiß net genau was ich dafür nehmen könnte. Also wie muss ichs machen, dass ich nur mit einer Variable eine Sortierung nach XXX mach. Im Query soll z.B. nach ASC sortiert werden aber $order soll z.B. DESC ausgeben.

Bsp:
PHP:
$order = $_GET['order'] == "ASC" ? "ASC" : "DESC";
$fxq = mysql_fxq("SELECT id, time .... FROM table ORDER BY ".$sort."");
$link = '<a href="?sort=id&order='.$order.'"></a>';

nun wird der Query z.B. wenn example.php?sort=id&order=DESC aufgerufen nach DESC sortiert, aber im Link soll $order das Gegenteil ausgeben, also ASC, kann man das realisieren mit nur einer Variable/Ternärer Operator oder muss ma das was mit if/elseif wurschteln??? Danke schonmals.

MfG
 
Zuletzt bearbeitet:
Mit dem ternären Operator, den Du in dem Skriptstück doch schon verwendest, ist das ganz leicht zu realisieren.
PHP:
echo $foo.($sort=='ASC'?'DESC':'ASC');
 
PHP:
$sort = $_GET['order'] == "ASC" ? "ASC" : "DESC";
Da steht die Lösung doch schon ;)

Im einen nimmste $sort im anderen das Gegenstück.
 
tleilax schrieb:
Mit dem ternären Operator, den Du in dem Skriptstück doch schon verwendest, ist das ganz leicht zu realisieren.
PHP:
echo $foo.($sort=='ASC'?'DESC':'ASC');

Mhh stimmt, aber dachte mir es geht vllt. noch "einfacher/besser" ála Tenärer Operator im Tenärer Operator oder so.
 
So'n Konstrukt wie $foo?($bar?1:2):3 ist nie besser, weil's einfach nicht zu lesen ist. Da stolpert man nur immer wieder drüber und braucht ein Weilchen, um zu schnallen, was der Ausdruck eigentlich macht.
 
Zuletzt bearbeitet:
tleilax schrieb:
So'n Konstrukt wie $foo?($bar?1:2):3 ist nie besser, weil's einfach nicht zu lesen ist. Da stolpert man nur immer wieder drüber und braucht ein Weilchen, um zu schnallen, was der Ausdruck eigentlich macht.

ok, dann will ich dir das mal glauben und bedanke ich mich und benutze deine Variante :D
 
tester schrieb:
Mhh stimmt, aber dachte mir es geht vllt. noch "einfacher/besser" ála Tenärer Operator im Tenärer Operator oder so.
Gegen die Syntax isses nicht.
Die Frage is, was du leichter wieder liest:
PHP:
if($a==$b)
  if($c==$d)
    $e=$f;
  else
    $e=$g;
else
  if($c==$d)
    $e=$h;
  else
    $e=$i;
Oder:
PHP:
$e=($a==$b) ? (($c==$d) ? $f : $g) : (($c==$d) ? $h : $i);

Ich persönlich benutze den ternären Operator gern, aber halt nur, wo ein if unnötig viel Platz brauchen würde und es mit dem "Inline-if" halt besser zu lesen geht.
 
theHacker schrieb:
Gegen die Syntax isses nicht.
Die Frage is, was du leichter wieder liest:
PHP:
if($a==$b)
  if($c==$d)
    $e=$f;
  else
    $e=$g;
else
  if($c==$d)
    $e=$h;
  else
    $e=$i;
Oder:
PHP:
$e=($a==$b) ? (($c==$d) ? $f : $g) : (($c==$d) ? $h : $i);

Ich persönlich benutze den ternären Operator gern, aber halt nur, wo ein if unnötig viel Platz brauchen würde und es mit dem "Inline-if" halt besser zu lesen geht.

Klar blickt man beim if/else dort schnelle druch, aber man könnt halt auch

PHP:
$e=($a==$b) ?
              (($c==$d) ? $f : $g) :
                                     (($c==$d) ? $h : $i);

machen, so wirds wieder leichter
 
tester schrieb:
Klar blickt man beim if/else dort schnelle druch, aber man könnt halt auch
PHP:
$e=($a==$b) ?
              (($c==$d) ? $f : $g) :
                                     (($c==$d) ? $h : $i);
machen, so wirds wieder leichter
Ich denk mal, das macht jeder, wie er will. Ich hab z.B. ganz eigene Coding-Macken, die nur ich mach.
Hauptsache is, man blickt in einem Code durch.

Ich zitiere mal einen Ausschnitt aus Code, den ich mal bewerten sollte:
PHP:
// ....

mysql_query($anfrage);

trans($kid, $empf, $betreff, $art, $menge, $ip, $zeit);
}
}
}
}
}

// ....
:roll:

@unbekannter Code-Autor, dessen Name ich nicht nennen werde:
Hehe, hab ichs doch gepostet :ugly: