Проблема с генерацией PDF на PHP

#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 и, таким образом, извлекает данные. вы можете следовать некоторым вариантам

  1. поместите код report.php что для обработки отправки в yearpdf.php и измените форму «действие» на yearpdf.php . и удалите функцию onclick
  2. Или перенаправить с report.php для yearpdf.php в конце report.php. Для перенаправления вы можете использовать header('Location: http://www.yoursite.com/yearpdf.php'); . и удалите функцию onclick
  3. ИЛИ измените свой код 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 , потому что это работает на refersh

4. Да!! точно.. Я сделал что-то не так с сессиями. Не знаю, кто это исправит.

5. что происходит? какой метод вы выбираете? я думаю, что первый вариант был бы лучшим для вас. поскольку не было никакой обработки в report.php кроме объявления переменных сеанса. вам нужно было только изменить форму action на yearpdf.php и $r1 как $r1=$_POST['course_year']; . верно?