Я использовал FPDF для создания PDF в PHP.
Я использовал переменную session для передачи переменной между одной формой в другую. Когда я предоставляю значение в
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(); ?>
Ваша форма onsubmit
кажется неправильной. onsubmit
должен быть javascript function
не php file
. если вам нужно отправить в php-файл, вы должны использовать атрибут действия form
. в настоящее время вы report.php
его как report.php
. вам может потребоваться изменить его на yearpdf.php
или перенаправить в report.php
ИЗМЕНИТЬ 1:
проблема в том, что вы вызываете window.open
который открывает URL-адрес, но не передает ваше входное значение. поэтому в первый раз ничего не произойдет. но, однако, в следующем окне. или в следующем обновлении есть переменная сеанса из report.php и, таким образом, извлекает данные. вы можете следить за некоторыми вариантами
header('Location: http://www.yoursite.com/yearpdf.php ');
, и удалить функцию onclick window.open("yearpdf.php" + "?course_year=" + document.getElementsByName("course_year")[0].value));
и измените свою $r1=$_SESSION['year1'];
до $r1=$_GET['course_year'];
в yearpdf.php Вариант 1 является рекомендуемым и простым способом. Вариант 2 является накладными расходами и не будет работать, если вы выведете любой html перед перенаправлением. и Вариант 3 создает ненужное окно.