Hallo,

Ik heb een fwrite function en dit lukt perfect alleen ik krijgt de output niet binnen html tags maar steeds erbuiten.


<?php
if ($total> "0") {
echo "<p>Total price is \$$total</p>\n"; }

if ($total> "0") {
$myFile = "pdf.php";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "Total price is\$$total\n";
fwrite($fh, $stringData);
fclose($fh); }
?>

Op regel 8?
$stringData = "<p>Total price is\$$total</p>\n";
Deze string moet geschreven worden in het pdf.php file.
De pdf.php file is een file bestaande uit html met een table.
Het enige probleem is dat het de string onderaan buiten de html tags schrijft terwijl ik het graag zou hebben binnen de html tags en liefst nog binnen de table van de file
Euh, heb je geen rechtstreekse toegang tot dit PHP bestand?

Daarnaast lijkt mij het dynamisch aanpassen van code op deze wijze een onveilige en foutgevoelige methode.

Ik weet niet precies wat je probeert te doen of te bereiken, maar ik heb een sterk vermoeden dat dit niet de juiste manier is.
Welke HTML tags?
Ik denk dat we maar een deel van de code zien.
Los van het probleem waarvoor de topicstarter een oplossing wil, kijk eens naar wat de topicstarter doet.

Dynamisch code in een PHP-bestand wegschrijven? Wtf?
Je zou inderdaad verwachten dat die $total wordt opgeslagen in de sessie of een database. Daarna kan pdf.php daarmee vervolgens zelf in een if ($total > 0) de weergave regelen.
Misschien gegevens naar een database wegschrijven en in pdf.php gegevens ophalen en een html tabel genereren?
Ik zal misschien een beetje meer uitleg geven.
Het is de bedoeling dat de "echo &total" op de pdf staat.

Deze pdf wordt gemaakt door de file pdf.html.

Ik heb het al verkregen dat de echo &total het resultaat al weergeeft onder de html tags van de pdf.html file en weergegeven in mijn browser, maar om het te laten genereren op een pdf die doorgestuurd wordt moet het binnen de html tag staan.

Ah, dus pdf.html is het sjabloon wat je gebruikt om een PDF-bestand te genereren.

Dat was nogal onduidelijk omdat je het in je code hebt over pdf[color=#ff0000].php[/color].

Ik denk dat het zin heeft om je gedachten (en je code) even te ordenen.

Wat je wilt bereiken is volgens mij vrij duidelijk: je hebt een lap HTML waarin variabele delen zitten die je wilt vullen via PHP. Vervolgens moet deze lap HTML in een PDF-bestand verwerkt worden. Tot zover correct?

Je hebt niet per se een apart bestand nodig als sjabloon (maar dit is uiteraard wel handig voor het overzicht).

Ik denk dat er verschillende methoden zijn om je probleem op te lossen, je zou bijvoorbeeld kunnen denken aan output buffering. Een output buffer is als het ware een emmer waarin je output opvangt. Als je klaar bent met het vullen van de emmer besluit je wat je hiermee doet: alsnog afdrukken, of de inhoud opslaan of de inhoud toekennen aan een variabele.

Voorbeeld:

<?php
$test = 'lala';

// start output buffering
// tekst die normaal op het scherm zou verschijnen wordt dus nu opgevangen in de buffer
ob_start();
    ?><p>Dit is een test: <?php echo $test ?>.</p><?php
// retourneer de inhoud van de buffer en schakel output buffering uit
$html = ob_get_clean();
?>

De inhoud van $html is nu dus:
<p>Dit is een test: lala.</p>


Een andere manier is een include. Hiervoor kun je geen .html-bestand gebruiken omdat PHP hier niet in uitgevoerd wordt. Als je in je HTML-bestand een PHP-blok zet dan heeft dit voor HTML geen betekenis en wordt deze dus ook niet verwerkt, je zult dit via een PHP-bestand moeten regelen.

Stel je hebt het bestand html.php:
<p>Dit is een test: <?php echo $test ?>.</p>

Dit is in wezen je sjabloon.

Vervolgens kun je dezelfde truuk weer uithalen met output buffering (in een ander bestand, bijvoorbeeld pdf.php):
<?php
// initialiseer de variabelen die in je sjabloon worden gebruikt
$test = 'hallo';
// start output buffering
ob_start();
    // include het bestand
    include './html.php';
$html = ob_get_clean();
?>

$html bevat nu de volgende HTML:
<p>Dit is een test: hallo.</p>
Beste Thomas ,

Hartelijk bedankt voor je reactie maar helaas lukt het mij niet.
Ik heb de volledige code naar jou gest. via pm en hopelijk vind je de tijd om er even naar te kijken .
Alvast Bedankt.

Reageren