PHP Operatorproblem (denke ich)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Advanced-Rookie
Mitglied
Beiträge: 124
Registriert: 04.10.2002 15:02
Kontaktdaten:

PHP Operatorproblem (denke ich)

Beitrag von Advanced-Rookie »

Hi, ich habe ein kleines script geschrieben um die angaben in mein formular zu prüfen. ich möchte nun prüfen ob die plz richtig eingetragen wurde. zum einen muss die länge des Ausdrucks stimmen, zum anderen sollten nur Ziffern verwendet werden.
das erste ist kein problem, nur das mit den Ziffern funktioniert bei mir nicht.
Hier ist mein Script. Es überprüft jedes Zeichen im String ob es eine Ziffer von 0-9 ist.


Das Hauptproblem ist, dass der Vergleich z.B. a==5 true ergibt, denn wenn ich Bchstaben anstatt Zahlen eintrage wird zu $number eine 1 hinzugefügt. (siehe scriptteil mit langem komentar ca. mitte)
wenn alle zeichen Zahlen sind, soll $number == "11111"
wenn nicht fehlen eben die netsprechenden 1er.
Sind 4 ziffern ist $number=="1111" also wird der untere Vergleich damit false zurückgeben. Da aber auch Buchstaben true ergeben bekomme ich für 5 zeichen immer ein true zurück

was soll ich denn jetzt tun?
Wo liegt der Fehler
//plz

if (($_POST['plz'] != "") and (strlen($_POST['plz']) == 5))
{
$plz=$_POST['plz'];
$number="";
echo "number: ".$number."<br>";
for ($i=0;$i<strlen($plz);$i++)
{
for ($j=0;$j<=9;$j++)
{
echo $plz[$i].", ";
if ($plz[$i] == $j) {$number.="1"; break;} //Vergleich vom Zeichen an der Stelle $i mit einer Ziffer von 0-9
}
}
echo "zahl? ".$number."<br>";
if ($number=="11111")
{ $check.="1";}
else
{
$check.="0";
}
}
else {$check.="0";}
Gast

Beitrag von Gast »

vesuchs doch mal mit is_numeric()
http://www.php.net/manual/en/function.is-numeric.php

pg :)
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Oder alternativ mit preg_match($plz, '^[0-9]{5}$');
Advanced-Rookie
Mitglied
Beiträge: 124
Registriert: 04.10.2002 15:02
Kontaktdaten:

Beitrag von Advanced-Rookie »

thx, hat alles wunderbar geklappt, wüsste trotzdem gern wo mein Fehler lag grrrr....!!!

;)
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Pyramide hat geschrieben:Oder alternativ mit preg_match($plz, '^[0-9]{5}$');
so schön reguläre ausdrücke auch sind, sollte man doch drauf verzeichten für so kleinigkeiten, sie machen das script nur unnötig langsam.
Antworten

Zurück zu „Coding & Technik“