Zum Inhalt springen

FE-Plugin - POST-Parameter per INSERT, Variablen bleiben nach Reload gefüllt

Erstellt am 5. März 2011 · 2 Antworten · letzte Antwort am 8. März 2011

Tags: PHP, Frage

LobLob ·

Hallo,

hab ein Problem mit dem Schreiben von POST-Formulardaten in die DB.

Formularverarbeitung und INSERT hab ich mit der Typo3-API gemacht, soweit so gut.

1) bei Reload nach erfolgreichem Formularversand bleiben die Formulardaten irgendwo "am leben", egal was ich mache, und werde beim nächsten Nutzer dann wiederum anstelle der aktuellen Eingabe in die DB geschrieben.

2) sobald die Seite aufgerufen wird, startet der INSERT, noch bevor das Formular abgesendet wurde.... und schriebt eben die alten Formulardaten rein.

HILFE!
Hier der Code:

das Formular:

</form>
<input type="text" name="post1" value="">Text1
<input type="text" name="post2" value="">Text2
<input type="submit" name="Absenden!"/>
</form>

In der Plugin-Klasse:

// Formularverarbeitung

// POST-Parameter in Array schreiben
$dataArr['post1']= t3lib_div::_POST('post1'); 
$dataArr['post2']= t3lib_div::_POST('post2'); 
		
//DB  INSERT in Tipptabelle
$insertArray = array(
'pid' => $GLOBALS['TSFE']->id, //ID der Seite auf der das Plugin läuft
'nutzerid' => $userid, //FE user
'eintrag1' => $dataArr['post1'], 
'eintrag2' => $dataArr['post2']
); 
$insertQuery = $GLOBALS['TYPO3_DB']->INSERTquery('tx_myext_tabelle', $insertArray);
$res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $insertQuery);

//hab alle Arten von Variablenleerung ausprobiert...
unset ($dataArr['post1']);
unset ($dataArr['post2']);
unset ($insertQuery);

Egals was ich mache, die Formualrparameter des voherigens Tipps bleiben im System, unzerstörbar wie die Zombies.

Bin PHP Anfänger und kenne Typo3 bisher eher als Admin. Jetzt muss ein FE-Plugin gebaut werden. Technisch geht es um ein gewöhnliches Formular, dass Werte in eine extra DB-Tabelle schreiben soll.

vince ·

Hallo,
In Typo3 werden die POST und GET Paramaeter für jede Extension in den piVars gespeichert.

piVars ist ein Klassenattribut bei deiner plugin klasse.

<input name='key_deiner_extension[post1]' ...>

und dann in der Plugin Klasse:

$this->piVars['post1'];
LobLob ·

Danke Vince,

jetzt geht es.

Über die piVars hatte ich natürlich schon was gelesen... aber bisher nicht gewusst was ich damit konkret anfangen soll.

Hier zeigt sich übrigens mal wieder die liebevolle und total überflüssige Kompliziertheit von Typo3, denn einerseits ist man froh wenn man

t3lib_div::_POST('parameter')

kapiert hat, weil das dringend empfohlen wird, und andererseits ist dass dann wieder gar nicht gefragt... kennt Ihr Asterix und Obelix im Haus das Verrückte macht (rosa Formular, blaues Formular, etc.) ;-)

jedenfalls läuft es jetzt!