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!
Het slaat eigenlijk een beetje op mijn vorige topic, maar ik heb nu het aantal karakters eens lopen tellen, en ik blijf steeds hangen op 1000!

Anyway, de inhoud van mijn shopping cart zit in deze functie: showCart();

Vervolgens doe ik dit:

$message .= showCart();

en daarna dit:

<? mail($your_email, $subject, $message, "From: $name <$email>"); ?>

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.
Ik denk dat hij idd een variabele bedoeld.

Dit klopt iig niet, want als ik onderstaand script uitvoer zie ik gewoon alle nummers t/m 2499 staan.

<?php
$var = NULL;

for($i=0;$i < 2500; $i++)
{
$var .= $i;
}

echo $var;
?>
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.
Dit is de showCart functie:

<?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%>&#8364; '.$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">&#8364; '.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%>&#8364;</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%>&#8364;</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>&#8364;</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);
}
?>
Waarom maak je voor output een array, je kunt die strings ook gewoon achter elkaar plakken, dus


<?php
$output = 'blaat';
$output .= 'blaat';
$output .= 'blaat';
?>


Anyway, heb je gekeken wat de lengte van de output van de functie is, dus


<?php

echo strlen($message);

?>
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.
Ok, dus je hebt een strlen gedaan en daar kwam 2403 uit ?
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.

Reageren