Yadgar: Eingabeseiten für MySQL-Datenbank

Beitrag lesen

Hi(gh)!

Vielleicht mein letzter Versuch, das Teil zum Laufen zu bekommen - wenn es nicht klappt, muss ich mich eben auf eine Eingabemaske für neue Datensätze beschränken und bei Bearbeitung vorhandener Datensätze wie gehabt PHPMyAdmin bemühen - was eine fiese Fummelei ist, da Indexwerte nicht in "Klartext" übersetzt werden.

Also: es geht um eine Datenbank für elektronische Orgeln, mit einer ganzen Anzahl von Eingabeseiten für die einzelnen Stammdaten und Relationstabellen. Die Tabelle, um die es hier geht heißt "hersteller" und hat folgende Felder:

ID (TINYINT, Primärschlüssel, AUTO_INCREMENT)
Firmenname (VARCHAR(60))
Land (VARCHAR(30))
Status (ENUM('aktiv','erloschen'))
Link (TINYTEXT)

Beim Klick auf "hersteller" in der Navigationsspalte am linken Fensterrand werden noch keine GET-Werte übergeben. Es öffnet sich die Seite mit den beiden Sub-Links "Datensätze hinzufügen" und "Vorhandene Datensätze bearbeiten". Während die Funktionalität von "Datensätze hinzufügen" einwandfrei implentiert ist (ich habe so etwas schon öfters programmiert und verwende den alten Code als Vorlage), gibt es mit "Vorhandene Datensätze bearbeiten" jede Menge Probleme.

Beim Klick auf "Vorhandene Datensätze bearbeiten" werden folgende GET-Variablen gesetzt:

section = 2
first = 0

section bezeichnet die beiden Hauptsektionen der Eingabeseiten (1 steht dabei für "Datensätze hinzufügen" und 2 eben für "Vorhandene Datensätze bearbeiten"). first bezeichnet die fortlaufende Nummer des Datensatzes in der ursprünglichen Eingabe-Reihenfolge (ohne ORDER BY-Operationen), ab der die jeweils nächsten 20 Datensätze auf der Seite angezeigt werden sollen. Diese Nummer ist NICHT identisch mit der von MySQL vergebenen Nummer im Feld ID; so hat der erste Datensatz in der Tabelle "hersteller" zur Zeit den ID-Wert 3 (die vorangegangenen Datensätze mit 0, 1 und 2 wurden gelöscht), in der PHP-Zählung für die Ausgabe haben die Datensätze aber natürlich weiterhin die Werte 0 bis 19.

Klicke ich nun auf "Vorhandene Datensätze", erscheint eine HTML-Tabelle mit allen Feldern und den ersten 20 Datensätzen der MySQL-Tabelle "hersteller", zusätzlich zu den Spalten entsprechend der Felder gibt es links noch zwei Spalten, die für jeden Datensatz je einen Link "Löschen" und "Bearbeiten" enthalten.

Die Spaltenköpfe mit den Feldnamen enthalten Links zu ORDER BY-Operationen; durch Klick wird die Tabelle entsprechend dem gewählten Feld aufsteigend sortiert, dabei werden folgende GET-Variablen gesetzt:

section = 2
sort = [Nummer des Feldes von 1 bis 5]
first = 0 (der Einfachheit halber auch bei höheren 20er-Blöcken)

Am Fuß der Tabelle wird ein Link zu den nächsten 20 Datensätzen angezeigt, folglich werden dort die GET-Variablen

section = 2
first = 20
und falls vorher ein ORDER BY-Link angeklickt wurde, auch
sort = [Nummer des Feldes von 1 bis 5]

Die Sortier-Links, der "Nächste 20 Datensätze"-Link wie auch die "Löschen"-Links funktionieren einwandfrei, das Problem, um das es hier geht, bezieht sich auf den "Bearbeiten"-Link.

Wenn ich jetzt neben dem ersten Datensatz in der Tabelle (ID = 3) auf "Bearbeiten" klicke, wird erneut die Tabelle wie bisher angezeigt, darunter dann die Eingabemaske (der Einfachheit halber in eine Funktion namens input() ausgelagert) mit den Werten des Datensatzes (ohne ID, da von MySQL automatisch vergeben) als vorgegebenen Inhalten. Interessanterweise werden diese Werte, soweit es sich um VARCHAR-Daten handelt nur bis zum ersten Whitespace übernommen, aber um diesen Fehler will ich mich später kümmern.

Die Daten kann ich jetzt ändern; ich gebe z. B. unter Land, wo bis jetzt "Japan" steht, "Nippon" ein.

Klicke ich dann auf "Daten absenden", sollte...

Oh Mann, jetzt sehe ich meinen Fehler: ich schicke die Daten mit method="POST" ab - dann wird natürlich im Array $_GET[] nichts verändert und das Programm kann nicht entsprechend reagieren! Und ich quäle mich monatelang rum und rätsele, was da los sein könnte...

...aber: die veränderten Datenbank-Daten sollten durchaus per POST abgeschickt werden, gleichzeitig müssen aber auch seiteninterne Daten mit GET übermittelt werden! Wie kann ich gleichzeitig POST und GET verwenden? Kann ich den submit-Button zusätzlich in einen <a> </a>-Link einschließen?

Bis bald im Khyberspace!

Yadgar

Bis bald im Khyberspace!