include problemen bij nieuwsbrief
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 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.
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
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
<?
$tekst = mysql_real_escape_string($_POST['tekst']); // Beveiliging!!!
$query = "
INSERT INTO
tabelnaam(
kolomnaam
)
VALUES(
'".$tekst."'
)
";
?>
$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.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
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
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
Code (php)
1
2
3
2
3
<? gewoon [code]<?php en kijk of het dan wel werkt.[/quote]
Ik die short-open-tag aanstaan. Ik gebruik nooit [code]<?php altijd [code]<? . Maar heb het toch ff geprobeert, maar het probleem blijft hetzelfde.. :(
Ik die short-open-tag aanstaan. Ik gebruik nooit [code]<?php altijd [code]<? . Maar heb het toch ff geprobeert, maar het probleem blijft hetzelfde.. :(
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
$layout = '
<a href="http://www.website.nl/bestand.php?id='.$id.'">'.$naam.'</a>
<br><br>';
$layout .= ' \".$note.\"
</td>
</tr>';
?>
$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. :(
Gewijzigd op 01/01/1970 01:00:00 door Rico
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$layout = '
<a href="http://www.website.nl/bestand.php?id='.$id.'">'.$naam.'</a>
<br><br>';
$layout .= $note.'
</td>
</tr>';
?>
$layout = '
<a href="http://www.website.nl/bestand.php?id='.$id.'">'.$naam.'</a>
<br><br>';
$layout .= $note.'
</td>
</tr>';
?>
Edit: lol had nog shorttag omdat ik het overkopieerde van hier
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
Code (php)
1
2
3
4
5
2
3
4
5
<?php // NOOIT SHORTTAGS GEBRUIKEN!!! dit kun je lang niet altijd op een server aanpassen
$layout .= ' \"'.$note.'\"
</td>
</tr>'; // quotes bij $note vergeten
?>
$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!
Use of undefined constant bestand - assumed 'bestand'
Use of undefined constant php - assumed 'php'
in de db tussen de tekst, ipv de code die dat script zou moeten genereren.. :S
Of is dit probleem niet te omzeilen??
Ik krijg dus geen errors hierop, alleen hij zet de regel Of is dit probleem niet te omzeilen??
Waarom include je een bestand op het moment dat je output genereert? Ik heb de includes altijd bovenaan staan en heb dan ook nog nooit een probleem met een include gehad. Ik snap dan ook niet wat je bedoelt met 'hij zet de regel ... in de db tussen de tekst'. Hoe kan een include in hemelsnaam in de database terecht komen?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$var = 'Een deel tekst';
$var .= file_get_contents('bestand.php');
$var .= 'Nog een deel tekst';
?>
$var = 'Een deel tekst';
$var .= file_get_contents('bestand.php');
$var .= 'Nog een deel tekst';
?>
Let erop dat je niet de letterlijke php code uit bestand.php zult krijgen, je krijgt de html die het resultaat is van de php code in je variabele.
Frank schreef op 15.11.2006 16:47:
Waarom include je een bestand op het moment dat je output genereert? Ik heb de includes altijd bovenaan staan en heb dan ook nog nooit een probleem met een include gehad. Ik snap dan ook niet wat je bedoelt met 'hij zet de regel ... in de db tussen de tekst'. Hoe kan een include in hemelsnaam in de database terecht komen?
Hey Frank,
Duh als het om een connect gaat doe ik dat ook bovenaan, maar dit is dus een bestand dat een output genereerd die op juist die plek moet staan, anders had ik hem daar natuurlijk niet neergezet.. lol
Quote:
En dat is precies wat je dus niet moet doen! In dit bestand genereer je een variabele waarin de output staat en je kunt includen aan het begin van je script. Wanneer jij op 1 plek in je script alle benodigde includes neerzet, wordt je script er vele malen overzichtelijker op en heb je nooit problemen met een include. Het heeft toch geen enkele zin om output naar de browser te gaan sturen en dat je er dan achterkomt dat ergens een include-file niet beschikbaar is? Dit controleer je aan het begin van je script en niet wanneer je al zo'n beetje klaar bent met de hele boel.Duh als het om een connect gaat doe ik dat ook bovenaan, maar dit is dus een bestand dat een output genereerd die op juist die plek moet staan, anders had ik hem daar natuurlijk niet neergezet.. lol
Persoonlijk vind ik een require_once() fraaier, maar dat is een kwestie van smaak.
Ps. Ik heb het met geen woord gehad over een connect. Include heeft daar op zich ook niets mee te maken.
Toch bedankt voor je tips frank. :)
Frank schreef op 15.11.2006 16:26:
Als ik het zo doe dan krijg ik nog steeds problemen dat als een tekst dit -> " s'avonds " <- bevat er een error komt dat hij die niet in de db kan zetten :(
Maar zorg er nu eerst maar eens voor dat de string er goed uitziet, echoen en kijken of deze er goed uitziet, en ga hem dan pas in de database zetten. Nadat je mysql_real_escape_string() hebt toegepast!
Na een hoop rond gooien van de bestanden heb ik toch maar alles in 1 bestand gedaan, is niet zo makkelijk maar het werkt wel stabiel. Die mysql_real_escape_string() werkt perfect.
Heel erg bedankt allemaal voor jullie hulp en tijd.