#php #mysql #fpdf
#php #mysql #fpdf
Вопрос:
я использовал FPDF для создания PDF на PHP.
Я использовал переменную сеанса для передачи переменной из одной формы в другую форму. Когда я предоставляю значение в
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'];
?&&t;
<form action='report.php' method='POST'name= 'form1'&&t;
<p&&t;<tr&&t;<td&&t;<b&&t; Course Year:</b&&t;</td&&t;<td&&t;<input type='text' name='course_year'&&t;</td&&t;</tr&&t;<br&&t;</p&&t;
<p&&t;<tr&&t;<td&&t; amp;nbsp;</td&&t;<td&&t;<input style='width:105;hei&ht:32' type='submit' value='Generate Report'onsubmit='yearpdf.php' onclick="year_open()" &&t;</td&&t;</tr&&t;
</form&&t;
<h2 ali&n='left'&&t;<b&&t;Semester</h2&&t;</b&&t;
<form action='report.php' method='POST'name= 'form2'&&t;
<!--<form action='report.php' ali&n='left' method='POST'&&t;--&&t;
<p&&t;<b&&t;<tr&&t;<td&&t;Semester:</b&&t;</td&&t;<td&&t;<input type='text' name='semester'&&t;</td&&t;</tr&&t;<br&&t;</p&&t;
<p&&t;<tr&&t;<td&&t; amp;nbsp;</td&&t;<td&&t;<input style='width:105;hei&ht:32' type='submit' value='Generate Report' onsubmit='sempdf.php' onclick="sem_open()"&&t;</td&&t;</tr&&t;</table&&t;
</form&&t;
.... 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 re&istration where course_year='".$r1."' ORDER BY hosteladmissionno");
$number_of_products = mysql_numrows($result);
//For each row, add the field to the correspondin& 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-&&t;AddPa&e();
//Fields Name position
$Y_Fields_Name_position = 40;
//Table position, under Fields Name
$Y_Table_Position = 46;
//First create each Field Name
//Gray color fillin& each Field Name box
$pdf-&&t;SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf-&&t;SetFont('Arial','B',10);
$pdf-&&t;SetY($Y_Fields_Name_position);
$pdf-&&t;SetX(5);
$pdf-&&t;Cell(30,6,'Admission No',1,0,'L',1);
$pdf-&&t;SetX(35);
$pdf-&&t;Cell(35,6,'Student Name',1,0,'L',1);
$pdf-&&t;SetX(70);
$pdf-&&t;Cell(20,6,'Sex',1,0,'L',1);
$pdf-&&t;SetX(88);
$pdf-&&t;Cell(20,6,'Cate&ory',1,0,'L',1);
$pdf-&&t;SetX(108);
$pdf-&&t;Cell(20,6,'Semester',1,0,'L',1);
$pdf-&&t;SetX(128);
$pdf-&&t;Cell(20,6,'Course',1,0,'L',1);
$pdf-&&t;SetX(145);
$pdf-&&t;Cell(15,6,'Year',1,0,'L',1);
$pdf-&&t;SetX(160);
$pdf-&&t;Cell(25,6,'Mess type',1,0,'L',1);
$pdf-&&t;SetX(185);
$pdf-&&t;Cell(25,6,'Block Name',1,0,'L',1);
$pdf-&&t;Ln();
//Now show the 3 columns
$pdf-&&t;SetFont('Arial','',10);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(5);
$pdf-&&t;MultiCell(30,6,$column_no,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(35);
$pdf-&&t;MultiCell(35,6,$column_name,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(70);
$pdf-&&t;MultiCell(18,6,$sex_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(88);
$pdf-&&t;MultiCell(20,6,$comm_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(108);
$pdf-&&t;MultiCell(20,6,$sem_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(128);
$pdf-&&t;MultiCell(17,6,$course_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(145);
$pdf-&&t;MultiCell(15,6,$courseyr_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(160);
$pdf-&&t;MultiCell(25,6,$mess_details,1);
$pdf-&&t;SetY($Y_Table_Position);
$pdf-&&t;SetX(185);
$pdf-&&t;MultiCell(25,6,$block_details,1);
$i = 0;
$pdf-&&t;SetY($Y_Table_Position);
while ($i < $number_of_products)
{
$pdf-&&t;SetX(5);
$pdf-&&t;MultiCell(205,6,'',1);
$i = $i 1;
}
$pdf-&&t;Output();
?&&t;
Комментарии:
1. у вас возникли проблемы с генерацией PDF или получением значений перед записью в pdf.
2. также, пожалуйста, сократите свой вопрос, как и другой, и предупредите меня.
Ответ №1:
Ваша форма onsubmit
кажется неправильной. onsubmit
должно быть javascript function
не php file
. если вам нужно отправить файл на php, вы должны использовать action
атрибут form
. в настоящее время вы указали это как report.php
. возможно, вам потребуется изменить его на yearpdf.php
или перенаправить в report.php
РЕДАКТИРОВАТЬ 1:
проблема в том, что вы вызываете window.open
который открывает URL, но не отправляет ваше входное значение. итак, в первый раз ничего не произойдет. но, однако, при следующем window.open
или при следующем обновлении появляется переменная сеанса из report.php и, таким образом, извлекает данные. вы можете следовать некоторым вариантам
- поместите код report.php что для обработки отправки в yearpdf.php и измените форму «действие» на yearpdf.php . и удалите функцию onclick
- Или перенаправить с report.php для yearpdf.php в конце report.php. Для перенаправления вы можете использовать
header('Location: http://www.yoursite.com/yearpdf.php');
. и удалите функцию onclick - ИЛИ измените свой код JavaScript, чтобы отправить что-то вроде этого
window.open("yearpdf.php" "?course_year=" document.&etElementsByName("course_year")[0].value));
и измените свой$r1=$_SESSION['year1'];
на$r1=$_GET['course_year'];
в yearpdf.php
Вариант 1 является рекомендуемым и простым способом. Вариант 2 является накладным и не будет работать, если вы выводите любой HTML-код перед перенаправлением. и вариант 3 создает ненужное окно.
Комментарии:
1. <?php session_start(); $_SESSION[‘year1’]=$_POST[‘course_year’]; ?&&t; (Я использую эту переменную сеанса в первой форме, то есть форме, которая содержит HTML-код, который вы ввели сейчас)
2. хм .. ну, это странно. можете ли вы опубликовать report.php также?
3. это похоже на проблему
messin& with session
, потому что это работает на refersh4. Да!! точно.. Я сделал что-то не так с сессиями. Не знаю, кто это исправит.
5. что происходит? какой метод вы выбираете? я думаю, что первый вариант был бы лучшим для вас. поскольку не было никакой обработки в report.php кроме объявления переменных сеанса. вам нужно было только изменить форму
action
наyearpdf.php
и$r1
как$r1=$_POST['course_year'];
. верно?