Dropdown Formularfeld --> mind. 1 Wert muss ausgewählt werden
Bruzzler
- php
Hallo zusammen,
hoffe auf Eure Hilfe. Habe ein Formularfeld, in dem mehrere Termine zur Auswahl stehen. Es soll genau 1 Termin ausgewählt werden, ansonsten soll eine Fehlermeldung erscheinen. Darüber hinaus darf der Wert "Bitte Termin auswählen" nicht als gültiger Eingabewert verstanden werden.
Hier die Website und der Code:
Hier mein bisheriger Code:
<select name="datum">
<option>bitte gewünschten Termin auswählen</option>
<option <? echo ($datum=="08.08.2009") ? "SELECTED":""?>>08.08.2009</option>
<option <? echo ($datum=="09.08.2009 ") ? "SELECTED":""?>>09.08.2009</option>
<option <? echo ($datum=="10.08.2009") ? "SELECTED":""?>>10.08.2009</option>
<option <? echo ($datum=="11.08.2009") ? "SELECTED":""?>>11.08.2009</option>
</select><font color="red"><? echo $datumfehler?></font>
Mein PHP Code ist dabei folgender:
<?php
switch($_GET["action"])
{
case "pruefen":
{
Pruefen();
break;
}
default:
{
$fehlertext="";
Formular($email, $daten, $preis, $emailfehler, $datumfehler, $fehlertext);
}
}
function check_email($email) {
// RegEx begin
...
// RegEx end
return preg_match("/^$regex$/",$email);
}
function Pruefen() {
if (isset($_POST["bestellen"])) { # wenn der Submit Button betaetigt wurde
# wird das Formular ausgewertet
# Parameter aus dem Array $_POST auslesen
$email = $_POST["email"];
$datum= $_POST["datum"];
$daten = $_POST["daten"];
$preis = $_POST["preis"];
$fehler = 0;
if ($email == "") {
$emailfehler = "<b>*</b>";
$fehler = 1;
}
if ($datum == "bitte gewünschten Termin auswählen") {
$datumfehler = "<b>*</b>";
$fehler = 1;
}
if ($fehler){
$fehlertext = "<font color='red'>Bitte füllen Sie alle Pflichtfelder aus.<br><br><br></font>";
Formular($email, $daten, $preis, $emailfehler, $datumfehler, $fehlertext);
}
else {
...
}
}
}
function Formular($email, $daten, $preis, $emailfehler, $datumfehler, $fehlertext) {
?>
Hoffe mir kann jemand helfen, wenn kein Datum ausgewählt wurde, erscheint keine Fehlermeldung. Wenn ich aber ein Datum auswähle, springt nach Klick auf Bestellen der value wieder auf "bitte termin auswählen."
Was mache ich falsch?
Danke schonmal und viele Grüße
Hello,
Danke schonmal und viele Grüße
Du hast das selected="selected" vergessen für das ausgewählte Feld.
Außerdem würde ich den Optionen Nummern geben. 0 für 'nichts ausgewählt'. Aber das ist Geschmackssache.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Außerdem würde ich den Optionen Nummern geben. 0 für 'nichts ausgewählt'. Aber das ist Geschmackssache.
Warum nicht den "bitte auswählen"-Hinweis auf disabled? In dem Fall wird nix übertragen wenn nichts ausgewählt wurde. Halte ich für eleganter aber ist sicher auch Geschmackssache ;)
Grüße, Matze
Hello,
Warum nicht den "bitte auswählen"-Hinweis auf disabled? In dem Fall wird nix übertragen wenn nichts ausgewählt wurde. Halte ich für eleganter aber ist sicher auch Geschmackssache ;)
Auch eine Idee :-)
Aber genaugenommen müsste er den zurückgelieferten Wert prüfen, ob Anzahl UND Wert den Vorgaben entsprechen. Der Client könnte ja sonstwas liefern...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Aber genaugenommen müsste er den zurückgelieferten Wert prüfen, ob Anzahl UND Wert den Vorgaben entsprechen. Der Client könnte ja sonstwas liefern...
Richtig, daran hatte ich gar nicht gedacht *huch
Gut, dann erweitern wir den if-Zweig um || is_array($_GET['datum'])
.
Das sollte reichen um nur einen Eintrag durchzulassen oder irre ich mich da gerade?
Grüße, Matze
Hello,
Gut, dann erweitern wir den if-Zweig um
|| is_array($_GET['datum'])
.
Das sollte reichen um nur einen Eintrag durchzulassen oder irre ich mich da gerade?
Ich lege radios, Checkboxen, Selct-Single und Selct-Multiple grundsätzlich als Array an. Das ermöglicht mir, alle mit einer gemeinsamen Produktion und Auswertung zu bedienen.
Die Werte müssen trotzdem noch diskret geprüft werden. An dem Modul sitze ich seit Wochen. Es wächst so vor sich hin. Neulich gab es da schon mehrere Diskussionen:
http://forum.de.selfhtml.org/archiv/2009/5/t187047/#m1242795
http://forum.de.selfhtml.org/archiv/2009/5/t187309/#m1244852
Runtop hatte das gleiche Problem und musste wohl auch erkennen, dass sich eine saubere Lösung nicht mal eben zwischen Tür und Angel bauen lässt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi an alle,
sorry, mir is das leider zu kompliziert. ich habs mittlerweile dank eurer Tipps soweit hinbekommen, dass ich ne fehlermeldung bekomme, wenn "bitte Termin auswählen" ausgewählt ist.
Wenn ich allerdings einen Termin auswähle, ist zwar die fehlermeldung weg, allerdings springt das Feld wieder auf den Ausgangswert "bitte Termin auswählen".
Habt ihr ne Idee?
Danke
Hello,
Gut, dann erweitern wir den if-Zweig um
|| is_array($_GET['datum'])
.
Das sollte reichen um nur einen Eintrag durchzulassen oder irre ich mich da gerade?Ich lege radios, Checkboxen, Selct-Single und Selct-Multiple grundsätzlich als Array an. Das ermöglicht mir, alle mit einer gemeinsamen Produktion und Auswertung zu bedienen.
Die Werte müssen trotzdem noch diskret geprüft werden. An dem Modul sitze ich seit Wochen. Es wächst so vor sich hin. Neulich gab es da schon mehrere Diskussionen:
http://forum.de.selfhtml.org/archiv/2009/5/t187047/#m1242795
http://forum.de.selfhtml.org/archiv/2009/5/t187309/#m1244852Runtop hatte das gleiche Problem und musste wohl auch erkennen, dass sich eine saubere Lösung nicht mal eben zwischen Tür und Angel bauen lässt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hola!
Wenn ich allerdings einen Termin auswähle, ist zwar die fehlermeldung weg, allerdings springt das Feld wieder auf den Ausgangswert "bitte Termin auswählen".
Habt ihr ne Idee?
Ja. Schau dir mal den ausgelieferten HTML Code im Browser an und zitiere bitte vernuenftig oder gar nicht.
Ja. Schau dir mal den ausgelieferten HTML Code im Browser an und zitiere bitte vernuenftig oder gar nicht.
Und was soll ich da sehen??
Hello,
Ja. Schau dir mal den ausgelieferten HTML Code im Browser an und zitiere bitte vernuenftig oder gar nicht.
Und was soll ich da sehen??
....bb du daran gedacht hast, ein selected="selected" in der ausgewählten Option/Alternative zu generieren mit deinem PHP-Script.
Beim Genereieren der <option>-Elemente muss Dein Script immer nachfragen, ob im $_POST-Array das gerade zu generierende Element ausgewählt ist. Wenn ja, wird es ergänzt durch das selected-Attribut.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hoi,
Und was soll ich da sehen??
Wie Tom schon erwaehnt hat, ob dein Code zur Generierung des selected Attributs funktioniert hat.
Sollte dort z.B. nichts stehen, scheinst Du ein Problem mit deinen Variablen zu haben.
Hallo,
Ich lege radios, Checkboxen, Selct-Single und Selct-Multiple grundsätzlich als Array an. Das ermöglicht mir, alle mit einer gemeinsamen Produktion und Auswertung zu bedienen.
die Idee hatte ich auch schonmal aber nie umgesetzt :|
Wie sieht das dann bei dir aus? Oder besser wie müsste es aussehen?
<select name="select_field[foobar]" >
<option ...>...</option>
</select>
So in etwa? Wie wertest du das Array dann aus? Ich glaub du hattest das schonmal beschrieben, ich find es nur nicht mehr^^
Grüße, Matze
Hello,
So in etwa? Wie wertest du das Array dann aus? Ich glaub du hattest das schonmal beschrieben, ich find es nur nicht mehr^^
Schau mal hier:
http://forum.de.selfhtml.org/archiv/2007/4/t150060/#m974907
Das kann nur als Vorlage dienen, bitte selber überarbeiten.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi Tom,
danke für deine Antwort. Sorry bin ziemlich neu in dem Metier.
Wo genau fehlt das selected="selected" ?
hier?
<option>bitte gewünschten Termin auswählen</option>
Dann funktionierts auch nicht....
Danke dir
VG
Bruzzler
Hello,
Danke schonmal und viele Grüße
Du hast das selected="selected" vergessen für das ausgewählte Feld.
Außerdem würde ich den Optionen Nummern geben. 0 für 'nichts ausgewählt'. Aber das ist Geschmackssache.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo!
Wär nett gewesen wenn du die Codeeinrückungen im Forum angepasst hättest.
Ich hab mir auch nicht alles angeschaut.
Wie auch immer...
<select name="datum">
<option>bitte gewünschten Termin auswählen</option>
Versuch:
[code lang=html
<option selected="selected" disabled="disabled" value="bitteauswaehlen">bitte gewünschten Termin auswählen</option>
[/code]
Warum du da die Umlaute maskierst ist mir nicht klar.
Der PHP-Teil wäre dann:
if(empty($\_GET['datum'])) {
echo 'Fehler';
}else{
// tu etwas sinnvolles
}
> Wenn ich aber ein Datum auswähle, springt nach Klick auf Bestellen der value wieder auf "bitte termin auswählen."
> Was mache ich falsch?
Du vergisst dem Element ein "selected" mitzugeben. Vorher natürlich dasselbe beim ersten Eintrag entfernen.
Gruß, Matze