Hallo,

Ik ben bezig een nieuwsbrief te maken voor een site van me. De layout is klaar, alleen ik heb dus een dynamische inhoud die gegenereerd wordt uit de database. Deze inhoud include ik omdat het verschillende redelijk grote bestanden zijn, en anders is het geheel een hele lange tekst. Nu loop ik dus tegen het probleem dat als ik die nieuwsbrief in de db zet en hem daarna wil bekijken hij er netjes uitziet, maar ik mis de inhoud. Hij laat alleen de <? include bestand.php ?> zien en niet wat dit bestand zou moeten genereren.

Ik heb ook al geprobeert om die losse delen appart in de db te krijgen maar dan loop ik tegen het probleem dat hij teksten met " s'avonds " niet pakt. Dus krijg ik daar een error op. ik probeer die tekst als \"$tekst\" in de db te krijgen maar krijg dan alleen $tekst als resultaat. Ik weet dat dit met de quotes te maken heeft, maar weet niet hoe ik die quotes goed kan krijgen om wel de tekst goed in de db te krijgen.

Ik hoop dat ik het een beetje duidelijk heb kunnen maken wat de problemen zijn.

Alvast bedankt voor jullie tijd.
<?
$mailing = '<html>';
$mailing .= '<body>';
$mailing .= 'blablalbal , nu komt die var!';
$mailing .= $var;
$mailing .= 'zag je em! </body></html>';
?>
Bij input die je naar een database schrijft, gebruik je altijd mysql_real_escape_string() om dat soort errors te voorkomen.

Wat betreft het letterlijk weergeven en niet parsen van de php code, je gebruikt hier een short-open-tag, maar heb je die functie wel aan staan in je php.ini?

Gebruik anders in plaats van <? gewoon <?php en kijk of het dan wel werkt.
De problemen met de quotes worden veroorzaakt doordat je helemaal niets aan beveiliging doet. User-input (vanaf de browser) MOET je ALTIJD beveiligen en in het geval van MySQL, gebruik je daarvoor de functie mysql_real_escape_string(). Waarom je de quotes binnen jouw SQL gaat escapen is mij volkomen onduidelijk, dat kan alleen maar fouten opleveren, ik heb het nog nooit nodig gehad.
<?
$tekst = mysql_real_escape_string($_POST['tekst']); // Beveiliging!!!
$query = "
INSERT INTO
tabelnaam(
kolomnaam
)
VALUES(
'".$tekst."'
)
";
?>
Verder krijg ik het vermoeden dat in jouw script de logica niet goed inelkaar steekt. Begin altijd eerst met de logica en de database-onderdelen en dan op het aller, allerlaastste moment ga je dan output genereren. Tot die tijd maak je alleen maar variabelen aan waarin een stukje data staat. In de output ga je die variabelen dan echoen.
Blanche schreef op 15.11.2006 16:15
Bij input die je naar een database schrijft, gebruik je altijd mysql_real_escape_string() om dat soort errors te voorkomen.

Wat betreft het letterlijk weergeven en niet parsen van de php code, je gebruikt hier een short-open-tag, maar heb je die functie wel aan staan in je php.ini?

Gebruik anders in plaats van <? gewoon <?php en kijk of het dan wel werkt.


Ik die short-open-tag aanstaan. Ik gebruik nooit <?php altijd <? . Maar heb het toch ff geprobeert, maar het probleem blijft hetzelfde.. :(
Hier heb ik een klein stukje code staan om een beter beeld te geven over die error van de tekst.

<?
$layout = '
<a href="http://www.website.nl/bestand.php?id='.$id.'">'.$naam.'</a>;
<br><br>';
$layout .= ' \".$note.\"
</td>
</tr>';
?>

en bij $note gaat het dus fout. :(
<?php // NOOIT SHORTTAGS GEBRUIKEN!!! dit kun je lang niet altijd op een server aanpassen
$layout .= ' \"'.$note.'\"
</td>
</tr>'; // quotes bij $note vergeten
?>
Het gebruik van shorttags is verkeerde zuinigheid. Het kost je geen enkele moeite om even 'php' in te tikken, maar je bent van de werking van je script wel ineens afhankelijk van de instellingen van je hostingprovider. En wanneer je deze instelling niet kunt aanpassen, dan ben je flink de klos. Nooit meer gebruiken dus!
Thx jordy en frank. Ik kwam er ff niet meer uit..

Maar weet iemand nog een oplossing voor die include ??

<? include bestand.php ?>

<?php

include "bestand.php";

?>
Die include staat als volgt. en hij moet hem dus als uitgevoerde code laten zien als ik hem uit de db haal, ipv alleen die mooie regel <? include 'bestand.php' ?>

<?
$layout = '
<a href="http://www.website.nl/bestand.php?id='.$id.'">'.$naam.'</a>;
<br><br>';
$layout .= ' <? include 'bestand.php' ?>
</td>
</tr>';
?>

Reageren