closerwalk Posted May 11, 2007 Share Posted May 11, 2007 Here it goes... I have built this cool report creator that pulls information from our project database and outputs various information to create reports and even allows your to save queries. Anyway moving on . The next portion handles the query and outputs the report. What I want to do because the reports could be quite wide and web browsers don't afford for size-to-fit and printing 50 column reports would be difficult. I would like to output the report in pdf I know that it has the ability to print-to-fit or fit-to-print. So how do I accomplish this with the current report script? <html> <head> <title>Report Manager</title> Created By K.Goddard <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php ///pm.php /// Make the connection then chech for the state of the connection if the state /// of the connection is dead it will report the error. $link = @mysql_connect('***', '***', '***'); if (!$link) { die('Could not connect to MySQL server: ' . mysql_error()); } $dbname = 'project'; $db_selected = mysql_select_db($dbname, $link); if (!$db_selected) { die("Could not set $dbname: " . mysql_error()); } //Connection String Above This Line......................................................................... //Saved Query Section echo '<form action="report.php" method="post" name="report" id="report">'; //Select Distinct Records Project Managers $res = mysql_query('select DISTINCT Issued_to from project ', $link); print '<table width="75%" border="2"><th ALIGN="left">Project Manager</th>'; echo '<th ALIGN="left">Clients</th>'; echo '<th ALIGN="left">Report Columns</th>'; echo '<tr>'; echo '<td>'; //Loop through the datebase and get the project managers and place them in a multi-select box which is passed into an array called projectmanager[] print '<select multiple name ="PROJECTMANAGER[]">'; while ($row = mysql_fetch_array($res)) { for($i=0;$i<mysql_num_fields($res);$i++) { } print '<OPTION VALUE='.$row[mysql_field_name($res, $i)].'>'.$row[mysql_field_name($res, $i)].''; } echo '</select>'; echo '</td>'; $res = mysql_query('select DISTINCT CUSTOMER_NAME from project ', $link); echo '<td>'; //Loop through the datebase and get the clients and place them in a multi-select box which is passed into an array called clients[] print '<select multiple name="CLIENTS[]">'; while ($row = mysql_fetch_array($res)) { for($i=0;$i<mysql_num_fields($res);$i++) { } print '<OPTION VALUE='.$row[mysql_field_name($res, $i)].'>'.$row[mysql_field_name($res, $i)].''; } echo '</select>'; echo '</td>'; echo '<td>'; $result = mysql_query('select * from project ', $link); //Loop through the datebase and get the report columns and place them in a multi-select box which is passed into an array called REPORT_COLUMNS[] print '<select multiple name ="REPORT_COLUMNS[]" >'; for ($i = 0; $i < mysql_num_fields($result); $i++) { print '<OPTION VALUE='.mysql_field_name($result, $i).'>'.mysql_field_name($result, $i).''; } echo '</select>'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<th align=left>Date Range</th>'; echo '<td>'; echo 'From: <input name="from" type="text" size="25"> </td><td>To: <input name="to" type="text" size="25">'; echo '</td>'; echo '<tr>'; echo '<th align=left>Project Number:</th><td><input name="projectno" type="text" size="25">'; echo '</td>'; echo '<td> </td>'; echo '</tr>'; echo '<th align=left>Saved Reports</th>'; echo '<th align=left>Save Your Report</th>'; echo '<th align=left>Current Project</th>'; //echo '<th> </th>'; echo '<tr>'; echo '<td>'; $queries = mysql_query('select query_name from saved_queries ', $link); print '<select multiple name ="savedquery" >'; while ($row = mysql_fetch_array($queries)) { for($i=0;$i<mysql_num_fields($queries);$i++) { } print '<OPTION VALUE='.$row[mysql_field_name($queries, $i)].'>'.$row[mysql_field_name($queries, $i)].''; } echo '</select>'; echo '<input name="delete" type="submit" value="Delete" />'; echo '<td>'; echo 'Report Name: <input name="queryname" type="text" size="25"> '; echo '</td>'; //echo '<td> </td>'; echo '<td>Yes:<input name="current" type="checkbox" value="Y" checked>'; echo 'No: <input name="current" type="checkbox" value="N" ></td>'; echo '</tr>'; echo '</table>'; echo '<input name="submit" type="submit" value="Run Report" />'; echo '</form>'; ?> </body> </html> Report.php <html> <script src="./sorttable.js"></script> <head> <title>Report</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <?php /* THIS LINE STARTS THE MEAT OF THE REPORT BUILDER */ // Make the connection then chech for the state of the connection if the state /// of the connection is dead it will report the error. $link = @mysql_connect('****', '****', '****'); if (!$link) { die('Could not connect to MySQL server: ' . mysql_error()); } $dbname = 'project'; $db_selected = mysql_select_db($dbname, $link); if (!$db_selected) { die("Could not set $dbname: " . mysql_error()); } //Connection String Above This Line......................................................................... //Delete Saved Reports Here if($_POST['delete']) { $delete = "'". $_POST['savedquery'] ."'"; $remove = 'DELETE from saved_queries WHERE query_name = '.$delete.''; mysql_query($remove); } else { if($_POST["current"]) { $current = $_POST["current"]; $current = ' AND ' . "`CURRENT_PROJECT` = ".'"'.$current.'"'; } //Handle Project Manager Queries foreach ($_POST["PROJECTMANAGER"] as $v) { $projectmanager = $projectmanager. ' OR ' . "`Issued_to` LIKE ".'"'.$v.'%'.'"'; } if($_POST["PROJECTMANAGER"]) { $projectmanager = substr($projectmanager,3 ); $projectmanager = "(".$projectmanager.")"; } else { $projectmanager = "("."`Issued_to` LIKE ".'"'."%".'"'.")"; } //CLIENT SECTION IF NONE ARE SELECTED DEFAULT IS ALL foreach ($_POST["CLIENTS"] as $v) { $clients = $clients. ' OR ' . "`CUSTOMER_NAME`"."LIKE ".'"'.$v.'%'.'"'; } if($clients){ $clients = substr($clients,3 ); $clients = "("."".$clients."".")"; } else { $clients = "("."`CUSTOMER_NAME`"." LIKE ".'"'."%".'"'.")"; } //REPORT COLUMNS SECTION foreach ($_POST["REPORT_COLUMNS"] as $v) { $columns= $columns. ' , ' ."`".$v."`"; } if($columns){ $columns = substr($columns,2 ); } else { $columns = "*"; } if($_POST["from"]) { $daterange = "AND ". "`DATE_RECEIVED`". " BETWEEN "."'" .date("Y/d/m",strtotime($_POST["from"])) ."'" ." AND " . "'" . date("Y/d/m",strtotime($_POST["to"])) ."'" ; } else { $daterange = ""; } //Grab the Project Number and Query it if($_POST['projectno']) { $projectno = $_POST['projectno']; $projectno = "OR"."("."'"."`PROJECT_NO` ". "'" ."LIKE "." ".'"' .$projectno.'"'.")"; } else { $projectno = ""; } //Building the sql statement from saved queries. if($_POST['savedquery']) { $savedfetch = "'".$_POST['savedquery']."'"; $savedquery = 'select query from saved_queries WHERE query_name = '.$savedfetch.''; $query = mysql_query($savedquery, $link); } while ($row = mysql_fetch_array($query)) { for($i=0;$i<mysql_num_fields($query);$i++) { } $sql = $row[mysql_field_name($query, $i)]; } $sql = "SELECT $columns FROM project WHERE $clients AND $projectmanager $daterange $projectno $current"; if($_POST['queryname']) { $sql1 = '"'.$sql. '"'; $queryname = $_POST['queryname']; $save = "INSERT INTO `project`.`saved_queries` (`Query_id`, `Query_Name`, `Query`) VALUES (NULL,'$queryname', $sql1)"; mysql_query($save); } else { } //echo $sql; /* THE OUTPUT OF THE REPORT BUILDER HAPPENS HERE */ $res = mysql_query($sql); echo '<table class="sortable" width="75%" border="1" bordercolor="blue" ><tr>'; for($i=0;$i<mysql_num_fields($res);$i++) { $order = mysql_field_name($res, $i); $tableheadings = '<th nowrap>'. mysql_field_name($res, $i) .'</th>'; echo $tableheadings; } echo '</tr>'; while ($row = mysql_fetch_array($res)) { echo '<tr nowrap>'; for($i=0;$i<mysql_num_fields($res);$i++) { echo '<td nowrap>'; if($row[mysql_field_name($res, $i)]==""){ echo " "; } if(mysql_field_name($res, $i)=='DATE_RECEIVED') { echo date("m-d-Y",strtotime($row[mysql_field_name($res, $i)])); } elseif(mysql_field_name($res, $i)=='FORECAST_END_DATE') { if(!$row[mysql_field_name($res, $i)]==""){ echo date("m-d-Y",strtotime($row[mysql_field_name($res, $i)])); } } else { $tabledata= $row[mysql_field_name($res, $i)]; echo $tabledata; } echo '</td>'; } } } echo '</tr>'; echo '</table>'; ?> <body> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/51001-php-pdf-help/ Share on other sites More sharing options...
MadTechie Posted May 11, 2007 Share Posted May 11, 2007 Step #1 read the pdf section in the manual Step #2 when you have a problem with the code post the code and the problem. OR see freelance section Quote Link to comment https://forums.phpfreaks.com/topic/51001-php-pdf-help/#findComment-250954 Share on other sites More sharing options...
Psycho Posted May 11, 2007 Share Posted May 11, 2007 This is not a simple task: You will need to read up on the PDF functions in PHP: http://us2.php.net/manual/en/ref.pdf.php Then you will need to go back and rewrite all of your functionality for displaying reports. With PDFs you cannot simply build a table like you do with HTML. For each piece of text you "print" to a PDF you need to specify the X & Y coordinates. However, I am sure there are some useful classes available to help you out or you can build functions to ease the process. But, it is not a matter of just saying createPDF()! Edit, I saw MadTechie posted before I did, but decided to post anyway. Funny that our Step 1 was exactly the same! Quote Link to comment https://forums.phpfreaks.com/topic/51001-php-pdf-help/#findComment-250956 Share on other sites More sharing options...
MadTechie Posted May 11, 2007 Share Posted May 11, 2007 lol true and i foresaw problems and you say its a pain LOL well you know what they sayabout great minds Quote Link to comment https://forums.phpfreaks.com/topic/51001-php-pdf-help/#findComment-250964 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.