$ niet langer dan 1000 tekens
Klopt het dat een $ niet langer mag zijn dan 1000 tekens, dat is namelijk precies het punt waarop de output van een $ stopt. Is er een manier om dit te vergroten?
een $ ? je bedoelt een variabele? geef eens een voorbeeld!
Anyway, de inhoud van mijn shopping cart zit in deze functie: showCart();
Vervolgens doe ik dit:
$message .= showCart();
en daarna dit:
Eigenlijk werkt alles helemaal top, de inhoud van de shopping cart wordt naar mijn email adres verzonden, maar de inhoud daarvan wordt afgebroken na precies 1000 tekens.
Dit klopt iig niet, want als ik onderstaand script uitvoer zie ik gewoon alle nummers t/m 2499 staan.
PHP Newbie schreef op 14.10.2006 18:57:
Dit klopt iig niet, want als ik onderstaand script uitvoer zie ik gewoon alle nummers t/m 2499 staan.
Toch is dat precies wat er plaatsvind. hotmail heeft mijn mails nog nooit in tweeen geknipt, dus moet het waarschijnlijk liggen aan:
$message .= showCart();
of op het moment dat ik $message mail.
Laat die showCart functie eens zien.
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);
}
?>
Anyway, heb je gekeken wat de lengte van de output van de functie is, dus
Gewijzigd op 01/01/1970 01:00:00 door Baarr
Ok, ik heb nu 5 items in het mandje gedaan en per mail verzonden. Het totale aantal tekens zijn 2403. In de e-mail wordt het afgekapt tot 1000 tekens.
De mail functie zelf kan het probleem ook niet zijn want die kan gewoon meer dan 1000 characters aan (net ff getest(al wist ik dat al)).
Maar even nog iets anders, ik zie dat er HTML word opgemaakt, met onder andere een formulier, waarom wil je dat formulier mailen ?
Verder moet je , als je HTML gaat mailen headers meegeven die aanduiden dat je mail gaat versturen als HTML (MIME en Content type etc). Wellicht dat daar het probleem zit.