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)?


#1 Mitglied ist offline   Bib 

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

  geschrieben 27. Februar 2007 - 13:39

Hi,
ich habe eine PHP-Seite erstellt. Damit kann man ein Formualr ausfüllen udn dieses dann versenden. Wie kann ich jedoch einige Punkte als Pflichtfelder definieren?

Das Formular soll also nur abgesandt werden, wenn diese Pflichfelder ausgefüllt wurden.

Und hier der Quelltext der Formular-Seite:

<?php
$id=$_GET['id']; //liest die id aus der url



/* und jetzt alle Variablen aus dem $_POST auslesen */
$Anrede=$_POST['Anrede'];
$Firma=$_POST['Firma'];
$Vorname=$_POST['Vorname'];
$Nachname=$_POST['Nachname'];
$Strasse=$_POST['Strasse'];
$PLZ=$_POST['PLZ'];


$Ort=$_POST['Ort'];
$Land=$_POST['Land'];
$text=$_POST['text'];
$Tel=$_POST['telefon'];
$emailadresse=$_POST['absender'];
$Betreff=$_POST['betreff'];
$Antwort=$_POST['Antwort-ueber'];



$mail_subject="Infoanforderung Homepage von $Vorname $Nachname";
$mail_txt="Infoanforderung von
Firma: $Firma
Anrede: $Anrede
Vorname, Nachname: $Vorname $Nachname
Anschrift: $Strasse
PLZ, Ort: $PLZ $Ort
Telefon: $Tel
e-mail: $emailadresse

Betreff: $betreff11
Betreff: $betreff12
Betreff: $betreff22
Betreff: $betreff23
Betreff: $betreff24
Betreff: $betreff25
Betreff: $betreff36
Betreff: $betreff37
Betreff: $betreff_hallen

Betreff: $betreff_efh
Betreff: $betreff_dhh

Betreff: $betreff_sonstiges

Sonstige Mitteilungen: $text

Kontaktaufnahme soll erfolgen über: $Antwort

";
$mail_to="[email protected]";
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>";

}


?>

<form action="index.php?id=<?php echo $id;?>" method="post">

<input type=hidden name="abgeschickt" value="gesendet">
<table>
	<tr>
	<td align=right>Anrede:</td>
	<td>
		<select name=Anrede size=1>
			<option>Herr
			<option>Frau
			<option>Firma
		</select>
	</td>
	<tr>
	<td align=right>Ihre Firma:</td>
	<td><input name=Firma size=20></td>
	<tr>
	<td align=right>Ihr Vorname / Ihr Name:</td>
	<td>
		<input name=Vorname size=20>
		<input name=Nachname size=20>
	</td>
	<tr>
	<td align=right>Ihre Strasse:</td>
	<td><input name=Strasse size=20></td>
	<tr>
	<td align=right>PLZ / Ort:</td>
	<td><input name="Plz" size=5> <input name="Ort" size=18></td>
	<tr>
	<td align=right>Ihr Land:</td>
	<td>
		<select name=Land size=1>
			<OPTION>Deutschland</OPTION>
			<OPTION>Österreich</OPTION>
			<OPTION>Schweiz</OPTION>
		</select>
	</td>
	<tr>
	<td align=right>Telefon-Nummer:</td>
	<td><input name=telefon size=20></td>
	<tr>
	<td align=right>eMail:</td>
	<td><input name=absender size=25></td>
	<br>
	<tr>
	<td valign=top align=right>Produkt:</td>
	<td>
		<input type=checkbox name=betreff11
			value="AIC DHH Flurstraße_1">DHH in AIC, Flurstraße - Variante 1<br>
		<input type=checkbox name=betreff12
			value="AIC DHH Flurstraße_2">DHH in AIC, Flurstraße - Variante 2<br>
		<input type=checkbox name=betreff22
			value="Asternstr REH">REH in Kühbach, Asternstraße<br>
		<input type=checkbox name=betreff23
			value="Radersdorf EFH">EFH in Kühbach-Radersdorf<br>
		<input type=checkbox name=betreff24
			value="Kühbach DHH">DHH in Kühbach, Paarer Str.<br>
		<input type=checkbox name=betreff25
			value="Kühbach EFH">EFH in Kühbach, Paarer Str.<br>
		<input type=checkbox name=betreff36
			value="DAH EFH">EFH in DAH-Petershausen<br>
		<input type=checkbox name=betreff37
			value="DAH DHH">DHH in DAH-Petershausen<br>
		<input type=checkbox name=betreff_hallen
			value="AIC Hallen">Hallen in Aichach<br><br>
		<input type=checkbox name=betreff_efh 
			value="Einfamilienhaus-Unterlagen">Einfamilienhäuser<br>
		<input type=checkbox name=betreff_dhh
			value="Doppelhaus-Unterlagen">Doppelhäuser<br><br>
		<input type=checkbox name=betreff_sonstiges
			value="sonstiges">sonstiges<br><br>
	</td>
	<tr>
	<td valign=top align=right>Bitte geben Sie hier Ihre Frage ein:</td>
	<td><textarea name=text rows=12 cols=30></textarea></td>
	<tr>
	<td colspan=2><hr width=250></td>
	<tr>
	<td valign=top align=right>Gewünschter Kontakt:</td>
	<td>
		<input type=radio name="Antwort-ueber" checked
			value="eMail">eMail<br>
		<input type=radio name="Antwort-ueber"
			value="Telefon">Telefon<br>
		<input type=radio name="Antwort-ueber"
			value="Post">per Post<br>
	</td>
	<tr>
	<td colspan=2 align=center>
		<input type=submit value="Senden">
	</td>
</table>
</form>




Und noch eine Frage: Wie kann ich diesen Code formatieren, damit ich diesen im Thread hier scrollen kann und nicht alles auf einmal angezeigt wird?
Witi: so :blush: (codebox)

Dieser Beitrag wurde von Bib bearbeitet: 02. März 2007 - 10:33

0

Anzeige



#2 Mitglied ist offline   h-a-n-n-e-s 

  • Gruppe: aktive Mitglieder
  • Beiträge: 824
  • Beigetreten: 11. August 06
  • Reputation: 1

geschrieben 27. Februar 2007 - 14:23

So etwas in der Art: Klick
Eingefügtes Bild
0

#3 Mitglied ist offline   Bib 

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

geschrieben 27. Februar 2007 - 15:47

Ich denke, das wäre das richtige.

Da ich nicht allzuviel Ahnung von PHP habe, ein großer Hilferuf:

Könnte das bitte jemand in meinen Code einbauen?

Es sollen nur Name, Tel-Nr. und E-Mail als Pflichtfeld gelten.
0

#4 Mitglied ist offline   Graumagier 

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

geschrieben 27. Februar 2007 - 15:58

Du schreibst einfach vor dem mail()-Teil was in der Art von

if (!isset($nachname) || !isset($telefon) || !isset($absender)) {
  echo "Achtung, bitte blabla ausfüllen";
  exit();
}

Dieser Beitrag wurde von Graumagier bearbeitet: 27. Februar 2007 - 15:58

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

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

#5 Mitglied ist offline   Bib 

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

geschrieben 28. Februar 2007 - 14:01

Ich hab jetzt alle möglichen und unmöglichen Orte ausprobiert, wo das hinkommen könnte, aber entweder es kommt eine Fehlermeldung oder es wird sofort dieser Text "Achtung, bitte blabla ausfüllen" angezeigt, ohne dasss ich irgendetwas ausfüllen könnte.
0

#6 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 28. Februar 2007 - 14:16

das muß in dem dokument stehen, wo das formular ausgewertet wird. man schickt doch ein formular zum beispiel an eine php-datei und diese macht dann irgendwas mit den formulardaten. datenbankabgleich, zusammenrechnen, auswerten, verschicken, falls es ein formmailer ist usw. und bevor das passiert, werden die daten nochmal überprüft, wo ist da das problem?

in deinem fall könnte das aber einfach nur an der schreibweise liegen. in dem beispiel sind die variablen alle klein geschrieben also "$nachname" und du hast sie in deinem script groß also "$Nachname" - das muß natürlich gleich sein.

Dieser Beitrag wurde von Gitarremann bearbeitet: 28. Februar 2007 - 14:19

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#7 Mitglied ist offline   Bib 

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

geschrieben 28. Februar 2007 - 15:01

Ich hab da keine extra Datei. Der PHP-Code, den ich gepostet habe, ist die ganze Formular-Datei. Darin sind die Eingabefelder usw. definiert und das ausgefüllte Forumlar wird auch damit verschickt.

Ich probiers nochmal mit den genauen Namen der Variablen.


Wie gesagt, ich kenn mich mit PHP nicht gut aus. Das Formular hab ich von jemand bekommen und ich habs nur etwas angepasst.
0

#8 Mitglied ist offline   Bib 

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

geschrieben 28. Februar 2007 - 15:24

Ich habs jetzt ein paarmal probiert, aber ohne einen konkreten Ort, wo ich diesen Code einfügen muß, komme ich nicht weiter...

Ich vermute mal, das muß in die Anweisung mit rein, von der aus die Mail verschickt wird:

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>";
}


Aber wo genau, daran happerts wahrschienlich. Ich habs mal so probiert, da wurde die Anweisung aber komplett ignoriert:

if ($_POST['abgeschickt']=='gesendet'){
if (!isset($Nachname) || !isset($Tel) || !isset($emailadresse)) {
  echo "Achtung, bitte blabla ausfüllen";
  exit();
}
[b]if[/b] (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>";

}


Auch wenn ich das fettgedruckte "if" in "elseif" geändert habe, keine Änderung.

:unsure:
0

#9 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 28. Februar 2007 - 16:17

ich würde das so machen - also vom schema her:

if (gesendet)

{

if (felder nicht ausgefüllt) { felder müssen ausgefüllt werden } else {mail schicken}

}

else

{
aktion für "nicht gesendet" vom anfang
}


so brauch da auch kein exit und sowas rein.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#10 Mitglied ist offline   Bib 

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

geschrieben 01. März 2007 - 08:43

Habs jetzt mal so abgeändert, es kommt aber ein Fehler:

Zitat

Parse error: parse error, unexpected T_ELSE in /homepages/24/d25166315/htdocs/mayr_aktiv/10_1_formmailer.php on line 66


if ($_POST['abgeschickt']=='gesendet'){
if (!isset($nachname) || !isset($telefon) || !isset($absender)) {
  echo "Achtung, bitte blabla ausfüllen";
  
}
else {(mail($mail_to,$mail_subject,$mail_txt, "From: "."[email protected]"));
   echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
   }
[b]else {echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";}[/b]
} 


Das fettgedruckte ist Line 66.
0

#11 Mitglied ist offline   Graumagier 

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

geschrieben 01. März 2007 - 08:46

Ich würde mal vermuten dass das an einer fehlenden geschwungenen Klammer vor Zeile 66 liegt.
"If you make something idiot proof, someone will invent a better idiot." - Marvin

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

#12 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.336
  • Beigetreten: 08. April 06
  • Reputation: 887
  • 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 - 09:48

Beitrag anzeigenZitat (Bib: 01.03.2007, 08:43)

Habs jetzt mal so abgeändert, es kommt aber ein Fehler:
if ($_POST['abgeschickt']=='gesendet'){
if (!isset($nachname) || !isset($telefon) || !isset($absender)) {
  echo "Achtung, bitte blabla ausfüllen";
  
}
else {(mail($mail_to,$mail_subject,$mail_txt, "From: "."[email protected]"));
   echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
   }
[b]else {echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";}[/b]
} 


Das fettgedruckte ist Line 66.



Frage:

Wieso machst du das nicht genau umgekehrt...
if ($nachname !="" &&  NUN ALLE PFLICHTFELDER DIE AUSGEFÜLLT SEIN MÜSSEN)
   {
	 Anweisungsblock für den Fall dass alle Pflichtfelder ausgefüllt wurden
	 eventuell auch IF Anwesisungen oder was auch immer
   }
Else
   {
   echo"Sie haben diverse Pflichtfelder nicht ausgefüllt. Bitte wiederholen sie die Eingaben";
   }

0

#13 Mitglied ist offline   Bib 

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

geschrieben 01. März 2007 - 10:11

Super, der Tip hat geholfen. Ich hab jetzt die Anweisung so umgestellt und nun passt es fast.


Das einzige Problem, das ich jetzt noch habe ist, daß schon beim Aufruf der Seite oben dieser Text "sie haben nicht alles vollständig ausgefüllt" erscheint.

Kommt das evtl. daher, weil alles (Formulareingaben und Weiterverarbeitung) in einer Datei sind? Wie kann ich diesen Fehler noch beheben?


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>";
}

0

#14 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.336
  • Beigetreten: 08. April 06
  • Reputation: 887
  • 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 - 10:45

[quote name='Bib' post='875019' date='01.03.2007, 10:11']Super, der Tip hat geholfen. Ich hab jetzt die Anweisung so umgestellt und nun passt es fast.
Das einzige Problem, das ich jetzt noch habe ist, daß schon beim Aufruf der Seite oben dieser Text "sie haben nicht alles vollständig ausgefüllt" erscheint.

Kommt das evtl. daher, weil alles (Formulareingaben und Weiterverarbeitung) in einer Datei sind? Wie kann ich diesen Fehler noch beheben?
//abarbeiten ERST wenn alle Pflichtfelder ausgefüllt wurden
if ($Irgenteinfeld dass du noch hast zb den Mail Text !="")
  {

     //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>";
         }
}



Man sieht: Manchmal wollen Rechner verarscht werden ;)

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 01. März 2007 - 10:53

0

#15 Mitglied ist offline   Bib 

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

geschrieben 01. März 2007 - 11:35

Ganz zum Schluss hat noch ein "}" gefehlt.

Die Meldung, dass Name, Tel und E-Mail fehlen kommt jetzt garnicht mehr. Da wird dann überhaupt nichts ausgegeben.


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... ;) )
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

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