PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formulareingaben nach abschicken erhalten


Blade II
2007-05-27, 15:42:21
Hey ho

Ich hab ein Formular, unter welchem nach Abschicken Fehlermeldungen angezeigt werden. Durch das Abschicken wird die Seite neu geladen und somit wird auch der Inhalt des Formulars gelöscht.

Nun möchte ich, dass eben dies nicht passiert und die Eingaben erhalten bleiben.

Ist das irgendwie per JavaScript zu realisieren?

MfG Blade II

DanMan
2007-05-27, 16:57:14
Indem du die Seite nicht neu lädst, sondern indem du eine Seite zurückgehst?

Blade II
2007-05-27, 17:39:59
Wieso soll ich eine Seite zurück gehen?
Sorry, bin leider kein JavaScript Held :-(

DanMan
2007-05-27, 18:02:16
Wieso soll ich eine Seite zurück gehen?
Sorry, bin leider kein JavaScript Held :-(
Nun, du kommst doch vom Formular, und gehst zur Bestätigungsseite. Also kannst du doch eine Seite zurück zum Formular gehen, dann sollten auch die eingetragenen Daten noch drinstehen.

Blade II
2007-05-27, 18:05:35
ne, nicht ganz.

Wenn man auf den submit Button klickt, dann wird die gleiche Seite geladen, da das Formular und der PHP-Code in 1 Datei liegt.

DanMan
2007-05-27, 18:07:43
ne, nicht ganz.

Wenn man auf den submit Button klickt, dann wird die gleiche Seite geladen, da das Formular und der PHP-Code in 1 Datei liegt.
Dann weiß ich auch nicht, sorry.

darph
2007-05-27, 23:19:34
Geht es um ein Formular, daß du als User benutzt oder erstellst du eine Seite?


$value = isset($_POST["formular"]) ? $_POST["formular"] : "";
echo('<input name="formular" value="'.$value.'">');

(Vorsicht, so nicht sicher.)

Blade II
2007-05-28, 11:02:57
Ja, in die Methode hab ich auch schon gedacht, in die value Einträge einfach <?=$_POST['value'];?> einzutragen, das Problem ist halt nur, dass das immer extrem viel Schreibarbeit ist (in diesem Fall sind es 50 input-Felder).

darph
2007-05-28, 12:59:16
Hm... :uponder: schreib dir eine Klasse Form.
class Form {
private $name;

public function Form($name) {
$this->name = $name;
}

public function toString() {
return '<input type="text" name="'.$this->name.'" value="'.$_POST[$this->name].'" />';
}
}

$forms = Array();
$forms[] = new Form("name");
$forms[] = new Form("name2");
$forms[] = new Form("name3");

for ($forms as $myForm) {
echo($myForm->toString()."<br />");
}

Ich bin mir jetzt nicht sicher, ob du von innerhalb der Klasse auf $_POST zugreifen kannst. Evtl mußt du dir noch Gedanken machen, wie du das dann in dein Objekt bekommst.

Eventuell dann auch so:
class Form {
// ...

public function getName() {
return $this->name;
}

public function toString($value) {
$myValue = isset($value) ? $value : "";

return '<input type="text" name="'.$this->name.'" value="'.$myValue.'" />';
}
}
und dann
$forms = Array();
$forms[] = new Form("name");
$forms[] = new Form("name2");
$forms[] = new Form("name3");

for ($forms as $myForm) {
echo($myForm->toString($_POST[$myForm->getName()])."<br />");
}

Aber wie gesagt: Das ist so nicht gegen das Einschleusen von Code geschützt.