Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Frage zu POST-Array
Frage
Hallo,
ich habe ein HTML-Formular in eine Seite eingebaut. Hierbei handelt es sich um eine php-Datei, da ich die Formularverarbeitung in der gleichen Datei machen möchte. Hintergrund ist, dass ich bei einer Fehleingabe oder gar keiner Eingabe bei Muss-Feldern keine fehlerseite anzeigen möchte, sondern die gleiche Seite noch einmal, aber die entsprechenden Felder, wo etwas nicht stimmt, markiert haben möchte (z.b. text dahinter: "hier bitte was eingeben..bla" oder so).
Zudem möchte ich aber auch, dass bei den Feldern, in denen schon etwas eingegeben wurde, dies auch nicht nochmal neu eingegeben werden muss.
Mein Code sieht folgendermaßen aus (beispielhaft für ein Feld):
[code]
<select name="anrede">
<option value="Herr" <? if( $_POST['anrede']=="Herr") echo ' selected="selected"';?>>Herr</option>
<option value="Frau" <? if($_POST['anrede']=="Frau") echo ' selected="selected"';?>>Frau</option>
</select>
[/code]
Hier erhalte ich aber eine Notice (error_reporting(E_ALL)), dass ich auf einen falschen Index zugegriffen habe. Ich kann mir das nicht erklären, ich dachte eigentlich, dass, egal ob ich wo etwas eingebe, das formular-feld eh gesendet wird, notfalls mit leerem string als wert. Woran liegt es?
Gruß daniel
Antwort 1 von MixMax
wenn du dir Warnungen anzeigen läßt, ergibt
auch einen Fehler beim erstaufruf da keine POST-Variablen gesetzt sind. im grunde müstest du auf die existenz noch prüfen:
Du solltest warnungen nicht ausgeben lassen, außer zum testen - ist in der Regel einfacher, so das du nur wenns wichtig ist auf isset prüfen must..
felder mit disabled werden nicht gesendet, der erstaufruf der seite ist evtl nur ein GET und hat keine formulardaten zum senden.
if ($_POST['anrede']=="auch einen Fehler beim erstaufruf da keine POST-Variablen gesetzt sind. im grunde müstest du auf die existenz noch prüfen:
if (isset($_POST['anrede']) and $_POST['anrede']=="Du solltest warnungen nicht ausgeben lassen, außer zum testen - ist in der Regel einfacher, so das du nur wenns wichtig ist auf isset prüfen must..
felder mit disabled werden nicht gesendet, der erstaufruf der seite ist evtl nur ein GET und hat keine formulardaten zum senden.
Antwort 2 von php-anfaenger
Danke erstmal für die Antwort!
Gibts denn noch eine einfachere Methode, um die Fehler auf der Formularseite anzeigen zu lassen? Find es so wie ich es vorhab ehrlich gesagt ein bisschen umständlich. Gut wärs, wenn ich innerhalb des Formulars gar kein php-Code hätte. Geht das?
Gibts denn noch eine einfachere Methode, um die Fehler auf der Formularseite anzeigen zu lassen? Find es so wie ich es vorhab ehrlich gesagt ein bisschen umständlich. Gut wärs, wenn ich innerhalb des Formulars gar kein php-Code hätte. Geht das?
Antwort 3 von MixMax
bei POST daten nein, die kannst du nicht per javascript wieder einfügen.
bei GET gehts ist aber umständlicher.
Du hast ja sicher über dem Formular im PHP-Code die Formularverarbeitung... Du kannst natürlich da beim prüfen auch standartwerte setzen...
bei GET gehts ist aber umständlicher.
Du hast ja sicher über dem Formular im PHP-Code die Formularverarbeitung... Du kannst natürlich da beim prüfen auch standartwerte setzen...
<?php
## Formularverarbeitung:
if (getenv('REQUEST_METHOD')) == 'POST') {
# Blahblub ich prüfe was der Nutzer so geschickt hat
}
else {
# wir haben keine Daten also standartwerte setzen.
$_POST['anrede'] = '';
}
?>
