Rolf B: Formulare einer Tabelle mit verschiedenen Funktionen organisieren

Beitrag lesen

problematische Seite

Hallo borisbaer,

ich würde ein Form um das ganze Ding drumherumlegen und gut ist.

Submit-Buttons sind Highlander: Es kann zwar mehr als einen geben, aber am Server kommt nur einer an. Deswegen ist

if ( isset( $_POST['sort'] ) && !isset( $_POST['reset'] ) && !isset( $_POST['create'] ) )

meines Erachtens überflüssig. Du bekommst ENTWEDER sort ODER reset ODER apply. Create vielleicht auch mal irgendwann, aber das scheint noch auf Halde zu liegen.

Du solltest aber entweder den reset und sort Buttons für Sortierung und Suche unterschiedliche name-Werte geben, oder ihnen zumindest einen Value hinzufügen, so dass Du apply und reset für Sortierung und Suche unterscheiden kannst.

Und dann musst Du einfach nur von oben nach unten abfragen.

if (isset($_POST['sort'])) {
   // Spalten-Header
   sortBy($_POST['sort']);
} 
else if (isset($_POST['apply']) && $_POST['apply'] == 'sort') {
   // Apply-Sort Button 
   sortBy($_POST['sort'], $_POST['order']);
} 
else if (isset($_POST['reset']) && $_POST['reset'] == 'sort') {
   // Reset-Sort Button 
   resetSort();
} 
else if (isset($_POST['apply']) && $_POST['apply'] == 'search') {
   ...
}
else if (isset($_POST['reset']) && $_POST['reset'] == 'search') {
   ...
}
else if (isset($_POST['create'])) {
   ...
}

Ein solcher Verteiler ist in einem Form mit vielen Funktionen durchaus okay.

Was Dir auch helfen kann, ist ein spezieller Value in den Tabellentiteln, die einen Sort auslösen. Da steht im Moment name="sort" und value="title", ganz gleich, ob die Tabelle nach dem Titel sortiert ist, und ob das auf- oder absteigend ist. D.h. Du musst Dir im Moment serverseitig merken, welche Sortierung vorliegt. Wenn Du im Value-Attribut bereits codierst, welche Reihenfolge herzustellen ist, brauchst Du das nicht. Im Normalfall würdest Du also in value-Attributen der 4 Spalten die Werte "title.asc", "franchise.asc", "origin.asc" und "year.asc" speichern. Klickt man nun auf den Button für die Titelspalte, sortierst Du nach Titel aufsteigend und speicherst im value-Attribut dieses Buttons nun "titel.desc". D.h. das, was passieren soll, wenn man draufklickt. Bekommst Du nun "sort=titel.desc" geschickt, weißt Du, dass absteigend nach Titel zu sortieren ist, und speicherst dann im value-Attribut wieder "titel.asc".

Rolf

--
sumpsi - posui - obstruxi