Problem mit if Abfragen PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschicken
aktiv eintragen
code
datum
eintrag
email
entfernen
falsch code
fehler
fehlermeldung
feld
formular
funktion
garnichts
inhalt
karpfen
problem
schlauch
url
zweite fehler
-
Hallo !
Ich habe noch ein kleines PHP Problem.
Ich habe ein Formular auf meiner Seite.
Mein Script zum Auswerten:
if(isset($_POST['url'])) { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; } elseif($name == "") { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; } elseif($inhalt == "") { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
Wenn ich das Formular ganz ohne Inhalt abschicke, kommt als Fehlermeldung "Dieses Feld darfst du leider nicht ausfüllen."
Wenn garnichts eingetragen ist, sollten ja nur die 2 unteren Fehler kommen, wenn allerdings alle leer sind, außer "url" dann soll auch die 1 Fehlermeldung kommen.
Versteht Ihr was ich meine?
Was mache ich falsch ? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ifif(trim($_POST['url']) == "") { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; } if(trim($name == "")) { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; } if(trim($inhalt == "")) { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
Beitrag zuletzt geändert: 8.5.2010 21:02:58 von karpfen -
karpfen schrieb:
if(trim($_POST['url']=="")) { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; } if(trim($name == "")) { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; } if(trim($inhalt == "")) { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
Die Funktion trim ist zum Entfernen von Zeichen, aber ich will ja nur prüfen, ob etwas drin steht oder beim ersten, ob nichts drin steht -
Die Funktion trim ist dafür da, dass Leerzeichen entfernt werden. Sonst könnte man ja einfach in jedes Feld ein Leerzeichen eingeben und dann ist alles erfüllt, nur das nix wirklich drin steht.
-
trim entfernt die leerzeichen am anfang und ende.
wenn ich in dein formular nur 3 leerzeichen reinmach würde das als string gewertet werden, mit trim erkennt er aber, dass dieses feld nur leerzeichen enthält, also leer ist.
das von karpfen ist einfach und sollte funktionieren
aber interessant ist das:
if(trim($_POST['url']=="")) {
den vergleich in das trim rein? nich lieber so:
if(trim($_POST['url']) == "") {
?
hab das konstrukt noch nie gesehen, darum frag ich :) -
ggamee schrieb:
if(trim($_POST['url']) == "") {
hab das konstrukt noch nie gesehen, darum frag ich :)
Da hast du Recht, ich habs in meinem Code abgeändert. Ich bin eben nicht mehr ganz wach -
Zwei Probleme sind noch drin:
Wenn ich nur einen Eintrag eingebe, aber keinen Namen, steht da nach dem Abschicken:
Dieses Feld darfst du leider nicht ausfüllen. Bitte gib deinen Namen an. Dein Beitrag wurde erfolgreich gespeichert. Zurück zum Gästebuch
Und der zweite Fehler: Dieses "Dieses Feld darfst du leider nicht ausfüllen." wird immer als Fehler angezeigt, aber es sollte ja nur kommen, wenn dieses Feld einen Inhalt hat, wenn es keinen Inhalt hat, soll die Fehlermeldung nicht kommen, weil ich will ja dass das keinen Inhalt hat. -
if(trim($_POST['url']!="")) { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; } if(trim($name == "")) { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; } if(trim($inhalt == "")) { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
-
karpfen schrieb:
if(trim($_POST['url']!="")) { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; } if(trim($name == "")) { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; } if(trim($inhalt == "")) { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; } else { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
Danke !
Der Fehler, dass der Eintrag trotzdem gespeichert wird, obwohl garkein Name angegeben ist, besteht immernoch.
Also ich gebe nur einen Eintrag ein, dann steht da als Fehler "Bitte gib deinen Namen an" aber darunter wird der Eintrag dann gespeichert.
Was könnte der Fehler sein? -
den code kurz überarbeitet :
$fehler = false; if(trim($_POST['url']) == "") { echo "<b><font color=\"red\">Dieses Feld darfst du leider nicht ausfüllen.</font></b><br>"; $fehler = true; } if(trim($name) == "") { echo "<b><font color=\"red\">Bitte gib deinen Namen an.</font></b><br>"; $fehler = true; } if(trim($inhalt) == "") { echo "<b><font color=\"red\">Bitte gib deinen Eintrag ein.</font></b><br>"; $fehler = true; } if (!$fehler) { $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; $eintragen = mysql_query($eintrag); }
ich hoffe dass es jetzt klappt
oder stehe ich jetzt am schlauch
das skript soll doch prüfen ob in allen vars was drinne steht, zu den wo nichts steht dann nen fehler ausgeben, und den eintrag nicht in die DB schreiben. oder sehe ich das falsch?
sonst tuts mir leid :-S
Beitrag zuletzt geändert: 8.5.2010 21:32:04 von ggamee -
Ja, das Script soll prüfen, ob nichts drin steht, mit Ausnahme des Feldes "url", da soll eine Fehlermeldung kommen, wenn was drin steht ;)
EDIT: Jetzt geht alles ;)
Beitrag zuletzt geändert: 8.5.2010 21:48:41 von davy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage