Dynamische Seite per mail() versenden?

tomtutorial

Erfahrenes Mitglied
Hi @ all,

Ich habe es nun geschafft nach ca 4 Wochen, von Null Ahnung in Sachen PHP, durch Buch etc, einen recht schönen Shop zu programmieren. Mit MySQL Datenbank & halt alles was dazu gehört.

Doch nun zum Schluß komme ich noch mal so richtig ins Schwitzen.

Das Problem:

Reihenfolge des Bestellvorganges:

Warenkorb -> Adresseingabe -> Bestätigungsseite (ist noch mal alles aufgelistet) -> per Mail versenden

Und genau beim letzten Punkt stocke ich. Der Inhalt der eMail soll nämlich dynamisch aufgebaut sein. Ich weiß garnicht ob das überhaupt geht
Ich habe quasi die komplette Bestätigungsseite in eine Variable gepackt, die dann verschickt wird. Ich hänge einfach mal den Quellcode ran. Vielleicht man ich ja etwas prinzipell falsch oder es gibt einen einfacheren Weg.

PHP:
<?php
	require("include/db.inc");
	$globusemail = "frenken@globus-online.com";
	$header="Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
// Content 
$content ="<?php";
$content .="if ($kdnr != \"\") {";
$content .="echo(\"Ihre Kundennummer: $kdnr\");}";
$content .="else {echo(\"Ich bin Neukunde\");}";
$content .="?>";
$content .="<tr><td colspan='6'><table><tr><td colspan='3' align='left' valign='top'>";
$content .="<table width='390' border='0' cellspacing='0' cellpadding='1' bgcolor='#000000'><tr><td>";
$content .="<table border='0' width='100%' align='left' valign='top' cellspacing='0' cellpadding='4' bgcolor='#FFFFFF'>";
$content .="<tr><td><b>Rechnungsadresse:</b></td></tr>";
$content .="<tr><td>Firma:&nbsp;<b><?php echo$firma;?></b></td></tr>";
$content .="<tr><td>Vor- & Zuname:&nbsp;<b><?php echo$vorzuname;?></b></td></tr>";
$content .="<tr><td>Strasse / Hausnummer:&nbsp;<b><?php echo$strasse;?></b></td>";
$content .="</tr><tr><td>Postleitzahl / Ort:&nbsp;<b><?php echo$ort;?></b></td></tr>";
$content .="<tr><td>Land:&nbsp;<b><?php echo$land;?></b></td>";
$content .="</tr><tr><td>&nbsp;</td></tr>";
$content .="<tr><td>Telefon:&nbsp;<b><?php echo$telefon;?></b></td></tr>";
$content .="<tr><td>Fax:&nbsp;<b><?php echo$fax;?></b></td></tr>";
$content .="<tr><td>eMail:&nbsp;<b><?php echo$email;?></b></td></tr>";
$content .="<tr><td>Website:&nbsp;<b><?php echo$website;?></b></td></tr>";
$content .="</table></td></tr></table></td>";
$content .="<!-- Feld für die Lieferadresse -->";
$content .="<td colspan='3' align='left' valign='top'>";
$content .="<table width='390' border='0' cellspacing='0' cellpadding='1' bgcolor='#000000'><tr><td>";
$content .="<table border='0' width='100%' align='left' valign='top' cellspacing='0' cellpadding='4' bgcolor='#FFFFFF'>";
$content .="<tr><td><b>Lieferadresse:</b></td></tr>";
$content .="<tr><td>Firma:&nbsp;<b><?php echo$lieferfirma;?></b></td></tr>";
$content .="<tr><td>Vor- & Zuname:&nbsp;<b><?php echo$liefervorzuname;?></b></td></tr>";
$content .="<tr><td>Strasse / Hausnummer:&nbsp;<b><?php echo$lieferstrasse;?></b></td>";
$content .="</tr><tr><td>Postleitzahl / Ort:&nbsp;<b><?php echo$lieferort;?></b></td></tr>";
$content .="<tr><td>Land:&nbsp;<b><?php echo$lieferland;?></b></td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="<tr><td>Telefon:&nbsp;<b><?php echo$liefertelefon;?></b></td></tr>";
$content .="<tr><td>Fax:&nbsp;<b><?php echo$lieferfax;?></b></td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="</table></td></tr></table></td></tr></table>";
$content .="<tr><td colspan='6'><table>";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>";
$content .="<tr><td width='50'><b>Menge</b></td><td width='80'><b>ArtNr.</b></td><td><b>Name</b></td><td width='30'><b>VPE</b></td><td width='100'><b>Preis</b></td><td width='100'><b>Gesamt</b></td></tr>";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>";
$content .="<?php";
$content .="// Auslesen des Warenkorbs & die dazugehörigen Daten in ein Array "; 
$content .="$kaufen = mysql_query(\"SELECT * FROM warenkorb WHERE sessionid='$sid'\");";
$content .="while ($ergebnis = mysql_fetch_array($kaufen)) {";
$content .="$id	= $ergebnis[\"id\"];";
$content .="$sessionid = $ergebnis[\"sessionid\"];";
$content .="$artnr = $ergebnis[\"artnr\"];";
$content .="$menge = $ergebnis[\"menge1\"];";
$content .="$artikel = mysql_query(\"SELECT name, kurztext, preisid FROM artikel WHERE artnr='$artnr'\");";
$content .="$art = mysql_fetch_array($artikel);";
$content .="$name = $art[\"name\"];";
$content .="$kurztext = $art[\"kurztext\"];";
$content .="$preisid = $art[\"preisid\"];";
$content .="$preise = mysql_query(\"SELECT vpe1, preis1 FROM preise WHERE id='$preisid'\");";
$content .="$preis = mysql_fetch_array($preise);";
$content .="$vpe1 = $preis[\"vpe1\"];";
$content .="$preis1 = $preis[\"preis1\"];";
$content .="$preis1_format = number_format($preis1, 3, ',', ' ');";
$content .="$gesamt1 = $menge * $vpe1 * $preis1;";
$content .="$gesamt2 = number_format($gesamt1, 2, ',', ' ');";
$content .="$netto1 = $netto1 + $gesamt1;";
$content .="$netto2 = number_format($netto1, 2, ',', ' ');";
$content .="// Ausgabe der Artikel";
$content .="echo(\"<tr>\");";
$content .="echo(\"<td>$menge</td>\");";
$content .="echo(\"<td>$artnr</td>\");";
$content .="echo(\"<td><b>$name</b><br>$kurztext</td>\");";
$content .="echo(\"<td>$vpe1</td>\");";
$content .="echo(\"<td>$preis1_format &euro;/Stk.</td>\");";
$content .="echo(\"<td>$gesamt2 &euro;</td>\");";
$content .="echo(\"</tr>\n\");";
$content .="echo(\"<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>\n\");}";
$content .="$mwst1 = $netto1 * 16 / 100;";
$content .="$mwst2 = number_format($mwst1, 2, ',', ' ');";
$content .="$endbetrag1 = $netto1 + $mwst1;";
$content .="$endbetrag2 = number_format($endbetrag1, 2, ',', ' ');";
$content .="echo(\"<tr><td colspan='5' align='right'>Summe Netto:</td>\");";
$content .="echo(\"<td>$netto2 &euro;</td>\n\");";
$content .="echo(\"<tr><td colspan='6'><hr width='100%' color='#000000' size='2' noshade></td></tr>\n\");";
$content .="echo(\"<tr><td colspan='5' align='right'>Die Umsatzsteuer beträgt:</td>\");";
$content .="echo(\"<td>$mwst2 &euro;</td>\n\");";
$content .="echo(\"<tr><td colspan='6'><hr width='100%' color='#000000' size='3' noshade></td></tr>\n\");";
$content .="echo(\"<tr><td colspan='5' align='right'>Endbetrag:</td>\");";
$content .="echo(\"<td>$endbetrag2 &euro;</td>\n\");";
$content .="?>";
$content .="</table></table>";
?>
<table width="800" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000"><tr><td height="30">&nbsp;</td></tr>
<tr><td>
<table border="0" width="100%" align="left" valign="top" cellspacing="0" cellpadding="4" bgcolor="#FFFFFF">
<tr><td colspan="6" align="left"><img src="graphics/vielendank.jpg" width="176" height="40"></td></tr>

<?php 
$emailsenden = mail("$globusemail", "Bestellung aus Onlineshop", "$content");
$emailsenden;
if (!$emailsenden){
	echo("Fehler bei der eMail Übertragung");
	}
	else {
	echo("eMail erfolgreich an $globusemail übertragen.");
	}

  echo("<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>\n");
  echo("<tr><td colspan='6'><table><tr><td align='right'><input name='startseite' type='button' onClick=\"goToURL('parent','index.php?sid=$sid');return document.returnValue\" value='Zur Startseite'></td></tr></table></td></tr>\n");
?>

Wäre für jede Anregung dankbar.


mfg, Tom
 
$content .="while ($ergebnis = mysql_fetch_array($kaufen)) {";

Das geht glaub ich nit, dass man ne while schleife in Anführungszeichen ausführen kann... oder? Oder wo hängts denn beim Script, irgend eine Fehlermeldung?

mfg mAu

P.s.: Die PS-Tutorials auf deiner Site sind klasse :)
 
Du darfst nicht den gesamten Code der PHP Datei in eine Variable speichern !

Du darfst nur die Ausgaben in eine Variable speichern !

Also überall wo du ein echo 'blabla' hast schreibst du drunter $var .= 'blabla' und am Ende verpackst du das in deiner Mail.

Also nicht den Code nur die Ausgaben !
 
Yes,

du bist mein Man.

An genau dieser Stelle hänge ich bei der Übertragung.
Fehlermeldung:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /xxxxxxxxxx/xxxx/xxxxxxxxxx/htdocs/shop-einzelhandel/xxxxxxxxx/bestelldanke.php on line 62

Und wie komme ich da weiter?

Tom
 
Keine garantie, aber ich hab das script mal schnell "überarbeitet":

PHP:
<?php
    require("include/db.inc");
    $globusemail = "frenken@globus-online.com";
    $header="Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";

    ## Kundennummer
    if ( $kdnr != "" ){
       $kunde = "Ihre Kundennummer: ".$kdnr;
       }
    else{
         $kunde = "Ich bin Neukunde";
         }
    // Auslesen des Warenkorbs & die dazugehörigen Daten in ein Array
$kaufen = mysql_query("SELECT * FROM warenkorb WHERE sessionid='$sid'");
while ($ergebnis = mysql_fetch_array($kaufen)) {
$id    = $ergebnis["id"];
$sessionid = $ergebnis["sessionid"];
$artnr = $ergebnis["artnr"];
$menge = $ergebnis["menge1"];
$artikel = mysql_query("SELECT name, kurztext, preisid FROM artikel WHERE artnr='$artnr'");
$art = mysql_fetch_array($artikel);
$name = $art["name"];
$kurztext = $art["kurztext"];
$preisid = $art["preisid"];
$preise = mysql_query("SELECT vpe1, preis1 FROM preise WHERE id='$preisid'");
$preis = mysql_fetch_array($preise);
$vpe1 = $preis["vpe1"];
$preis1 = $preis["preis1"];
$preis1_format = number_format($preis1, 3, ',', ' ');
$gesamt1 = $menge * $vpe1 * $preis1;
$gesamt2 = number_format($gesamt1, 2, ',', ' ');
$netto1 = $netto1 + $gesamt1;
$netto2 = number_format($netto1, 2, ',', ' ');

// Content
$content ="";
$content .="".$kunde;
$content .="<tr><td colspan='6'><table><tr><td colspan='3' align='left' valign='top'>";
$content .="<table width='390' border='0' cellspacing='0' cellpadding='1' bgcolor='#000000'><tr><td>";
$content .="<table border='0' width='100%' align='left' valign='top' cellspacing='0' cellpadding='4' bgcolor='#FFFFFF'>";
$content .="<tr><td><b>Rechnungsadresse:</b></td></tr>";
$content .="<tr><td>Firma:&nbsp;<b> ".$firma."</b></td></tr>";
$content .="<tr><td>Vor- & Zuname:&nbsp;<b>".$vorzuname."</b></td></tr>";
$content .="<tr><td>Strasse / Hausnummer:&nbsp;<b>".$strasse."</b></td>";
$content .="</tr><tr><td>Postleitzahl / Ort:&nbsp;<b>".$ort."</b></td></tr>";
$content .="<tr><td>Land:&nbsp;<b>".$land."</b></td>";
$content .="</tr><tr><td>&nbsp;</td></tr>";
$content .="<tr><td>Telefon:&nbsp;<b>".$telefon."</b></td></tr>";
$content .="<tr><td>Fax:&nbsp;<b>".$fax."</b></td></tr>";
$content .="<tr><td>eMail:&nbsp;<b>".$email."</b></td></tr>";
$content .="<tr><td>Website:&nbsp;<b>".$website."</b></td></tr>";
$content .="</table></td></tr></table></td>";
$content .="<!-- Feld für die Lieferadresse -->";
$content .="<td colspan='3' align='left' valign='top'>";
$content .="<table width='390' border='0' cellspacing='0' cellpadding='1' bgcolor='#000000'><tr><td>";
$content .="<table border='0' width='100%' align='left' valign='top' cellspacing='0' cellpadding='4' bgcolor='#FFFFFF'>";
$content .="<tr><td><b>Lieferadresse:</b></td></tr>";
$content .="<tr><td>Firma:&nbsp;<b>".$lieferfirma."</b></td></tr>";
$content .="<tr><td>Vor- & Zuname:&nbsp;<b>".$liefervorzuname."</b></td></tr>";
$content .="<tr><td>Strasse / Hausnummer:&nbsp;<b>".$lieferstrasse."</b></td>";
$content .="</tr><tr><td>Postleitzahl / Ort:&nbsp;<b>".$lieferort."</b></td></tr>";
$content .="<tr><td>Land:&nbsp;<b>".$lieferland."</b></td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="<tr><td>Telefon:&nbsp;<b>".liefertelefon."</b></td></tr>";
$content .="<tr><td>Fax:&nbsp;<b>".$lieferfax."</b></td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="<tr><td>&nbsp;</td></tr>";
$content .="</table></td></tr></table></td></tr></table>";
$content .="<tr><td colspan='6'><table>";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>";
$content .="<tr><td width='50'><b>Menge</b></td><td width='80'><b>ArtNr.</b></td><td><b>Name</b></td><td width='30'><b>VPE</b></td><td width='100'><b>Preis</b></td><td width='100'><b>Gesamt</b></td></tr>";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>";
$content .="// Ausgabe der Artikel";
$content .="<tr>";
$content .="<td>$menge</td>";
$content .="<td>$artnr</td>";
$content .="<td><b>$name</b><br>$kurztext</td>";
$content .="<td>$vpe1</td>";
$content .="<td>$preis1_format &euro;/Stk.</td>";
$content .="<td>$gesamt2 &euro;</td>";
$content .="</tr>\n";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>\n}";
$mwst1 = $netto1 * 16 / 100.
$mwst2 = number_format($mwst1, 2, ',', ' ');
$endbetrag1 = $netto1 + $mwst1;
$endbetrag2 = number_format($endbetrag1, 2, ',', ' ');
$content .="<tr><td colspan='5' align='right'>Summe Netto:</td>";
$content .="<td>$netto2 &euro;</td>\n";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='2' noshade></td></tr>\n";
$content .="<tr><td colspan='5' align='right'>Die Umsatzsteuer beträgt:</td>";
$content .="<td>$mwst2 &euro;</td>\n";
$content .="<tr><td colspan='6'><hr width='100%' color='#000000' size='3' noshade></td></tr>\n";
$content .="<tr><td colspan='5' align='right'>Endbetrag:</td>";
$content .="<td>$endbetrag2 &euro;</td>\n";
$content .="</table></table>";
?>
<table width="800" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000"><tr><td height="30">&nbsp;</td></tr>
<tr><td>
<table border="0" width="100%" align="left" valign="top" cellspacing="0" cellpadding="4" bgcolor="#FFFFFF">
<tr><td colspan="6" align="left"><img src="graphics/vielendank.jpg" width="176" height="40"></td></tr>

<?php
$emailsenden = mail("$globusemail", "Bestellung aus Onlineshop", "$content");
$emailsenden;
if (!$emailsenden){
    echo("Fehler bei der eMail Übertragung");
    }
    else {
    echo("eMail erfolgreich an $globusemail übertragen.");
    }

  echo("<tr><td colspan='6'><hr width='100%' color='#000000' size='1' noshade></td></tr>\n");
  echo("<tr><td colspan='6'><table><tr><td align='right'><input name='startseite' type='button' onClick=\"goToURL('parent','index.php?sid=$sid');return document.returnValue\" value='Zur Startseite'></td></tr></table></td></tr>\n");
?>

mfg mAu
 
@ Mauri:

Auch interessant.
Ich habe es auf Grund deiner Anregung aber auch schon so ähnlich gemacht
& es funktioniert & ich bin überglücklich. Jetzt kommen nur noch ein paar Feinarbeiten und der Shop steht.

Danke, Tom
 
@ tefla

Mein Dank gebührt natürlich auch dir. Vor lauter 'Glücksgefühle' und 'Übermutseifer', habe ich dich eben vergessen.

Tom
 
Zurück