Tach!
ich versuche meiner Tabellenbasierten Datenbankübersicht (HTML, PHP) eine Sortierung zu verpassen.
Dein Code zeigt aber keine Sortierung sondern das Zusammenbauen einer WHERE-Bedingung.
(der Übersicht halber zunächst in eine temporäre Variable)
IF (isset($_GET['showAK'] )) { $ListAkademie = $_GET['showAK']; $listing[] = " KERN_AKADEMIE = '$ListAkademie' "; }
Ich weiß grad nicht, was daran übersichtlicher sein soll, statt ohne Zusatzvariable gleich den Wert zu verwenden. Was aber falsch ist: ihn ohne Maskierung zu verwenden. Das ist eine SQL-Injection-Lücke. Der Kontextwechsel muss immer beachtet werden.
if (isset($_GET['showAK'] )) { $listing[] = sprintf(" KERN_AKADEMIE='%s' ", escape($_GET['showAK'])); }
Statt escape
musst du das nehmen, das in deiner Datenbank-API vorgesehen ist. Vielleicht ist es das oder jenes.
Der abschließende SELECT Befehl verwendet nun die Variable "$multisort", die durch implode erstellt wird.
Als würde die Session['listing'] jedes mal überschrieben werden. In der Variable steht immer nur ein Wert, sodass auch implode nie ein AND dazwischen bastelt.
Wenn Wunsch und Wirklichkeit nicht übereinstimmt, muss man debuggen. Gib dazu im einfachsten Fall die Werte der Variablen und Ergebnisse von Funktionsausfrufen mit var_dump()
aus, und ermittle so, wo Abweichungen entstehen. (Ein <pre> davor auszugeben erhöht die Lesbarkeit.)
Mit Session Arrays habe ich kaum Erfahrungen, bin mir aber sicher das ich hier etwas wichtiges nicht bedenke :(
Vielleicht die Session nicht gestartet? Ein Indiz dafür wäre, wenn $_SESSION jedes Mal leer ist. Aber ohne zu wissen, was genau passiert, ist das nur der Versuch von Hellseherei.
Eventuell ist mein Weg auch generell Käse und das ginge viel eleganter ?
Es ist ein Anfang. Aber vielleicht wird der Wunsch aufkommen, die Sortierung in beide Richtungen vornehmen und auch wieder aufheben zu können.
dedlfix.