fwrite function binnen html tags
Ik heb een fwrite function en dit lukt perfect alleen ik krijgt de output niet binnen html tags maar steeds erbuiten.
Code (php)
Ward:
Graag voortaan bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 14/10/2015 11:13:04 door Ward van der Put
$stringData = "<p>Total price is\$$total</p>\n";
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
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.
Ik denk dat we maar een deel van de code zien.
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?
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.
Dat was nogal onduidelijk omdat je het in je code hebt over pdf.php.
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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();
?>
$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:
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:
Dit is in wezen je sjabloon.
Vervolgens kun je dezelfde truuk weer uithalen met output buffering (in een ander bestand, bijvoorbeeld pdf.php):
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?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();
?>
// 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:
Gewijzigd op 16/10/2015 13:59:13 door Thomas van den Heuvel
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.
Als ik je even een tip mag geven, het is naar mijn mening zeer onzorgvuldig om met "or die" als foutafdeling te noemen (Je kan het niet eens een degelijke foutafhandeling noemen)