stiki: testen ob eingabe eine plz ist

hallo

Ich habe in meiner webseite soll bei den angeben auch die postleitzahl angegeben werden, nun muss ich diese auch überprüfen in dem ich teste ob dies eine zahl ist.

ich habe gesucht und es mit

$plz=intval($_POST['plz']);
if (is_numeric($plz)){

versucht

doch wenn ich dahinter ein else schreibe falls es keine zahl ist soll ein fehler ausgegeben werden kommt dieser nicht er macht weiter als währe es eine zahl.

kann man auch abfrage ob die eingabe 5 stellen hat?

um zu verhindern das eine zu lange eingabe gemacht wird.

  1. Hi!

    1. !Postleitzahlen sind keine Zahlen!

    2. Postleitzahlen bestehen im allgmeinen auch nicht nur aus 5 Stellen. (ausser man behandelt nur deutsche oder amerikanische)

    3. Postleitzahlen sind KEINE Zahlen!

    4. Postleitzahlen bestehen nicht nur aus Nummern.

    und schliesslich 5. POSTLEITZAHLEN SIND KEINE ZAHLEN.

    Wenn Du pruefen willst, ob die PLZ korrekt ist, verwende das Postleitzahlenverzeichnis des jeweiligen Landes.

    --
    Signaturen sind blöd!
      1. !Postleitzahlen sind keine Zahlen!

      Es gibt einige Systeme, die tatsächlich Zahlen sind. Deutsche Postleitzahlen sind aber keine Zahlen im klassischen Sinn, zumindest keine Dezimalzahlen.

      1. Postleitzahlen bestehen im allgmeinen auch nicht nur aus 5 Stellen. (ausser man behandelt nur deutsche oder amerikanische)

      Ja - österreichische z.B. sind 4-stellig

      1. Postleitzahlen sind KEINE Zahlen!

      Das ist ebenfalls richtig :)

      1. Postleitzahlen bestehen nicht nur aus Nummern.

      Du meinst Ziffern :) aber ja, das ist richtig. Die Niederlande sind ein gutes Beispiel für Postleitzahlen, die nicht nummerisch sind.

      und schliesslich 5. POSTLEITZAHLEN SIND KEINE ZAHLEN.

      Und auch das ist richtig.

      Wenn Du pruefen willst, ob die PLZ korrekt ist, verwende das Postleitzahlenverzeichnis des jeweiligen Landes.

      Das ist der einzig sinnvolle weg - denn man kann nichteinmal syntaktisch prüfen, ob eine Postleitzahl korrekt ist. Selbt bei der deutschen Postleitzahlenreform vor gut 20 Jahren hat man schlichtweg vergessen, eine Prüfsumme einzubauen. Das wäre das mindeste gewesen, um Zahlendreher oder vergleichbares zu vermeiden.

      1. Hi,

        Selbt bei der deutschen Postleitzahlenreform vor gut 20 Jahren hat man schlichtweg vergessen, eine Prüfsumme einzubauen. Das wäre das mindeste gewesen, um Zahlendreher oder vergleichbares zu vermeiden.

        Interessehalber: Gibt es Länder, die das in ihren PLZ-Systemen umgesetzt haben?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Selbt bei der deutschen Postleitzahlenreform vor gut 20 Jahren hat man schlichtweg vergessen, eine Prüfsumme einzubauen. Das wäre das mindeste gewesen, um Zahlendreher oder vergleichbares zu vermeiden.

          Interessehalber: Gibt es Länder, die das in ihren PLZ-Systemen umgesetzt haben?

          Mir ist keines bekannt - vermutlich gibt es keine, da die automatisierten Systeme zum Verarbeiten/Lesen von Adressen viel jünger sind als die Postleitzahlensysteme.

          Nichtmal "ganz neue" wie z.B. der Kosovo haben entsprechende Mechanismen. Wahrscheinlich ist es aber auch garnicht notwendig, da bei einer falschen Postleitzahl immer noch der Klarname des Ortes als Backup dient.

  2. Hi,

    $plz=intval($_POST['plz']);
    if (is_numeric($plz)){

    schaue dir mal intval an. Dort steht, dass bei Misserfolg 0 zurückgegeben wird, was eine Zahl ist.

    kann man auch abfrage ob die eingabe 5 stellen hat?

    Rein aus dem Stegreif würde ich jetzt empfehlen:

    if ($plz<10000 || $plz>99999)  
    {  
         // 5 Stellen  
    }  
    
    

    Beachte aber auch, was Steel geschrieben hat!

    Hoffe, ich konnte helfen!

    1. if ($plz<10000 || $plz>99999)

      {
           // 5 Stellen
      }

        
      Entschuldigung, da habe ich einen Fehler gemacht! Bitte umdrehen:  
        
      ~~~php
      if ($plz>=10000 || $plz<=99999)  
      {  
           // 5 Stellen  
      }
      
      1. Hi,

        if ($plz>=10000 || $plz<=99999)

        {
             // 5 Stellen
        }

          
        Man sollte wenn schon ein UND (also && bzw. and) als Verkettungsoperator nutzen. Jede Zahl ist größer/gleich 10.000 oder kleiner/gleich 99.999.  
          
        Bis die Tage,  
        Matti
        
        -- 
        [Webapplikationen in C++ entwickeln](http://tntnet.org/)
        
    2. Hi!

      Rein aus dem Stegreif würde ich jetzt empfehlen:

      if ($plz<10000 || $plz>99999)

      {
           // 5 Stellen
      }

        
      Falsch! Gib 09111 Chemnitz dort ein und die PLZ wird nicht validiert. Man MUSS Stringoperationen benutzen. strlen($plz) ist die einzige Variante die funktioniert. Sofern man sich auf Laender mit fuenfstelligen Postleitzahlen beschraenkt. Oestereich und Niedelande fallen damit z.b. raus.  
      
      -- 
      Signaturen sind blöd!