i have used FPDF for creating pdf in PHP.
I used session variable to pass the variable between one form to another form. When i provide a value in the
Report.php
<?php
session_start();
$_SESSION['year1']=$_POST['course_year'];
$_SESSION['sem1']=$_POST['semester'];
$_SESSION['community1']=$_POST['community'];
$_SESSION['course1']=$_POST['course'];
$_SESSION['mess_type1']=$_POST['mess_type'];
$_SESSION['block_name1']=$_POST['block_name'];
?>
<form action='report.php' method='POST'name= 'form1'>
<p><tr><td><b> Course Year:</b></td><td><input type='text' name='course_year'></td></tr><br></p>
<p><tr><td> </td><td><input style='width:105;height:32' type='submit' value='Generate Report'onsubmit='yearpdf.php' onclick="year_open()" ></td></tr>
</form>
<h2 align='left'><b>Semester</h2></b>
<form action='report.php' method='POST'name= 'form2'>
<!--<form action='report.php' align='left' method='POST'>-->
<p><b><tr><td>Semester:</b></td><td><input type='text' name='semester'></td></tr><br></p>
<p><tr><td> </td><td><input style='width:105;height:32' type='submit' value='Generate Report' onsubmit='sempdf.php' onclick="sem_open()"></td></tr></table>
</form>
.... so on for community, course, messtype and blockname
where yearpdf.php is the file which i have written for the creation of pdf file. As soon as the pdf is generated Blank values with tables are displayed. I have to refresh to get the values displayed in the PDF. My yearpdf file is :
<?php
session_start();
require('fpdf/fpdf.php');
//Connect to your database
$r1=$_SESSION['year1'];
$con=mysql_connect('localhost','root','');
if(!$con)
{
die('Unable to connect'.mysql_error());
}
mysql_select_db('hostel',$con);
//Select the list you want to show in your PDF file
$result=mysql_query("select hosteladmissionno,student_name,sex,community,semester,course,course_year,mess_type,block_name from registration where course_year='".$r1."' ORDER BY hosteladmissionno");
$number_of_products = mysql_numrows($result);
//For each row, add the field to the corresponding column
while($row = mysql_fetch_array($result))
{
$hostad = $row['hosteladmissionno'];
$name = $row['student_name'];
$sex = $row['sex'];
$sem=$row['semester'];
$comm=$row['community'];
$course=$row['course'];
$courseyr=$row['course_year'];
$mess= $row['mess_type'];
$block=$row['block_name'];
$column_no = $column_no.$hostad."\n";
$column_name = $column_name.$name."\n";
$sex_details = $sex_details.$sex."\n";
$sem_details= $sem_details.$sem."\n";
$comm_details= $comm_details.$comm."\n";
$course_details= $course_details.$course."\n";
$courseyr_details= $courseyr_details.$courseyr."\n";
$mess_details= $mess_details.$mess."\n";
$block_details= $block_details.$block."\n";
//$column_price = $column_price.$price_to_show."\n";
}
mysql_close();
//Convert the Total Price to a number with (.) for thousands, and (,) for decimals.
//$total = number_format($total,',','.','.');
//Create a new PDF file
$pdf=new FPDF();
$pdf->AddPage();
//Fields Name position
$Y_Fields_Name_position = 40;
//Table position, under Fields Name
$Y_Table_Position = 46;
//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',10);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(5);
$pdf->Cell(30,6,'Admission No',1,0,'L',1);
$pdf->SetX(35);
$pdf->Cell(35,6,'Student Name',1,0,'L',1);
$pdf->SetX(70);
$pdf->Cell(20,6,'Sex',1,0,'L',1);
$pdf->SetX(88);
$pdf->Cell(20,6,'Category',1,0,'L',1);
$pdf->SetX(108);
$pdf->Cell(20,6,'Semester',1,0,'L',1);
$pdf->SetX(128);
$pdf->Cell(20,6,'Course',1,0,'L',1);
$pdf->SetX(145);
$pdf->Cell(15,6,'Year',1,0,'L',1);
$pdf->SetX(160);
$pdf->Cell(25,6,'Mess type',1,0,'L',1);
$pdf->SetX(185);
$pdf->Cell(25,6,'Block Name',1,0,'L',1);
$pdf->Ln();
//Now show the 3 columns
$pdf->SetFont('Arial','',10);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(5);
$pdf->MultiCell(30,6,$column_no,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(35);
$pdf->MultiCell(35,6,$column_name,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(70);
$pdf->MultiCell(18,6,$sex_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(88);
$pdf->MultiCell(20,6,$comm_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(108);
$pdf->MultiCell(20,6,$sem_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(128);
$pdf->MultiCell(17,6,$course_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(145);
$pdf->MultiCell(15,6,$courseyr_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(160);
$pdf->MultiCell(25,6,$mess_details,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(185);
$pdf->MultiCell(25,6,$block_details,1);
$i = 0;
$pdf->SetY($Y_Table_Position);
while ($i < $number_of_products)
{
$pdf->SetX(5);
$pdf->MultiCell(205,6,'',1);
$i = $i +1;
}
$pdf->Output();
?>
Your form
onsubmitseems to be wrong.onsubmitshould be ajavascript functionnot aphp file. if you need to submit to php file you should useactionattribute ofform. currently you have given it asreport.php. you may need to change it toyearpdf.phpor redirect in thereport.phpEDIT 1:
the problem is you are calling the
window.openwhich opens an url but doesn’t submit your input value. so first time nothing will happen. but however on the nextwindow.openor on the next refresh, there is the session variable from report.php and thus retrieves the data. you can follow some optionsheader('Location: http://www.yoursite.com/yearpdf.php');. and remove onclick functionwindow.open("yearpdf.php" + "?course_year=" + document.getElementsByName("course_year")[0].value));and change your$r1=$_SESSION['year1'];to$r1=$_GET['course_year'];in yearpdf.phpOption 1 is the recommended and simple way. Option 2 is an overhead and won’t work if you output any html before redirection. and Option 3 produces an unnecessary window.