WinFuture-Forum.de: Wie Pflichtfeld In Formular Einfügen (php)? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Wie Pflichtfeld In Formular Einfügen (php)?

#16 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.747
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 01. März 2007 - 12:01

Bib sagte:

Was hat es mit der ersten Anweisung auf sich? Da hab ich jetzt mal die Variable für das Textfeld eingegeben. Jetzt wird die Anfrage aber nur noch verschickt, wenn im Textfeld auch was drinsteht. Das Textfeld ist aber ein optionales Feld und muß somit nicht unbedingt gefüllt werden.

Keine Ahnung was Stefan_der_held damit bezwecken will. Idealerweise läuft's so ab (nach der Hierarchie "Test ob abgeschickt" --> "Test auf Pflichtfelder" --> "Test ob Mail-Versand erfolgreich":

if ($_POST['abgeschickt']=='gesendet'){
   if ($Nachname !="" &&  $Tel !="" && $emailadresse !="") {
	    if (mail($mail_to,$mail_subject,$mail_txt, "From: ".$emailadresse)) {
	         echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
	       }
        else {
               echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
              }
   }    
   else {
     echo"<h2>Bitte füllen Sie alle mit * markierten Felder aus</h2>";
   }
}
else {
	echo"<h2>Das Formular wurde nicht ordnungsgemäß abgeschickt.</h2>";
}

Dieser Beitrag wurde von Graumagier bearbeitet: 01. März 2007 - 12:01

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

Anzeige



#17 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. März 2007 - 12:53

Beitrag anzeigenZitat (Bib: 01.03.2007, 11:35)

Ganz zum Schluss hat noch ein "}" gefehlt.


Das fällt unter "Stefan-Patent-Fehler" ;)

Zitat

Was hat es mit der ersten Anweisung auf sich? Da hab ich jetzt mal die Variable für das Textfeld eingegeben. Jetzt wird die Anfrage aber nur noch verschickt, wenn im Textfeld auch was drinsteht. Das Textfeld ist aber ein optionales Feld und muß somit nicht unbedingt gefüllt werden.
(Ich weiß, langsam werd ich lästig... ;) )


Was ich damit bezwecke

"Arbeite erst das den eigentlichen IF Block ab wenn in einem zusätzlichen Feld was drinnsteht"

könnte eigentlich auch eine Checkbox sein. Ist theoretisch egal es soll halt nur der eigentliche Block abgearbeitet werden wenn überhaupt irgentwo irgentwas drinne steht.

Mit dem Textfeld war nur ein Vorschlag. so könntest du noch sagen:

1. Anrede ausgefüllt?
2. Dann kontrolliere ob Name und E-Mail adresse auch voll sind
0

#18 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.074
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 01. März 2007 - 13:41

Was wäre denn verkehrt daran, wenn ich für die erste IF-Abfrage einfach den Nachnamen, die Tel-Nr. oder email-Adresse verwende, die ja eh als Pflichtfelder gedacht sind?



Wenn das nicht funktioniert, dann könnte ich noch die Checkboxen hernehmen. Wie kann man denn da eine "Oder"-Funktion einbauen? Also

IF (checkbox1 oder checkbox2 oder checkbox3) {weiter im Code...}

und klappt ja mit &&

Dieser Beitrag wurde von Bib bearbeitet: 01. März 2007 - 13:42

0

#19 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. März 2007 - 13:49

Beitrag anzeigenZitat (Bib: 01.03.2007, 13:41)

Was wäre denn verkehrt daran, wenn ich für die erste IF-Abfrage einfach den Nachnamen, die Tel-Nr. oder email-Adresse verwende, die ja eh als Pflichtfelder gedacht sind?
Wenn das nicht funktioniert, dann könnte ich noch die Checkboxen hernehmen. Wie kann man denn da eine "Oder"-Funktion einbauen? Also


Natürlich funzt das ;)

Wie gesagt: Mit dem "Text" war nur ein Beispiel das mir so auf die Schnelle einfiehl ;)

du musst halt nur dafür sorgen, dass irgenteine Bedingung erfüllt ist BEVOR er überhaupt anfängt den Rest des PHP's abzuarbeiten
0

#20 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.074
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 01. März 2007 - 13:53

Ok, dann kann ich ja auch den Nachnamen nehmen, weil der ja ein Pflichtfeld ist.

EDIT: @stefan_der_held: Es kommt bei deiner Variante immer noch keine Fehlermeldung, daß die Pflichtfelder nicht gefüllt sind.


Was wäre übrigens mit dieser Version?
if ($_POST['abgeschickt']=='gesendet') {
  if ($Nachname !="" && $Tel !="" && $emailadresse !="") {
	  mail($mail_to,$mail_subject,$mail_txt, "From: ".$emailadresse)
		  or die("<h2>Ihre Nachricht wurde NICHT versendet</h2>");
	  echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
  }
  else {
	  echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
  }
}


Habs kurz getestet und es klappt. Was macht denn der Befehl "die"?


Welche Variante ist zu bevorzugen?

Dieser Beitrag wurde von Bib bearbeitet: 01. März 2007 - 13:56

0

#21 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.747
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 01. März 2007 - 13:57

Bib sagte:

Was wäre übrigens mit dieser Version?

Ist fast wie die meinige, nur dass nicht überprüft wird, ob der Mailversand erfolgreich war.

Bib sagte:

Was macht denn der Befehl "die"?

Sterben ;)

Ist im Prinzip das selbe wie exit().
"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#22 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. März 2007 - 14:05

Beitrag anzeigenZitat (Bib: 01.03.2007, 13:53)

EDIT: @stefan_der_held: Es kommt bei deiner Variante immer noch keine Fehlermeldung, daß die Pflichtfelder nicht gefüllt sind.


Wie währs mit einem "Else If"?

also

if (Schleifen Anweisung)
 {
	DAS WAS WIR GRAD GEMACHT HABEN
  }
else if {schleifen Anweisung)
 {
   echo"Eh du nix haben eingegeben wo du sehen ein *.... is wichtig alter";
  }


und deine "Fehlermeldung" mit dieser ""zweckmäßigen"" Ausgabe löscht du dann ;)

Denn ein reines "ELSE" wird immer ausgeführt... ein "ELSE IF" nur wenn bestimmte Bedingungen (nicht) Erfüllt sind.
0

#23 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.074
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 01. März 2007 - 14:37

Ich brings nicht hin...

Hab jetzt die IF-Anweisung aus der ersten Zeile in die ELSE IF-Anweisung zum Schluss reingestellt.

if ($Nachname !="" && $Tel !="" && $emailadresse !="")
  {
    if ($_POST['abgeschickt']=='gesendet')
    {
      if (mail($mail_to,$mail_subject,$mail_txt, "From: ".$emailadresse))
        {
        echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
        }
      else
        {
        echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
        }
    }
  else if
    ($Nachname !=""){
    echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
    }
  }


Es kommt aber immer noch keine Fehlermeldung. Oder war die vorherige Variante von dir schon ok so? Aber wo muß ich dann das ELSE IF einfügen und mit welchen Bedingungen? Ich blick jetzt langsam nicht mehr durch...

Hier nochmal deine Variante von vorhin, die bis auf die nicht ausgegebene Pflichtfeld-Meldung funktioniert:
//abarbeiten ERST wenn alle Pflichtfelder ausgefüllt wurden
if ($Nachname !="")
{

//Kontrolle ob Absender und Mailadresse angegeben wurden
if ($Nachname !="" && $Tel !="" && $emailadresse !="")
  {
    if ($_POST['abgeschickt']=='gesendet')
    {
      if (mail($mail_to,$mail_subject,$mail_txt, "From: ".$emailadresse))
        {
        echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
        }
      else
        {
        echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
        }
    }
  else
    {
    echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
    }
  }
} 

Dieser Beitrag wurde von Bib bearbeitet: 01. März 2007 - 14:39

0

#24 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. März 2007 - 17:14

Beitrag anzeigenZitat (Bib: 01.03.2007, 14:37)

Ich brings nicht hin...

Hab jetzt die IF-Anweisung aus der ersten Zeile in die ELSE IF-Anweisung zum Schluss reingestellt.

if ($Nachname !="" .............................)
  {
	.............................................
.............
	{
	  if (..............................................
.......))
		{
		.............................................
...........>";
		}
	  else
		{
		echo "<..............................................
.</h2>";
		}
	}
  else if
	($Nachname !=""){
	.............................................
";
	}
  }

Kann leider nicht fett hervorheben... also mal das "unwichtige" mit "....." versehen.

Was du fürn fehler gemacht hast, ist dass du in der "Alles OK" schleife gesagt hast soll durchlaufen werden wenn das Feld NICHT leer ist und die Fehlermeldung soll im selben Moment ziehen.

Bei der "ELSE IF" muss demnach folglich

$Nachname=="" [Und noch weitere UND /ODER Bedingungen]


eingetragen werden damit die Schleife dort durchlaufen wird wenn du bei Nachname NIX eingetragen hast. :angry:
0

#25 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.074
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 01. März 2007 - 17:48

Langsam geb ichs auf. Es wird einfach keine Fehlermeldung angezeigt, daß die Pflichtfelder gefüllt werden müssen:

if ($Nachname !="" && $Tel !="" && $emailadresse !="")
{
if ($_POST['abgeschickt']=='gesendet')
{
if (mail($mail_to,$mail_subject,$mail_txt, "From: "."[email protected]"))
{
echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
}
else
{
echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
}
}
else if
($Nachname==""){
echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
}
}


Jetzt hab ich die ELSE IF-Bedingung in den von dir vorgeschlagenen Wert von != auf == geändert aber nach wie vor keine Ausgabe.

Dieser Beitrag wurde von Bib bearbeitet: 02. März 2007 - 07:46

0

#26 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. März 2007 - 17:56

hab mir das mal ebend in ne Text Datei gepackt und optisch strukturiert...

1. ELSE IF und Schleifenanweisungen MÜSSEN in der selben Reihe stehen
2. ein abgeschlossene Klammer am falschen end.

if ($Nachname !="" && $Tel !="" && $emailadresse !="")
	{
		if ($_POST['abgeschickt']=='gesendet')
		{
		  if (mail($mail_to,$mail_subject,$mail_txt, "From: "."[email protected]"))
			{
				echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
			}
		
		 else
			{
				echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
			}
		}
	}

else if ($Nachname=="")
	{
		echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
	}


mal bitte proboieren
0

#27 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.074
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 02. März 2007 - 07:53

Danke für deine Hilfe, nun steht aber bereits bevor ich irgendetwas eingegeben habe dran, daß ich alle Pflichtfelder füllen muß.

EDIT: Habs nun selbst herausgefunden, was falsch war: Bei der ELSE IF-Abfrage darf nicht drinstehen, ob die Eingabefelder leer sind, sondern es muß überprüft werden, ob das Formular bereits versendet wurde (bzw. der Sende-Button schon mal gedrückt wurde).

if ($Nachname !="" && $Tel !="" && $emailadresse !="")
	{
		if ($_POST['abgeschickt']=='gesendet')
		{
		  if (mail($mail_to,$mail_subject,$mail_txt, "From: "."[email protected]"))
			{
				echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
			}
		
		 else
			{
				echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";
			}
		}
	}

else if ($_POST['abgeschickt']=='gesendet')
	{
		echo"<h2>Bitte füllen Sie alle mit * markierten Felder vollständig aus!</h2>";
	}

Dieser Beitrag wurde von Bib bearbeitet: 02. März 2007 - 09:32

0

#28 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.292
  • Beigetreten: 08. April 06
  • Reputation: 935
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 02. März 2007 - 08:58

Beitrag anzeigenZitat (Bib: 02.03.2007, 07:53)

Danke für deine Hilfe, nun steht aber bereits bevor ich irgendetwas eingegeben habe dran, daß ich alle Pflichtfelder füllen muß.



Ist doch gut... so weiß der Anwender doch sofort bescheid :rolleyes:

Beitrag anzeigenZitat (Bib: 01.03.2007, 13:41)

Wie kann man denn da eine "Oder"-Funktion einbauen?



Sry hab ich gestern überlesen:

UND = &&
ODER= ||

Sehr wichtig bei kombination aus beiden:

$a && $b || $c && $d


wird interpretiert als:

A und (B ODER C) und D

du musst also in den Befehl mit Klammern festlegen was zusammen gehörrt. also zb. so:

($a && $b) || ($c && $d)


wirt interpretiert als:

(A und B) ODER (C und D)




sehr schön gemachtes Tutorial (benutzen wir zb. bei der Umschulung)

http://tut.php-q.net/

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 02. März 2007 - 09:05

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0