borisbaer: Formulare einer Tabelle mit verschiedenen Funktionen organisieren

Beitrag lesen

problematische Seite

Hallo Rolf,

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

so hatte ich es auch am Anfang, aber …

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

wenn man z.B. die Enter-Taste zum Bestätigen eines Text-Inputs drückt, anstatt den passenden Submit-Button, dann wird ja immer der erste Submit-Button des Formulars verwendet. Doch da das Formular ganz unten noch einen zweiten Text-Input hat (nämlich zum Erstellen eines neuen Eintrags), wird natürlich beim Drücken der Enter-Taste dort der falsche Submit ausgeführt (nämlich der der Suchfunktion). Ich hoffe, es ist klar, was ich meine.

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.

Ohne diese Bedingungen funktioniert das Formular bei mir momentan jedoch nicht richtig. Create funktioniert bereits, aber es ist eben nur für den Admin sichtbar. Ich kann es aber gerne für alle sichtbar machen.

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.

Das werde ich mir noch mal genauer anschauen, danke!

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".

Speichern ohne serverseitiges Merken? Das ist mir neu. Ich kann natürlich den Buttons diese Values geben, aber da nach einem Klick auf den jeweiligen Button im th die Seite neu aufgebaut wird, erschließt sich mir nicht, wie der Value beim neuen Seitenaufbau übertragen werden soll. Momentan ist die Reihenfolge der Sortierung im th als aria-sort="ascending" bzw. aria-sort="descending" festgelegt.

Grüße
Boris