Eingabefeld überprüfen ob es ausgefüllt wurde?

Alles, was PHP betrifft, kann hier besprochen werden.

Eingabefeld überprüfen ob es ausgefüllt wurde?

Postby tommyboy » 19. September 2004 11:59

Hallo Community,

ich habe ein kleines Problemchen, ich habe ein Eingabefeld das wie folgt ausschaut:
....
</head>
<body>
<form action = "einfuegen.php" method= "post" target="Daten">
<input type="text" name="vorname" maxlength="25">
<input type="submit" value="Eintragen">
<input type="reset" value="Loeschen">
</body>
....
Nun möchte ich dieses Eingabefeld überprüfen ob überhaupt etwas eingetragen wurde? Ziel ist es, dass Eintragen eines leeren Feldes in die MySql Datenbank zu verhindern. Wäre nett wenn mir jemand den entsprechenden Code hat, damit ich das Feld auf ausgefüllt oder leer prüfen kann.

Schönen Sonntag wünscht euch Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 19. September 2004 12:04

Code: Select all
if (empty($_POST['vorname'])) {
    # mach was wenn Feld leer
}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 19. September 2004 12:08

if (!empty($_POST['vorname'])) {
# wenn es ausgefüllt war
}

Das müsste doch auch gehen oder?
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 19. September 2004 12:29

yep
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 19. September 2004 14:00

Ja es hat funktioniert danke!!!
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby tommyboy » 19. September 2004 15:40

Jetzt noch eine Frage,

wie ist das wenn ich nur zulassen möchte das Namen ohne Zahlen,Sonderzeichen in eine Datenbank eingetragen werden können?
Muß ich dann den Datentyp der entsprechenden Zeile in der Datenbank ändern oder geht das auch über PHP?`Wenn ja wie geht das?

Danke Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 19. September 2004 16:47

PHP: Schau dich mal nach preg_match() um.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 19. September 2004 19:31

Ja also ich habe etwas über diesen Befehl gelesen,
allerdings ist mir nicht klar wie ich damit überprüfen kann ob jemand Sonderzeichen in das Eingabefeld eingegeben hat.
Dann müsste ich den Text nach allen Sonderzeichen,Zahlen durchsuchen und wenn dann ein Match vorhanden ist, könnte ich dies über die if-Abfrage feststellen oder?

z.B wenn ich nach Zahlen überprüfen möchte:

if (preg_match("/\b1\b2\b3\b4\b5\b6\b7\b8\b9\b/i", "$_POST['vorname']")) {
echo "Es wurde eine Übereinstimmung gefunden.";
} else {
echo "Es wurde keine Übereinstimmung gefunden.";
}

Stimmt die Syntax???? Sorry aber mir raucht gerade der Kopf, nach dem ich da soviel drüber gelesen habe.

Gruß Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 20. September 2004 02:21

Dann müsste ich den Text nach allen Sonderzeichen,Zahlen durchsuchen und wenn dann ein Match vorhanden ist, könnte ich dies über die if-Abfrage feststellen oder?

Könnte man so lösen:
Code: Select all
if (empty($_POST['vorname']) {
   echo 'Formularfeld nicht ausgefüllt.';
} else {
   if (0 !== preg_match('|[_\d\W]|', $_POST['vorname'])) {
      echo 'Falsche Zeichen im Formularfeld.';
   } else {
      echo 'Alles OK.';
   }
}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 20. September 2004 07:57

Hallo guten Morgen Wiedmann,

erstmal 1000 Dank, dass du mir um 3:21Uhr morgens eine Antwort auf mein Problemchen schreibst Respekt!

Nun ging es für mich um die Interpretation des folgenden Codes:
Code: Select all
if (0 !== preg_match('|[_\d\W]|', $_POST['vorname']))


Dazu nahm ich die Metasprache zur Hilfe, kam auf folgende interpretation dieses Codeteils.
Wenn etwas nicht Null(0!) ist, vergleiche(==) das vorname Feld alternativ(| |) mit folgender Zeichendefinition([ ]).Jede Dezimalziffer (\d) für jeden nicht Worttyp(\W). Leider habe ich für ( _ ) in der Metasprache keine Beschreibung gefunden, was bedeutet der Unterstrich? Kannst du mir das bitte sagen
Danke.

Mfg Tommyboy

Ps: Streue Asche auf mein Haupt
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 20. September 2004 11:15

Guten Morgen Tommy ;-)

Dann versuch ich mich mal an einer Analyse...

in der Regex suche ich nach allen Zeichen in $_POST['vorname'] die nicht erlaubt sind:
\d = alle Zahlen
\W = sonstige Zeichen die keine Buchstaben sind (ein "á" wird so z.B. als gültig erkannt, könnte ja in einem Namen vorkommen)
_ = da bei "\W" das "_" nicht dabei ist, führe ich das extra auf. Ist also einfach ein Unterstrich.

Wenn eines dieser Zeichen enthalten ist, liefert preg_match() eine "(int) 1" zurück.
Bei einem gültigen String wird "(int) 0" geliefert .

Also könnte man jetzt sagen, wenn das Ergebnis "0" ist, ist es richtig:
if (0 == $Ergebnis) => richtig

Tatsächlich liefert preg_match() bei einem Fehler "false", was bei einem einfachen Vergleich auch "0" wäre:
if (0 == false == $Ergebnis) => richtig
--> Schlecht (wegen automatischer Typkonvertierung)

PHP bietet aber auch die Möglichkeit nicht nur den Wert, sondern auch den Typ in einem Vergleich überprüfen.

Man könnte jetzt also sagen: Wenn das Ergebnis "(int) 1" oder "(bool) false" ist, dann stimmt was nicht:
if ((1 === $Ergebnis) || (false === $Ergebnis)) => falsch

Oder vereinfacht im Umkehrschluss: Wenn das Ergebnis nicht "(int) 1" ist, ist es falsch:
if (0 !== $Ergebnis) => falsch

Man hätte natürlich auch sagen können, wenn Ergebnis "(int) 0" dann richtig:
if (0 === $Ergebnis) => richtig
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 20. September 2004 15:02

Ich habe nur noch ein Problem mit dem Datum?

Das folgende Datum soll so übernommern werden TT.MM.YYYY z.B 13.05.1977
und es sollen keine Sonderzeichen außer der Punkt und keine Buchstaben erlaubt sein.

Wie baue ich nun die Syntax auf?

Habe schon das probiert [0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]
ging nicht oder das[0-9]+[0-9].[0-9]+[0-9].[0-9]+[0-9]+[0-9]+[0-9]
, ich weis nicht wie ich das nun machen soll??

Bitte Hilfe ich verzweifle Gruß Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 20. September 2004 22:33

Ups. jetzt war ich zu langsam.

Also... das mit dem ersten Buchstaben gross und der Rest klein, keine Zahlen und keine Sonderzeichen geht noch einfacher als mit meinem ersten Ansatz vorher:

Code: Select all
if (1 === preg_match('|^[[:upper:]]{1}[[:lower:]]*$|', $_POST['vorname'])) {
    olles ok
} else {
    Fehler
}


Eine direkte Seite zu Regular Expression in Deutsch weiss ich gerade so auch nichts (Schau mir die immer in Eng. an). Aber über das Thema überhaupt gibt es ja massenhaft...

Zu deinem Datum:
Code: Select all
if (1 === preg_match('|[0-9]{2}.[0-9]{2}.[0-9]{4}|', $datum)) {
    olles ok
} else {
    Fehler
}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tommyboy » 21. September 2004 09:59

Hallo sei gegrüßt Wiedmann,

du hast recht das es genügend Howto´s auf englisch gibt. Leider habe ich feststellen müssen das
Sie für mich nicht wirklich erklärend geschrieben waren!
Und solche Beispiele die du hier gepostet hast, gibt es nirgends, da bin ich mir fast sicher. Was mir
fehlte, war wie ich die Klammern mit den Wertemengen verbinden muss, aber das weis ich ja jetzt geilo!!
Im übrigen fällt mir auf, dass man in diesem Forum, dank einiger angagierter Leute wirklich Auskunft bekommt.
Das ist nicht selbstverftändlich, deswegen nochmal 1000 Dank an die Leute, die mir mit Rat&Tat bei meinen
Lowlevel Problemen bei Seite standen.

Es Grüßt und bedankt sich bei euch Tommyboy!!

Ps: Möge jeder mal die :idea: "Erleuchtung" bekommen.
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen


Return to PHP

Who is online

Users browsing this forum: No registered users and 22 guests