Ein paar Probleme bei der Formularabfrage!

Begonnen von lit-web, 24. November 2007, 11:19:03

Vorheriges Thema - Nächstes Thema

lit-web

Hallo @ all,so diesmal gebe ich mir mühe das Problem genau zu formulieren!
Also erst mal der Code und dann die Erklärung
 


Zurück
\";
}
else
{
if(strlen($_POST[\'plz\'])>5)
{
echo \"
Das Feld ist nicht ausgefüllt oder hat mehr als 5 Zeichen.
Zurück
\";
}
   else
   {
   if(!eregi(\"^[a-z]$\",$_POST[\'plz\']))
   {
   echo \"
   Das Feld ist zwar ausgefüllt hat jedoch verbotene Zeichen enthalten.
   Zurück
   \";
   }
   }
}
header(\"Location: index.php\");
}
?>
 
 
 
\" name=\"schicken\" method=\"post\">
Name:
 
 
 

\";
}
?>
 
 


 
 
So also wie man oben sehen kann wird dies eine Formularabfrage. Also das soll das Feld für eine Postleitzahl haben. Das diese gewöhnlich nur 5 Zahlen haben habe ich die Abfrage gemacht das es nicht weniger und nicht mehr als 5 Zeichen haben darf. Diese Abfrage funktioniert auch wie sie soll ohne Probleme. Nun kommt das erste Problem. Ich habe auch eine Abfrage machen wollen wo ausgewertet wird ob falsche Zeichen in Buchstabenform drin sind,das soll ja nicht passieren. Wenn ich Buchstaben eingebe,wird das auch so gemacht und bringt mir die Fehlermeldung das sich verbotene Zeichen darin enthalten. So weit so gut nun aber kommt auch das Problem wenn ich Zahlen eingebe kommt die Fehlermeldung das sich verbotene Zeichen darin enthalten trotzdem.
Wie kann ich das richtig schreiben und beheben?
Das nächste ist wie ihr sehen könnt habe ich unten eine Checkbox und möchte erreichen das nur wenn diese gesetzt und nicht leer ist,dass dann der Submit Button angezeigt wird und das Formular versendet werden kann. Aber dies funktioniert leider auch nicht.
Hat jemand einen Rat für mich?
Vielen dank für eure Hilfe! MFG der litter

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


Powie

Hi Litter,
bitte mach mal demnächst für je ein Problem besser ein Thema auf, und verstecke nicht mehrere Sachen in einem Thread. Und versuch doch mal die Überschrift so zu wählen das die zum Inhalt passt.
Also zur PLZ: Hier benötigst du am einfachsten die Funktion preg_match(). Mit dieser kannst du genau prüfen das es eine fünfstellgige Zahl ohne Sonderzeichen ist.
Für dein zweites Problem mit der Checkbox was du lösen möchtest, sind wir ausserhalb von php, das gehört ins JavaScript Board!

lit-web

Vielen Dank Powie nun weis ich wenigstens woran ich bin und wo meine Grenzen mit PHP stehen. Nur mit Javascript habe ich noch gar keinen Plan wie muss das denn mit Javascript aussehen was muss ich das schreiben?

Taugenichtse die was haben,haben was gegen Habenichtse die was taugen!!!!


raiser

für die plz muss man ja nun nicht unbedingt regex verwenden und preg_match? er will doch nur wissen ja / nein ereg machts auch.
is_numeric und strlen /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
wegen javascript:
Zauberwort http://de.selfhtml.org/javascript/sprache/eventhandler.htm\" rel=\"external nofollow\">Event-Handler
und hier, auch wenns nicht reingehört...


function mach_mal_submit_button_(){  
   if(document.getElementById(\'ck\').checked == true)
   {
       document.getElementById(\'der_button\').disabled=false;  
   }
   else
   {
       document.getElementById(\'der_button\').disabled=true;  
   }
}
 

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


ereg machts auch[/quote]
... deutlich langsamer als die PCRE und nicht binary-safe ...
is_numeric[/quote]
... is_numeric erlaubt zu viel, darunter Hex-Zahlen, Exponentialschreibweise, Vorzeichen und andere Dinge, die man in Postleitzahlen nicht braucht.
und strlen[/quote]
... sagt nichts über den Inhalt des Strings aus und ist nicht binary-safe.
Um das Manual zu den ctype-Funktionen zu zitieren:
It should be noted that ctype functions are always preferred over regular expressions, and even to some equivalent str_* and is_* functions. This is because of the fact that ctype uses a native C library and thus processes significantly faster.[/quote]
Also sollte man in diesem Falle entweder ctype_digit() und mb_strlen() kombinieren, oder gleich prüfen, ob es die Postleitzahl auch wirklich gibt.
Die Verkürzung auf 5 Zeichen von 0-9 ist übrigens gar nicht so verbreitet wie man meinen könnte. Viele Leute schreiben noch die Länderkennzeichnung davor (D oder A oder CH). Zusätzlich können nicht-deutsche PLZ auch nur aus 4 Zeichen von 0-9 bestehen.

all your base are belong to us / Discord