user225269
user225269

Reputation: 10913

Problem with ob_start function in php

I have this code, which uses ob_start php function. Which basically puts the echoed data into an html file. It works before. I do not know what version of php I was using then. But my current version is 5.3.0. I cannot explain why it wouldn't work. Because the script below is working and it just puts the output of that script into the html file:

<?php
ob_start();
?>
<h2>Customer Payment Summary</h2>
<a href="pdftransactions.php?acts=customerpay&ofile=<?php echo $customer.' customerpay '.$date; ?>"><img id="tablez" src="../img/system/icons/Oficina-PDF-icon.png"></img></a>

<?php
if($amtopay>=$curcred){
    $custchange=$amtopay - $curcred;
    $newcred = 0;

    echo "Change: ". $custchange."<br/>";
    query_database("DELETE  FROM sales_transaction WHERE Cust_Name='$customer'", "onstor", $link);
}else{
    query_database("UPDATE  customer_credit SET CREDIT='$newcred' WHERE Cust_Name='$customer'", "onstor", $link);
    echo "Remaining Balance: ". $newcred."<br/>";;
}

echo "Customer: ".$customer."<br/>";
echo "Amount paid: ". $amtopay. "<br/>";
echo "Date: ". $date." ". date('A');
close_connection($link);
?>

<?php
file_put_contents('../tmp/customerpay.html', ob_get_contents());
?>

Here's the output of the code above: enter image description here

But when I checked the html file which I specified in the file_put_contents. It gives me this. And I don't really understand why: enter image description here

My problem is how to get the correct output from the html file that is being produced.

Upvotes: 0

Views: 1544

Answers (1)

JamesHalsall
JamesHalsall

Reputation: 13475

You aren't closing your output buffer before you do a file_put_contents...

At the end of your script change it to the following:

//...
close_connection($link);
$contents = ob_get_contents();
ob_end_clean();

file_put_contents('../tmp/customerpay.html', $contents);
?>

Upvotes: 3

Related Questions