views:

737

answers:

3

Using PHP, I can convert MySQL data or static table data to csv, Excel, JSON, MySQL etc but is there a useful conversion script or tool that can convert table data into other formatted/styled formats such as PDF and/or JPG/PNG using the PHP GD Library or other?

+1  A: 

I've used this before to turn a HTML table into a PDF. I generated the table from a MySQL query.

alex
Looks like this has moved to http://code.google.com/p/dompdf/ and I'd be interested to see some examples similar to this but for images. There's a lot of "screenshot" software apps I guess works in the interim...
Peter
Give yourself an hand - google for wkhtmltopdf
DaNieL
A: 

To export to Excel I use the following code:

<?php

/*  Define our Database and Table Info */


$username="";
$password="";
$database="";
$table="";


mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$select = "SELECT * FROM $table";                
$export = mysql_query($select);
$fields = mysql_num_fields($export);

for ($i = 0; $i < $fields; $i++) {
    $header .= mysql_field_name($export, $i) . "\t";
}

while($row = mysql_fetch_row($export)) {
    $line = '';
    foreach($row as $value) {                                            
        if ((!isset($value)) OR ($value == "")) {
            $value = "\t";
        } else {
            $value = str_replace('"', '""', $value);
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);

if ($data == "") {
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=mailinglist.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data"; 
?>

Now be careful with how you include this. It's using the Headers to send the file information to force a download, by doing this you can't have any white space anywhere before these headers are sent otherwise it may throw an error. I usually have this link open as a new window to prevent anything from happening... Again this is just a pretty basic script that can be expanded greatly. Hope this Helps!

stogdilla
It could be useful to combine with a csv, xls converter of which I do have implementations, I'd like to add pdf and jpg to the mix also with a simple drop down or get variable posted to determine the output file format. Thanks for the info anyway.
Peter
As far as PDF I normally end up using a library like: http://www.fpdf.org/ (FPDF) it's pretty easy to impliment and pretty simple to use. I know there is scripting to make JPEGs on the fly as well as flash but I haven't really experimented with them too much.
stogdilla
A: 

<?php 
 
/  Define our Database and Table Info 
 
 
$username=""; 
$password=""; 
$database=""; 
$table=""; 
 
 
mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die( "Unable to select database"); 
$select = "SELECT * FROM $table";                 
$export = mysql_query($select); 
$fields = mysql_num_fields($export); 
 
for ($i = 0; $i < $fields; $i++) { 
    $header .= mysql_field_name($export, $i) . ","; 

 
while($row = mysql_fetch_row($export)) { 
    $line = ''; 
    foreach($row as $value) {                                             
        if ((!isset($value)) OR ($value == "")) { 
            $value = ","; 
        } else { 
            $value = str_replace('"', '""', $value); 
            $value = '"' . $value . '"' . ","; 
        } 
        $line .= $value; 
    } 
    $data .= trim($line)."n"; 

$data = str_replace("r","",$data); 
 
if ($data == "") { 
    $data = "n(0) Records Found!n";                         

 
header("Content-type: application/x-msdownload"); 
header("Content-Disposition: attachment; filename=mailinglist.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$headern$data";  
?>