Problemstellung bei Bestellformular

Rato

Grünschnabel
Guten Abend zusammen!

Ich schreibe grad bestens gelaunt an einem kleinen Bestellformular für eine Webseite.
Ziel ist es dass man bei diesem Formular die einzelnen verfügbaren Artikel sieht mit Artikelnummer, Preis usw.

Ich habe das schonmal alles obligatorisch mit 4 Produkten angelegt und auch etwas Code einer Bestellbestätigung gewidmet. Ich will auch wenn möglich ohne DB auskommen.

Nun meine Frage die mir keine Ruhe lässt
Wie kann ich bei der Benachrichtigung einpflegen dass man nur die Artikel angezeigt bekommt in der email bei denen der Inhalt der Anzahl größer 0 war.

Aktuell ist es halt so dass man alle Artikel angezeigt bekommt (also aktuell sogar nur der Webseitenbeitzer) auch diejenigen die nicht bestellt wurde also kästchen lerr oder eine 0 drin.

Hier der Quelltext der php datei.

PHP:
<?PHP
$GLOBALS['fehler'] = array();

if (isset($_POST['submit']))
	{
	pruefe_name($_POST['vorname'],
		"Sie haben den Vornamen nicht eingegeben.",
		"Sie haben unerlaubte Zeichen im Vornamen eingegeben.");
	pruefe_name($_POST['nachname'],
		"Sie haben den Nachnamen nicht eingegeben.",
		"Sie haben unerlaubte Zeichen im Nachnamen eingegeben.");
	pruefe_email($_POST['email'],
		"Sie haben keine eMail angegeben.",
		"Sie haben unerlaubte Zeichen in Ihrer eMail-Adresse verwendet.");
	
	
	daten_senden("michaelrueckel@web.de",
		"Anfrage Schienenreiniger - Von: ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname'],
		"Von: ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname']."\n".
		"eMail-Adresse: ".$_POST['email']."\n".
    "Adresse: ".$_POST['adresse']."\n".
		"PLZ/Ort: ".$_POST['plz_ort']."\n".
    "Telefon: ".$_POST['telefon']."\n".
    "Fax: ".$_POST['fax']."\n".
    "Artikel"."\n".
    "Best.Nr. H0 100 Schienenmop: ".$_POST['ArtH0100']."\n".
    "Best.Nr. H0 101 Schienenreinigungsset: ".$_POST['ArtH0101']."\n".
    "Best.Nr. H0 102 Schienenmover: ".$_POST['ArtH0102']."\n".
    "Best.Nr. H0 103 Magnetkopf: ".$_POST['ArtH0103']."\n".
    "Anfrage: \n----------\n".$_POST['anmerkungen'],
		"Bestätigung",
		"Guten Tag ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname'].",\n".
		"Sie erhalten diese eMail, da Sie auf unserer Webseite mit uns Kontakt aufgenommen und eine eMail-".
		"Bestätigung gewünscht haben.\n".
		"Ihre Anfrage wird so schnell von unseren Mitarbeitern verarbeitet und Sie werden von uns informiert.\n".
		"Mit freundlichen Grüßen.",
		"Leider konnte Ihre Nachricht nicht übermittelt werden.",
		"Leider konnte Ihre Bestätigung nicht übermittelt werden.",
		"Ihre Anfrage wurde erfolgreich gesendet.",
		"Ihre Bestätigungsmail wurde erfolgreich an Sie weitergeleitet.",
		"From: ".$_POST['email']." <".$_POST['vorname']." ".$_POST['nachname'].">",
		"From: Schienenreinger");
	}

// Funktionen:
function pruefe_name(&$name, $fehlermld_1, $fehlermld_2) 
	{
	$name = trim($name); 
	if (empty($name)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); 
	$name = NULL; return; endif; 
	if (preg_match("/^[- A-Za-zÄÖÜßäöü]{2,25}$/i", $name))
		{
		return $name;
		}
		else
			{
			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
			$name = NULL;
			return;
			} 
	}
	
function pruefe_email(&$email, $fehlermld_1, $fehlermld_2)
	{
	$email = trim($email);
	if (empty($email)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); $email = NULL; return; endif;
	if (preg_match("/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i", $email)) 
		{
		return $email;
		}
		else
			{
			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
			$email = NULL;
			return;
			}
	}
	
function daten_senden($email, $betreff, $inhalt, $betreff_empfbest, $inhalt_empfbest, $fehlermld, $fehlermld_empfbest, $erfolgrmld, $erfolgrmld_empfbest, $header = "", $header_empfbest = "")

	{
	if (sizeof($GLOBALS['fehler']) == 0) 
		{
		
		if (@mail($email, $betreff, $inhalt, $header)) { echo $erfolgrmld."<BR>"; } else { echo $fehlermld."<BR>"; }
		if ($_POST['bestaetigung']) 
			{
			if (@mail($_POST['email'], $betreff_empfbest, $inhalt_empfbest, $header_empfbest))
				{
				echo $erfolgrmld_empfbest."<BR>"; 
				}
				else
					{
					echo $fehlermld_empfbest."<BR>"; 
					}
			}
		}
		else 
			{
			foreach ($GLOBALS['fehler'] AS $value) 
				{
				echo $value;
				}
			}
	}
?>
 
Zuletzt bearbeitet:
Oh entschuldigung,

ich dachte das Problem besteht rein in dem Script das die Mail erzeugt aber hier noch das geforderte HTML-Dokument, ist sehr schlicht gehalten bisher. (mit noch interner css datei)

HTML:
<HTML>
<HEAD>
<TITLE>Bestellformular</TITLE>
<link href="bestform.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Stil1 {
	font-size: 10px;
	color: #666666;
}
body {
	background-color: #CCCCCC;
}
a:link {
	text-decoration: none;
	color: #F8F8F8;
}
a:visited {
	text-decoration: none;
	color: #F8F8F8;
}
a:hover {
	text-decoration: none;
	color: #F8F8F8;
}
a:active {
	text-decoration: none;
	color: #F8F8F8;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>

<BODY>
<FORM METHOD="POST" ACTION="mailer.php">
  <table width="600" align="center" cellspacing="10" bgcolor="#FFFFFF">
    <tr>
      <td><p align="left"><span class="header"><strong>Bestellformular</strong></span></p>
        <p align="left"><BR>
            <select name="anrede">
              <br>
              <option>Herr</option>
              <option>Frau</option>
            </select>
            <input name="nachname" type="TEXT" value="Nachname" maxlength="25">
            <input name="vorname" type="TEXT" value="Vorname" maxlength="25">
            <BR >
            <input name="plz_ort" type="TEXT" value="PLZ / Ort" maxlength="50">
            <input name="adresse" type="TEXT" value="Adresse" maxlength="50">
            <input name="email" type="TEXT" value="eMail" maxlength="50">
            <BR >
            <input name="telefon" type="TEXT" value="Telefon" maxlength="50">
            <input name="fax" type="TEXT" value="Fax" maxlength"=50">
            <BR>
        </p>
        <p class="table">Tragen Sie bitte die gew&uuml;nschte Anzahl in der Artikelliste ein.</p>
        <table width="565" border="0" bordercolor="#393A00">
          <tr>
            <td width="48" bordercolor="#000000" bgcolor="#F8F8F8" class="table"><strong>Anzahl</strong></td>
            <td width="102" bordercolor="#000000" bgcolor="#F8F8F8" class="table"><strong>Art. Nummer</strong></td>
            <td width="268" bordercolor="#000000" bgcolor="#F8F8F8" class="table"><strong>Artikel</strong></td>
            <td width="76" bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="right"><strong>Preis <span class="Stil1">in &euro; inkl. MwSt.</span></strong></div></td>
            <td width="49" bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center"><strong>Info</strong></div></td>
          </tr>
          <tr>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center">
                <input type="TEXT" name="ArtH0100" maxlength="5" size="3">
            </div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table">H0 100</td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="left">Schienenmop</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="right">34,60</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center"><a href="http://schienenreiniger.de/product/h0img1.html"><img src="info.gif" width="25" height="24"></a></div></td>
          </tr>
          <tr>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center">
                <input type="TEXT" name="ArtH0101" maxlength="5" size="3">
            </div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table">H0 101</td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="left">Schienenreinigungsset</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="right">49,00</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center"><a href="http://schienenreiniger.de/product/h0img2.html"><img src="info.gif" width="25" height="24"></a></div></td>
          </tr>
          <tr>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center">
                <input type="TEXT" name="ArtH0102" maxlength="5" size="3">
            </div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table">H0 102</td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="left">Schienenmover</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="right">12,90</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center"><a href="http://schienenreiniger.de/product/h0img3.html"><img src="info.gif" width="25" height="24"></a></div></td>
          </tr>
          <tr>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center">
                <input type="TEXT" name="ArtH0103" maxlength="5" size="3">
            </div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table">H0 103</td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="left">Magnetkopf</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="right">9,60</div></td>
            <td bordercolor="#000000" bgcolor="#F8F8F8" class="table"><div align="center"><a href="http://schienenreiniger.de/product/h0img4.html"><img src="info.gif" width="25" height="24"></a></div></td>
          </tr>
        </table>
        <p><BR>
            <span class="table">Anmerkungen:</span><BR>
            <TEXTAREA NAME="anmerkungen" ROWS="5" COLS="25"></TEXTAREA>
            <BR>
            <span class="table">Versand innerhalb Deutschland:</span><br>
        </p>
        <p><span class="table"><BR>
          <!--Hier muss noch die Checkbox zur Auswahl hin -->
          <INPUT TYPE="CHECKBOX" NAME="bestaetigung">
          Wollen Sie eine Best&auml;tigung erhalten? (Falls ja markieren)</span><BR>
          <BR>
          <INPUT TYPE="SUBMIT" NAME="submit">
          <INPUT TYPE="RESET">
                </p></td>
    </tr>
  </table>

</FORM>
</BODY>
</HTML>
 
Hier mal ein kleiner Denkanstoss, allerdings ist es nicht dynamisch. Besser wäre das Feld.
HTML:
<input type="TEXT" name="ArtH0101" maxlength="5" size="3">

als Array deklarieren.

PHP:
function getStr($y){
$str = '';   
   switch($y){
      case 0:
	  $str = "Best.Nr. H0 100 Schienenmop: "; 
	  break;
	  
	  case 1:
	  $str = "Best.Nr. H0 101 Schienenreinigungsset: ";
	  break;
	  
	  case 2:
	  $str = "Best.Nr. H0 102 Schienenmover: ";
	  break;
	  
	  case 3:
	  $str = "Best.Nr. H0 103 Magnetkopf: ";
	  break;
	  
	  default:
           $str = "";
	  break;
   }
   return $str;
}
$artikel = '';
for($i =0; $i<= 3;$i++){
   if(isset($_POST['ArtH010'.$i]) && $_POST['ArtH010'.$i] > 0){
      $artikel .= getStr($i).$_POST['ArtH010'.$i]."\n";
   }
}
 
Zuletzt bearbeitet von einem Moderator:
danke schonmal,
nur versteh ich es noch nicht ganz.
HTML:
<input type="TEXT" name="ArtH0101" maxlength="5" size="3">
als Array definieren versteh ich grad nicht ganz wie du das meinst. Ich denke mal du meinst dass er alle Artikel also H0100 usw in ein Array schreibt bzw in jeder tabellen zeile einen wert aus dem array ausliest und diesen dann einfügt und in der zählschleife +1 macht, richtig?

Zu dem PhP code.
Ich versteh ich leider nicht was du mir damit sagen willst, auser dass es für mich so aussiht als ab das in ein array alle vorher eingeschriebenen artikel speichert und dann eine abfrage macht ob wert >0 ist. Aber weis grad nicht wohin damit im Code.

Aber danke schonmal vielmals werde mir weiter den Kopf zerbrechen und versuchen durch deine denkanstöße weiter zu kommen.
Weitere Tipps gerne gesehen ;)

mfg
Rato
 
als Array definieren versteh ich grad nicht ganz wie du das meinst. Ich denke mal du meinst dass er alle Artikel also H0100 usw in ein Array schreibt bzw in jeder tabellen zeile einen wert aus dem array ausliest und diesen dann einfügt und in der zählschleife +1 macht, richtig?

Ja genau, so meine ich es.
HTML:
<input type="TEXT" name="ArtH0101[]" maxlength="5" size="3">

Aber weis grad nicht wohin damit im Code.

PHP:
function getStr($y){
$str = '';   
   switch($y){
      case 0:
      $str = "Best.Nr. H0 100 Schienenmop: "; 
      break;
      
      case 1:
      $str = "Best.Nr. H0 101 Schienenreinigungsset: ";
      break;
      
      case 2:
      $str = "Best.Nr. H0 102 Schienenmover: ";
      break;
      
      case 3:
      $str = "Best.Nr. H0 103 Magnetkopf: ";
      break;
      
      default:
           $str = "";
      break;
   }
   return $str;
}
if (isset($_POST['submit'])){
$artikel = '';
for($i =0; $i<= 3;$i++){
   if(isset($_POST['ArtH010'.$i]) && $_POST['ArtH010'.$i] > 0){
      $artikel .= getStr($i).$_POST['ArtH010'.$i]."\n";
   }
}  

[...]
"Telefon: ".$_POST['telefon']."\n".
    "Fax: ".$_POST['fax']."\n".
    "Artikel"."\n".
    $artikel.
    "Anfrage: \n----------\n".$_POST['anmerkungen'],
]
 
Zuletzt bearbeitet von einem Moderator:
so habs mal in den php code eingepflegt und jetzt geht nix mehr bei mir :(

PHP:
<?PHP
function getStr($y){
$str = '';   
   switch($y){
      case 0:
      $str = "Best.Nr. H0 100 Schienenmop: "; 
      break;
      
      case 1:
      $str = "Best.Nr. H0 101 Schienenreinigungsset: ";
      break;
      
      case 2:
      $str = "Best.Nr. H0 102 Schienenmover: ";
      break;
      
      case 3:
      $str = "Best.Nr. H0 103 Magnetkopf: ";
      break;
      
      default:
           $str = "";
      break;
   }
   return $str;
}
if (isset($_POST['submit'])){
$artikel = '';
for($i =0; $i<= 3;$i++){
   if(isset($_POST['ArtH010'.$i]) && $_POST['ArtH010'.$i] > 0){
      $artikel .= getStr($i).$_POST['ArtH010'.$i]."\n";
   }
}  


$GLOBALS['fehler'] = array();

if (isset($_POST['submit']))
	{
	pruefe_name($_POST['vorname'],
		"Sie haben den Vornamen nicht eingegeben.",
		"Sie haben unerlaubte Zeichen im Vornamen eingegeben.");
	pruefe_name($_POST['nachname'],
		"Sie haben den Nachnamen nicht eingegeben.",
		"Sie haben unerlaubte Zeichen im Nachnamen eingegeben.");
	pruefe_email($_POST['email'],
		"Sie haben keine eMail angegeben.",
		"Sie haben unerlaubte Zeichen in Ihrer eMail-Adresse verwendet.");
	
	
	daten_senden("michaelrueckel@web.de",
		"Anfrage Schienenreiniger - Von: ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname'],
		"Von: ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname']."\n".
		"eMail-Adresse: ".$_POST['email']."\n".
    "Adresse: ".$_POST['adresse']."\n".
		"PLZ/Ort: ".$_POST['plz_ort']."\n".
    "Telefon: ".$_POST['telefon']."\n".
    "Fax: ".$_POST['fax']."\n".
    "Artikel"."\n".
	$artikel.
    "Anfrage: \n----------\n".$_POST['anmerkungen'],
		"Bestätigung",
		"Guten Tag ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname'].",\n".
		"Sie erhalten diese eMail, da Sie auf unserer Webseite mit uns Kontakt aufgenommen und eine eMail-".
		"Bestätigung gewünscht haben.\n".
		"Ihre Anfrage wird so schnell von unseren Mitarbeitern verarbeitet und Sie werden von uns informiert.\n".
		"Mit freundlichen Grüßen.",
		"Leider konnte Ihre Nachricht nicht übermittelt werden.",
		"Leider konnte Ihre Bestätigung nicht übermittelt werden.",
		"Ihre Anfrage wurde erfolgreich gesendet.",
		"Ihre Bestätigungsmail wurde erfolgreich an Sie weitergeleitet.",
		"From: ".$_POST['email']." <".$_POST['vorname']." ".$_POST['nachname'].">",
		"From: Schienenreinger");
	}

// Funktionen:
function pruefe_name(&$name, $fehlermld_1, $fehlermld_2) 
	{
	$name = trim($name); 
	if (empty($name)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); 
	$name = NULL; return; endif; 
	if (preg_match("/^[- A-Za-zÄÖÜßäöü]{2,25}$/i", $name))
		{
		return $name;
		}
		else
			{
			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
			$name = NULL;
			return;
			} 
	}
	
function pruefe_email(&$email, $fehlermld_1, $fehlermld_2)
	{
	$email = trim($email);
	if (empty($email)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); $email = NULL; return; endif;
	if (preg_match("/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i", $email)) 
		{
		return $email;
		}
		else
			{
			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
			$email = NULL;
			return;
			}
	}
	
function daten_senden($email, $betreff, $inhalt, $betreff_empfbest, $inhalt_empfbest, $fehlermld, $fehlermld_empfbest, $erfolgrmld, $erfolgrmld_empfbest, $header = "", $header_empfbest = "")

	{
	if (sizeof($GLOBALS['fehler']) == 0) 
		{
		
		if (@mail($email, $betreff, $inhalt, $header)) { echo $erfolgrmld."<BR>"; } else { echo $fehlermld."<BR>"; }
		if ($_POST['bestaetigung']) 
			{
			if (@mail($_POST['email'], $betreff_empfbest, $inhalt_empfbest, $header_empfbest))
				{
				echo $erfolgrmld_empfbest."<BR>"; 
				}
				else
					{
					echo $fehlermld_empfbest."<BR>"; 
					}
			}
		}
		else 
			{
			foreach ($GLOBALS['fehler'] AS $value) 
				{
				echo $value;
				}
			}
	}
?>

wenn ich jetzt abschicken klicke kommt:
Parse error: syntax error, unexpected $end in ##URL## on line 137
 
Ja dann wirst du wohl deinen Code nach fehlende Anführungen, Klammern oder fehlende Semikolons durchsuchen müssen ;)
 
wie ich es hasse syntaxfehler zu suchen gibt es nicht ein programm wo man das weng besser sehen kann wo was auf und zu geht?
 
Ich würde erstmal damit anfangen den Code richtig einzurücken, dann findest du den Fehler leichter.
 
Zurück