Zum Inhalt springen

auf Formular-Eingaben richtig reagieren

Erstellt am 2. Februar 2009 · 2 Antworten · letzte Antwort am 3. Februar 2009

Tags: PHP, Frage

ManfredD ·

Hallo!

Ich kenn mich leider noch nicht so gut in TYPO3 aus und schreibe gerade meine erste Frontend-Extension.

Dazu schreibe ich den PHP-Code in die Datei \pi\class.tx_[NAME]_pi1.php und nutze ein HTML-Template für die Ausgabe. In dem Template hab ich mit "<!-- ###TEMPLATE### begin -->" Bereiche markiert, die in der PHP-Datei dynamisch gefüllt werden.

Bei ein paar Dingen bin ich mir noch unsicher, z.B. wie ich richtig auf Formular-Eingaben reagiere. Ich glaube, dass ich das momentan sehr umständlich mache:
Ich schreibe in das name-Attribut meines <input />-Elementes Werte wie "active#3" oder "box#1". Die Zahl hinter dem "#" ist dabei die Datenbank-ID des Eintrages, den ich manipulieren will. Nachdem der Anwender auf den Formular-Button klickt, analysiere ich das Array "$this->piVars":

while (list($key,$val)=each($this->piVars)) {
	list ($type, $number) = split('#', $key);
	switch ($type) {
		case "active": 
			// tue etwas: DB-ID = $number, Wert = $key
			break;
		case "box": 
			// tue etwas: DB-ID = $number, Wert = $key
			break;
	}
}

Ist das so ok oder gibt es da elegantere Wege? *g*

Vielen Dank und viele Grüße
Manfred

PS: Meine PHP-Datei hat jetzt schon über 1000 Zeilen, kann ich den Code in mehrere PHP-Dateien auslagern?

ManfredD ·

Danke für deine Antwort!

Hmmm, mit einem zusätzlichen Hiddenfield würde ich ja weiterhin die Variablen mit "while (list($key,$val)=each($this->piVars))" auslesen und würde nur das "#" sparen.

Aber dann bekomme ich Probleme, wenn ich mehrere DB-Einträge habe, die ändern will. Z.B. hab ich auf einer Formular-Seite eine dynamische Anzahl an Zeilen (je Zeile einen DB-Eintrag). Der Benutzer kann nun in jeder Zeile einen Wert ändern und. So muss für jede Zeile die DB-ID und den Wert parat haben.

Beispiel:
betrag#1 -> 0.04
betrag#2 -> 1.10
betrag#3 -> 2.08