shopping cart to mail
Met deze functie kan ik een form naar mijn e-mail sturen:
hoe kan ik nu de inhoud van mijn shopping cart meesturen met de e-mail?
De shopping cart die normaal op het scherm weergegeven wordt, wordt nu achter aan het bericht van je mail geplakt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Include MySQL class
require_once('_MODIFIED_CART/inc/mysql.class.php');
// Include database connection
require_once('_MODIFIED_CART/inc/global.inc.php');
// Include functions
require_once('_MODIFIED_CART/inc/functions.inc.php');
// Start the session
session_start();
?>
// Include MySQL class
require_once('_MODIFIED_CART/inc/mysql.class.php');
// Include database connection
require_once('_MODIFIED_CART/inc/global.inc.php');
// Include functions
require_once('_MODIFIED_CART/inc/functions.inc.php');
// Start the session
session_start();
?>
<html>
<head>
<link rel="stylesheet" href="_MODIFIED_CART/css/styles.css" />
</head>
<body
bgcolor="#CCCCCC"
text="#003311"
link="#F50066"
vlink="#F50066"
alink="#F50066">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$your_email = "[email protected]";
$subject = "Bestelling";
$empty_fields_message = "<p>Niet alle verplichte velden zijn ingevuld.</p>";
$thankyou_message = "<p>Dank u wel voor uw bestelling.</p>";
$name = stripslashes($_POST['txtName']);
$email = stripslashes($_POST['txtEmail']);
$message .= showCart();
if (!isset($_POST['txtName'])) {
?>
$your_email = "[email protected]";
$subject = "Bestelling";
$empty_fields_message = "<p>Niet alle verplichte velden zijn ingevuld.</p>";
$thankyou_message = "<p>Dank u wel voor uw bestelling.</p>";
$name = stripslashes($_POST['txtName']);
$email = stripslashes($_POST['txtEmail']);
$message .= showCart();
if (!isset($_POST['txtName'])) {
?>
<form method="post" action="">
<p><label for="txtName">Name:</label><br />
<input type="text" title="Enter your name" name="txtName" /></p>
<p><label for="txtEmail">Email:</label><br />
<input type="text" title="Enter your email address" name="txtEmail" /></p>
<p><label for="txtMessage">Your message:</label><br />
<textarea title="Enter your message" name="txtMessage"></textarea></p>
<p><label title="Send your message">
<input type="submit" value="Send" /></label></p>
</form>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
}
elseif (empty($name) || empty($email)) {
echo $empty_fields_message;
}
else {
// Stop the form being used from an external URL
// Get the referring URL
$referer = $_SERVER['HTTP_REFERER'];
// Get the URL of this page
$this_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
// If the referring URL and the URL of this page don't match then
// display a message and don't send the email.
if ($referer != $this_url) {
echo "You do not have permission to use this script from another URL.";
exit;
}
// The URLs matched so send the email
mail($your_email, $subject, $message, "From: $name <$email>");
// Display the thankyou message
echo $thankyou_message;
}
?>
}
elseif (empty($name) || empty($email)) {
echo $empty_fields_message;
}
else {
// Stop the form being used from an external URL
// Get the referring URL
$referer = $_SERVER['HTTP_REFERER'];
// Get the URL of this page
$this_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
// If the referring URL and the URL of this page don't match then
// display a message and don't send the email.
if ($referer != $this_url) {
echo "You do not have permission to use this script from another URL.";
exit;
}
// The URLs matched so send the email
mail($your_email, $subject, $message, "From: $name <$email>");
// Display the thankyou message
echo $thankyou_message;
}
?>
<div id="contents"> </div>
</body>
</html>
Ik heb dus dit aangepast:
$message .= showCart();
En inderdaad krijg ik nu de shopping cart in mijn e-mail, maar ook de tussenliggende code!
Gewijzigd op 01/01/1970 01:00:00 door Jonathan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="cart.php?action=update" method="post" id="cart">';
$output[] = '<table cellspacing=6 cellpadding=4 border=0>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT id, title, author, price FROM data WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td width=11%><a style="text-decoration: none" href="cart.php?action=delete&id='.$id.'" class="r">Verwijder</a></td>';
$output[] = '<td width=61%>'.$title.'; '.$author.'</td>';
$output[] = '<td width=8%>€ '.$price.'</td>';
$output[] = '<td width=7%><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td width=11% align="right">€ '.number_format(($price * $qty), 2).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table><hr>';
$output[] = '<table cellspacing=6 cellpadding=4 border=0>';
$output[] = '<tr><td align="right" width=88%>Subtotaal:</td><td align="right" width=6%>€</td><td align="right" width=6%>'.number_format(($total), 2).'</td></tr>';
$output[] = '<tr><td align="right" width=88%>Verzendkosten:</td><td align="right" width=6%>€</td><td align="right" width=6%><u>6.20</u></td></tr>';
$output[] = '<tr><td align="right" width=88%><strong>Prijs inclusief verzendkosten</strong>:</td><td align="right" width=6%><strong>€</strong></td><td align="right" width=6%><strong>'.number_format(($total + 6.20), 2).'</strong></td></tr>';
$output[] = '</table>';
} else {
$output[] = '<br><p>Uw winkelwagen is leeg.</p><br>';
}
return join('',$output);
}
?>
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="cart.php?action=update" method="post" id="cart">';
$output[] = '<table cellspacing=6 cellpadding=4 border=0>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT id, title, author, price FROM data WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td width=11%><a style="text-decoration: none" href="cart.php?action=delete&id='.$id.'" class="r">Verwijder</a></td>';
$output[] = '<td width=61%>'.$title.'; '.$author.'</td>';
$output[] = '<td width=8%>€ '.$price.'</td>';
$output[] = '<td width=7%><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td width=11% align="right">€ '.number_format(($price * $qty), 2).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table><hr>';
$output[] = '<table cellspacing=6 cellpadding=4 border=0>';
$output[] = '<tr><td align="right" width=88%>Subtotaal:</td><td align="right" width=6%>€</td><td align="right" width=6%>'.number_format(($total), 2).'</td></tr>';
$output[] = '<tr><td align="right" width=88%>Verzendkosten:</td><td align="right" width=6%>€</td><td align="right" width=6%><u>6.20</u></td></tr>';
$output[] = '<tr><td align="right" width=88%><strong>Prijs inclusief verzendkosten</strong>:</td><td align="right" width=6%><strong>€</strong></td><td align="right" width=6%><strong>'.number_format(($total + 6.20), 2).'</strong></td></tr>';
$output[] = '</table>';
} else {
$output[] = '<br><p>Uw winkelwagen is leeg.</p><br>';
}
return join('',$output);
}
?>
Let wel: de table wordt definitief afgesloten in cart.php aangezien die knoppen wel in de css komen, maar niet in de (show)Cart.
De vraag is dus eigenlijk: hoe krijg ik de inhoud van showCart (dus hetzelfde resultaat wat je krijgt als je echo showCart uitvoert) meegezonden met de e-mail zonder dat de tussenliggende code ook wordt meegezonden?
Gewijzigd op 01/01/1970 01:00:00 door Jonathan
wat staat er precies in de funcie showCart(); voor code?
Jep, klopt. Alle code die je normaal op de pagina zou zien door het aanroepen van showCart() wordt in het mailtje geplakt. Als je de tussenliggende code niet gemaild wilt krijgen, zou je misschien een nieuwe functie kunnen maken die je shopping cart zonder tussenliggende code weergeeft.
Blanche schreef op 13.10.2006 23:04:
Jep, klopt. Alle code die je normaal op de pagina zou zien door het aanroepen van showCart() wordt in het mailtje geplakt. Als je de tussenliggende code niet gemaild wilt krijgen, zou je misschien een nieuwe functie kunnen maken die je shopping cart zonder tussenliggende code weergeeft.
Dat is toch wel balen. Maar... op zich zou ik zelf eea kunnen ontcijferen, alleen het volgende probleem is dat bij iedere bestelling de output na zoveel tekens wordt afgekapt. Is het aan te passen dat dit ongelimiteerd is?
Kan dit door $message van tevoren in te stellen als varchar met een oneindig aantal tekens? Nee, volgens mij heeft dit alleen te maken met MySQL... heeft iemand enig idee hoe ik het afkappen kan voorkomen?
Gewijzigd op 01/01/1970 01:00:00 door Jonathan