• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] [JS] Spezielle Validierung eines Formularfeldes

Draiman

New member
Hallo Community,

Ich habe folgendes Problem und würde mich über Anregungen freuen.

Ich habe ein Formularfeld "postleitzahl".
Der User soll nur ganz bestimmte Postleitzahlen eingeben dürfen z.B. nur von einer Stadt, sonst kommt ein "Alert"-Fehler. Ein regulärer Ausdruck kommt also nicht in Frage.

Ich habe hier (Geodata Webservice | avanzu) einen Web Service gefunden, der mir eigentlich die PLZ validieren können, aber eben mit PHP.

Hat jemand eine Idee, wie ich mein Problem lösen könnte.

Viele Grüße
Draiman
 
Tag und Willkommen hier im Forum,

kann es sein, dass Deine Schreibweise einen gewissen Grund hat, den man auch zu gern "Suchmaschinenoptimierung" nennt? Warum hast Du nicht das "hier" verlinkt und verwendest EXTRA eine Pipe? Aber das ist hier ja der JavaScript-Teil, also versuche ich mal eine Antwort ...

Wo ist Dein Problem? Wenn diese Domain - ich war übrigens nicht dort - einen Webservice dafür anbietet, so kannst Du durchaus mit eigenem JavaScript auf Deine eigene Domain "zeigen", Dein PHP gibt die Information an den Webservice weiter (Server spricht mit ServeR) und nimmt die Antwort entgegen und liefert es in Dein JavaScript im Client wieder zurück. Selbstverständlich kannst Du die Antwort vom Webservice noch prüfen, umarbeiten o. ä.

Einfacher geht es nicht ... Du wirst Dich mit dem Format des Webservices auseinander setzen müssen (XML, JSON, etc.) - aber das war's dann eigentlich auch schon. Wird mit Sicherheit nicht schwieriger sein als mit der Google- oder der FBQL-API zu reden. ;)

Viel Erfolg und beste Grüße.
 
Die Verlinkung hat das Forum selbst so eingerichtet, ich habe lediglich eine URL kopiert. Im übrigen hab ich nichts mit dieser Firma zu tun, soviel dazu.

Mein Problem ist Folgendes:

Ich habe ein Paar tutorials gelesen, wie man mit jQuery und Ajax einen SOAP Request auf einen Webservice machen kann allerdings sind meine Versuche mitßlungen. Gibt es für mein Problem vielleicht einen anderen, besser standardisierten Webservice oder eine andere gute Möglichkeit sowas zu validieren?

Oder vielleicht kann jemand ein Paar Codezeilen hier reinstellen, wie ich mit jQuery und Ajax z.B. die validate funktion dieses oben genannten Services nutzen kann.
 
Ich habe ein Paar tutorials gelesen, wie man mit jQuery und Ajax einen SOAP Request auf einen Webservice machen kann allerdings sind meine Versuche mitßlungen
Dabei muss man auf die SOP der Browser achten. Aber wenn man mit PHP eine Art Durchlauferhitzer baut, klappt das wunderbar. Möchtest du deine Versuche hier besprechen? Hier wird dir auf jeden Fall geholfen.
 
Vielleicht hol ich noch ein wenig aus, damit die ganze Geschichte verständlicher wird:

Mein Formularfeld "postleitzahl" sollte optimalerweise mit Hilfe von JavaScript/jQuery und einer Alert-Meldung validiert werden. Der obengenannte Web Service war nur ein Beispiel, dass ich gefunden habe. Die dortige Funktion validate ist genau was ich brauche aber eben PHP. Mir fällt spontan kein Möglichkeit ein über PHP im Fehlerfall die Übermittlung meines Postleitzahlfeldes zu verhindern, so wie es Alert tun würde.

Ich bin in keinster Weise an diesen Web Service gebunden, suche nur eine sinnvolle Möglichkeit mein Vorhaben umzusetzen. :)
 
Mein Formularfeld "postleitzahl" sollte optimalerweise mit Hilfe von JavaScript/jQuery und einer Alert-Meldung validiert werden.
Ja, kein Problem. Definiere einfach einen Zustand und ein Ereignis, bei dem die Prüfung stattfinden soll. Und dann legt man den entspr. Eventhandler an das Feld an.

Mir fällt spontan kein Möglichkeit ein über PHP im Fehlerfall die Übermittlung meines Postleitzahlfeldes zu verhindern, so wie es Alert tun würde.
Da liegt ein Denkfehler. PHP=Server, Javascript=Browser/Client. Man verhindert nicht eine Übermittlung sondern man prüft das Feld immer serverseitig. Man kann zwar lokal per JS und Ajax eine Feldprüfung durchführen und dem Benutzer damit Hilfestellung geben aber die letztendliche Prüfung vor dem DB Update läuft immer (im PHP) auf dem Server.

Ich bin in keinster Weise an diesen Web Service gebunden, suche nur eine sinnvolle Möglichkeit mein Vorhaben umzusetzen. :)
Du brauchst zusätzlich zur Ereignisdefinition (siehe oben) auch noch eine Datenbank. Wichtig ist die Unterscheidung, ob die bei dir auf dem Server oder auf einem fremden Server liegt. Danach richtet sich das Thema SOP und die entsprechende Taktik.
 
Definiere einfach einen Zustand und ein Ereignis, bei dem die Prüfung stattfinden soll.

Könntest du bitte ein wenig näher darauf eingehen, was hierbei gemeint ist?

PHP=Server, Javascript=Browser/Client. Man verhindert nicht eine Übermittlung sondern man prüft das Feld immer serverseitig.

Also in meinem Fall ist eine serverseitige Prüfung nicht notwendig. Wenn die Eingabe meines Formularfeldes valide ist, wird man auf die nächste Seite geleitet und dieses Postleitzahlfeld wird ab hier nicht mehr benötigt. Wenn die Eingabe nicht valide ist soll ein Alert ausgeführt werden und sonst passiert nichts.

Man kann zwar lokal per JS und Ajax eine Feldprüfung durchführen und dem Benutzer damit Hilfestellung geben...

Ja, genau das möchte ich!

Du brauchst zusätzlich zur Ereignisdefinition (siehe oben) auch noch eine Datenbank.

Genau, aber ich habe keine Datenbank mit Postleitzahlen. Deshalb dachte ich an einen Webservice. Da ich nicht der einzige bin der eine Postleitzahlvalidierung braucht, dachte ich dass es hierfür schon Lösungen gibt.
 
Könntest du bitte ein wenig näher darauf eingehen, was hierbei gemeint ist?
Ereignisse: SELFHTML: JavaScript / Sprachelemente / Event-Handler
Zustände: damit ist eine oder mehrere Bedingungen gemeint
Beispiel: Wenn im PLZ Feld 5 Buchstaben stehen wäre der Zustand, passieren soll das beim Ereignis onkeydown

Also in meinem Fall ist eine serverseitige Prüfung nicht notwendig. Wenn die Eingabe meines Formularfeldes valide ist, wird man auf die nächste Seite geleitet und dieses Postleitzahlfeld wird ab hier nicht mehr benötigt.
Das wiederum hätte ich jetzt gern erläutert. Wofür braucht man ein Feld, das ohne weiteren Nutzen nur zum nächsten Formular durchgereicht wird?

Wenn die Eingabe nicht valide ist soll ein Alert ausgeführt werden und sonst passiert nichts.
Gut, das ist dann die Definition der Handlung.

Genau, aber ich habe keine Datenbank mit Postleitzahlen. Deshalb dachte ich an einen Webservice.
OK, dann brauchst du ein PHP Script, welches die entspr. DB anfragt.
Der Weg ist also: Formular -> Zustand -> Ereignis -> Ajax zum eigenen Server -> cURL zur fremden DB -> Rückgabe an Formular -> Handlung (alert oder nicht)

Da ich nicht der einzige bin der eine Postleitzahlvalidierung braucht, dachte ich dass es hierfür schon Lösungen gibt.
Na ja, da steckt ja nichts hinter was man als "Lösung" bezeichnen könnte. Ich empfehle Browserseitig die Verwendung von jQuery. Damit machst du den Ajax Request: jQuery.ajax() | jQuery API Documentation
Wenn der nun bei deinem Server ankommt, machst du die Anfrage gegen die fremde DB mit PHP: cURL - Manual
Und das Ergebnis gibst du zurück an den Browser. Je nach dem wie aufwendig man das gestaltet macht hier die Verwendung eines geeigneten Datenformats Sinn, wie z.B. JSON
Alles in allem würde ich sagen, serverseitig sind es vielleicht 3 Zeilen Code, Browserseitig vielleicht 5. Mehr ist das nicht.
 
Das wiederum hätte ich jetzt gern erläutert. Wofür braucht man ein Feld, das ohne weiteren Nutzen nur zum nächsten Formular durchgereicht wird?

Ich biete eine Dienstleitung beim Kunden an. Das heißt mein Servicemobil fährt zum Kunden. Da es sich nur lohnt hinzufahren, wenn es nicht extrem weit weg ist, brauche ich diese Validierung.

Beim Bestellen meiner Dienstleistung muss der Kunde also seine Postleitzahl eingeben, diese wird im Hintergrund validiert und im Erfolgsfall geht der Bestellvorgang weiter. Im Fehlerfall passiert nichts außer der Fehlermeldung.

Im weiteren Verlauf des Bestellvorgang brauch ich diese Postleitzahl nicht mehr.
 
die adresse später im bestellvorgang wird dann seperat abgefragt, mein shopsystem verlangt es so und es würde einen unverhältnismäßigen aufwand bedeuten das umzubauen
 
ich habe es jetzt doch anders gelöst.

hab mit JavaScript einfach ein array gebaut mit allen akzeptierten PLZ's und dieses Array mit der Usereingabe verglichen

scheint ganz gut zu funktionieren
 
Also in meinem Fall ist eine serverseitige Prüfung nicht notwendig. Wenn die Eingabe meines Formularfeldes valide ist, wird man auf die nächste Seite geleitet und dieses Postleitzahlfeld wird ab hier nicht mehr benötigt. Wenn die Eingabe nicht valide ist soll ein Alert ausgeführt werden und sonst passiert nichts.
Und wenn jetzt jemand JS deaktiviert hat (so wie ich), wird er ohne Validierung auf die nächste Seite geleitet und kann Bestellen?
Du darfst dich niemals auf eine reine JS-Validierung verlassen, da die extrem leicht manipulierbar ist.
 
Zurück
Oben