Formularprüfung
Hallo,
ich komme bei einer Formularprüfung nicht weiter.
folgendes "Problem" (zumindest für mich).
if($_POST["vk"] == "stadt" && (empty($_POST["strasse"]) ||
empty($_POST["gasse"])))
Ich möchte damit erreichen:
Wenn vk eine Stadt ist, dann muss es entweder eine Strasse oder eine
Gasse geben. Aber irgendwie lösst er das nicht so auf, wie ich es mir
wünsche.
Hat jemand einen Tipp?
Danke und lg,
Erich
Re: Formularprüfung
> if($_POST["vk"] == "stadt" && (empty($_POST["strasse"]) ||
> empty($_POST["gasse"])))
>
> Hat jemand einen Tipp?
Es soll einer von beiden *nicht* empty sein!
Re: Formularprüfung
Erich Wagner schrieb:
>
> Hallo,
>
> ich komme bei einer Formularprüfung nicht weiter.
> folgendes "Problem" (zumindest für mich).
> if($_POST["vk"] == "stadt" && (empty($_POST["strasse"]) ||
> empty($_POST["gasse"])))
>
> Ich möchte damit erreichen:
> Wenn vk eine Stadt ist, dann muss es entweder eine Strasse oder
Du schreibst hier "oder", also programmierst Du "or".
> eine Gasse geben.
Aber "empty" ist das Gegenteil von "geben".
Du verlangst also, dass es beide gibt.
MfG
hjs
Re: Formularprüfung
Hallo,
>> Ich möchte damit erreichen:
>> Wenn vk eine Stadt ist, dann muss es entweder eine Strasse oder
> Du schreibst hier "oder", also programmierst Du "or".
>
>> eine Gasse geben.
>
> Aber "empty" ist das Gegenteil von "geben".
> Du verlangst also, dass es beide gibt.
Naja, es ist ja eine Formularprüfung, also wenn etwas nicht eingegeben
ist, dann soll etwas zurückgegeben werden, deswegen prüfe ich auf empty.
also nochmals zum lesen:
if($art == "stadt" && (empty($strasse) || empty($gasse))) {
$error = true;
}
danke und lg,
erich
Re: Formularprüfung
Erich Wagner schrieb:
> Hat jemand einen Tipp?
Abgesehen von den bereits geposteten Tipps:
Es hilft mir bei sehr verschachteln if-Bedingungen of, anstatt von ||
oder && einfach OR oder AND zu schreiben, das macht es weniger abstrakt
=) Technisch ist es gleichwertig.
Gruß,
Habbo
Re: Formularprüfung
Hallo,
> if($art == "stadt" && (empty($strasse) && empty($gasse))) {
> $error = true;
> }
ich bin auf dem Schlauch gestanden, eh klar, dass das oder zu einem UND
werden sollte ;-)
Danke nd lg,
Erich
Re: Formularprüfung
Erich Wagner schrieb:
> Naja, es ist ja eine Formularprüfung, also wenn etwas nicht eingegeben
> ist, dann soll etwas zurückgegeben werden, deswegen prüfe ich auf empty.
>
> also nochmals zum lesen:
> if($art == "stadt" && (empty($strasse) || empty($gasse))) {
> $error = true;
> }
Du hast da einen Denkfehler drin:
In deinem Fall setzt er die Variable $error wenn entweder $strasse oder
$gasse leer ist. Du wilslt aber, dass der Fehler kommt, wenn BEIDE leer
sind, einer darf ja laut deiner Definition. Du musst also so abfragen:
<?php
if ($art == "stadt" AND empty($strasse) AND empty($gasse))
{
$error = true;
}
?>
Gruß,
Habbo
Re: Formularprüfung
Erich Wagner schrieb:
>
> Hallo,
>
> >> Ich möchte damit erreichen:
> >> Wenn vk eine Stadt ist, dann muss es entweder eine Strasse oder
>
> > Du schreibst hier "oder", also programmierst Du "or".
> >
> >> eine Gasse geben.
> >
> > Aber "empty" ist das Gegenteil von "geben".
> > Du verlangst also, dass es beide gibt.
>
> Naja, es ist ja eine Formularprüfung, also wenn etwas nicht eingegeben
> ist, dann soll etwas zurückgegeben werden, deswegen prüfe ich auf empty.
>
> also nochmals zum lesen:
> if($art == "stadt" && (empty($strasse) || empty($gasse))) {
> $error = true;
> }
Da gibts 'ne schöne Story:
Angenommen, eine Person trinkt gerne Kaffee: Aber immer nur schwarz
und ohne Zucker. Dann kann man dies so ausdrücken: Keine Milch (im
Kaffee)
*und*
keinen Zucker (im Kaffee)---> dann trinke ich den Kaffee. Umgewandelt
nach de Morgan: Milch (im Kaffee)
*oder*
Zucker (im Kaffee) ---> dann trinke ich den Kaffee nicht.
Beide Aussagen sind wertgleich und auch ohne Beweis einleuchtend.
Quelle: http://de.wikipedia.org/wiki/De_Morgansche_Gesetze
MfG
hjs,
der zufällig weiß, warum im ersten monolitischen IC ausgerechnet
NANDs waren.
Re: Formularprüfung
Jan Habbo Brüning schrieb:
>Technisch ist es gleichwertig.
Nicht ganz, die or/and-Operatoren haben einen niedrigeren Rang als &&/||.
Dazwischen befinden sich noch ? und die Zuweisungsoperatoren,
$db = mysql_connect() or die();
ist also etwas anderes als
$db = mysql_connect() || die();
(Letzeres sieht zwar aus als würde es funktionieren, aber der Rückgabewert
von mysql_connect wird im Erfolgsfall in ein nutzloses true gewandelt.)
--
Wolfgang Fellger
Re: Formularprüfung
Wolfgang Fellger schrieb:
> Jan Habbo Brüning schrieb:
>
>> Technisch ist es gleichwertig.
>
> Nicht ganz, die or/and-Operatoren haben einen niedrigeren Rang als &&/||.
>
> Dazwischen befinden sich noch ? und die Zuweisungsoperatoren,
> $db = mysql_connect() or die();
> ist also etwas anderes als
> $db = mysql_connect() || die();
>
> (Letzeres sieht zwar aus als würde es funktionieren, aber der Rückgabewert
> von mysql_connect wird im Erfolgsfall in ein nutzloses true gewandelt.)
Nagut, werden wir etwas präziser: In if-Bedingungen, wie der OP sie
konstruiert hat, sind sie gleichwertig!
Gruß,
Habbo
Re: Formularprüfung
On 20 Sep 2007 10:31:41 GMT Wolfgang Fellger wrote:
> Nicht ganz, die or/and-Operatoren haben einen niedrigeren Rang als &&/||.
> $db = mysql_connect() || die();
> (Letzeres sieht zwar aus als würde es funktionieren, aber der
> Rückgabewert von mysql_connect wird im Erfolgsfall in ein nutzloses
> true gewandelt.)
Das alleine ist fuer mich schon Grund genug, statt
| if($_POST["vk"] == "stadt" && (empty($_POST["strasse"]) [...]
immer
| if(($_POST["vk"] == "stadt") && (empty($_POST["strasse"]) [...]
zu schreiben. Operatoren-Rangfolgen beachten zu muessen, finde ich bei
Lesen (insbesondere ggf. beim Fehlersuchen) so ziemlich das uebelste.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Freude mit Stefan, unverwüstlich und schlank!
(Sloganizer)