我使用FPDF在PHP中创建pdf。
我使用会话变量将变量在一个表单之间传递给另一个表单。当我在
中提供一个值时 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
其中yearpdf.php是我为创建pdf文件而编写的文件。生成pdf后,将立即显示带表的空白值。我必须刷新才能获得PDF中显示的值。我的yearpdf文件是:
<?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();
?>
答案 0 :(得分:3)
您的表单onsubmit
似乎有误。 onsubmit
应该是javascript function
而不是php file
。如果您需要提交到php文件,则应使用action
form
属性。目前您已将其作为report.php
提供。您可能需要将其更改为yearpdf.php
或重定向到report.php
编辑1:
问题是你正在调用window.open
来打开一个网址,但是没有提交你的输入值。所以第一次什么都不会发生。但是在下一个window.open
或下一次刷新时,会有来自report.php的会话变量,从而检索数据。你可以按照一些选择
header('Location: http://www.yoursite.com/yearpdf.php');
。并删除onclick功能window.open("yearpdf.php" + "?course_year=" + document.getElementsByName("course_year")[0].value));
的内容,并在yearpdf.php中将$r1=$_SESSION['year1'];
更改为$r1=$_GET['course_year'];
选项1是推荐且简单的方法。选项2是开销,如果在重定向之前输出任何html,则无法工作。和选项3产生一个不必要的窗口。