开始错误输出
Getting error output started
我一直对这段代码感到头疼。它给我一个错误:
Fatal error: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file (output started at /customers/0/c/6/wmc-corner.be/httpd.www/DeLijn/Dienstwissel/pdf_wissel.php:1)'
我已经创建了该页面并且它运行良好,直到更改了一些小的东西。值通过表单发送。错误应该在 FPDF 代码中的某处,但我找不到它。
pdf_wissel.php
<?php
require ($_SERVER['DOCUMENT_ROOT']."/FPDF/fpdf.php");
include ($_SERVER['DOCUMENT_ROOT']."/db/connect-db.php");
$aanvrager=mysqli_real_escape_string($link,htmlspecialchars($_POST['aanvrager']));
$collega= mysqli_real_escape_string($link,htmlspecialchars($_POST['aanvrager']));
$Datumw= mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumw']));
$Datumt= mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumt']));
$Dienstw1= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt1']));
$Dienstt2= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt2']));
$stelplaats= mysqli_real_escape_string($link,htmlspecialchars($_POST['stelplaats']));
$Wissel=date('d/m/Y',strtotime($Datumw));
$Tegenprestatie=date('d/m/Y',strtotime($Datumt));
$status="Aangevraagd";
$vandaag = date("d/m/Y");
if(isset($_POST['submit']))
{
$aanvrager=$_POST['aanvrager'];
$collega=$_POST['collega'];
$stelplaats=$_POST['stelplaats'];
if($Dienstw1 == "X" or $Dienstw1 =="T" or $Dienstw1 == "WV" or $Dienstw1 =="WV01" or $Dienstw1 =="CV" or $Dienstw1 =="CV01" or $Dienstw1 =="HU" or $Dienstw1 =="HU01" or $Dienstw1 =="AV01" or $Dienstw1 =="AV" or $Dienstw2 == "X" or $Dienstw2 =="T" or $Dienstw2 == "WV" or $Dienstw2 =="WV01" or $Dienstw2 =="CV" or $Dienstw2 =="CV01" or $Dienstw2 =="HU" or $Dienstw2 =="HU01" or $Dienstw2 =="AV01" or $Dienstw2 =="AV" )
{
$Datumw=mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumw']));
$Datumt=mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumt']));
$Dienstw1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt1']));
$Dienstt2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt2']));
}
else
{
$Datumt=$Datumw;
$Dienstw1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1="";
$Dienstt2="";
}
$result1 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$A_id'")
or die(mysqli_error());
$row1 = mysqli_fetch_array( $result1 );
$aanvrager=$row1['name'];
$pnr_aanvrager=$row1['pnr'];
$kast_aanvrager=$row1['kast'];
$aanvrager_sign=$row1['sign'];
$aanvrager_email=$row1['email'];
$result2 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$T_id'")
or die(mysqli_error());
$row2 = mysqli_fetch_array( $result2 );
$chauffeur2=$row2['name'];
$pnr_chauffeur2=$row2['pnr'];
$chauffeur2_sign=$row2['sign'];
$chauffeur2_email=$row2['email'];
class PDF extends FPDF
{
function Header()
{
$this->Image('http://www.wmc-corner.be/images/DeLijn.png',5,3,25);
// Arial bold 15
$this->SetFont('Arial','B',16);
$this->Cell(80);
$this->Cell(20,2,'AANVRAAG DIENSTWISSEL',0,0,'C');
$this->Ln(25);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'C');
}
}
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',8);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->SetFont('Times','',6);
$pdf->MultiCell(0,5,"De afspraken over het wisselen van diensten bij chauffeurs zijn vermeld in dienstbevel 2186",0);
$pdf->MultiCell(0,5,"Bijzondere aandachtspunten:",0);
$pdf->MultiCell(0,5,"1) De diensten die gewisseld worden dienen evenredig te zijn qua duur.",0);
$pdf->MultiCell(0,5,"2) Er is alleen een tegenprestatie vereist bij een wissel dienst om rustdag. De tegenprestatie moet plaatsvinden binnen hetzelfde trimester als de initiele wissel, indien dit niet lukt, gelieve zich te wenden tot de dienst Planning of jouw stelplaatsverantwoordelijke.",0);
$pdf->MultiCell(0,5,"3) De aanvraag voor een wissel mag pas ingediend worden nadat de betrokkenen hebben nagekeken dat de minimale nachtrust (8u) gerespecteerd wordt en dat ze minimaal 1 rustdag hebben om de 7 kalenderdagen. ",0);
$pdf->MultiCell(0,5,"4) Als de wissel om ziekte of dwingende verlof niet kan doorgaan, dan zal de chauffeur die ziek of in dwingend verlof is, de planning of de betrokken stelplaats op de hoogte brengen. Als de wissel reeds goedgekeurd werd, voorziet de dienst planning of de betrokken stelplaats een planning in functie van de ruil. Was de wissel nog niet goedgekeurd dan komt de aanvraag te vervallen.",0);
$pdf->SetFont('Times','B',8);
$pdf->Cell(30,10,'Datum: '.$vandaag,0,0,'B');
$pdf->Cell(80);
$pdf->Cell(30,10,'Stelplaats: '.$stelplaats,0,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(5);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->Ln(5);
$pdf->Cell(80);
$pdf->SetFont('Arial','B',16);
$pdf->Cell(20,2,'TOEWIJZING DIENSTWISSEL',0,0,'C');
$pdf->Ln(5);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$Datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(10);
$pdf->multiCell(160,5,"1) Voor ontvangst: Datum: Naam: \n2) Goedkeuring van de verantwoordelijke: Ja Nee \n3) Registratie: OK Handtekening:",1,'L',0);
$filename = "Dienstwissel_".$Datumw.".pdf";
$pdf->Output($filename,'I');
}
?>
在此页面之后,通常会创建一个 pdf 并将值放入数据库中。将它放入数据库的代码不在其中。第二个人需要在一个列表 (edit.php?id=$id) 中推送一个 link,这会转到另一个 php 文件。除了这个从数据库中获取值并创建一个新的 pdf 文件。和上面的代码一样。奇怪的是,第二页效果很好...
edit.php
<?php
$id=$_GET['id'];
$vandaag = date("d/m/Y");
require ($_SERVER['DOCUMENT_ROOT']."/FPDF/fpdf.php");
$server = 'xxxx';
$user = 'xxxx';
$pass = 'xxxx';
$db = 'xxxx';
$link = mysqli_connect($server, $user, $pass);
$dbs= mysqli_select_db($link,$db);
$result = mysqli_query($link,"SELECT * FROM WMC_DeLijn_Wissel WHERE w_id='$id'")
or die(mysqli_error());
$row = mysqli_fetch_array( $result );
$w_id=$row['w_id'];
$A_id=$row['A_id'];
$T_id=$row['T_id'];
$Dienstw1=$row['AW_Dienst'];
$Dienstw2=$row['TW_Dienst'];
$Dienstt1=$row['AT_Dienst'];
$Dienstt2=$row['TT_Dienst'];
$Datumw=date("d/m/Y",strtotime($row['Datumw']));
$datumw=$row['Datumw'];
$Datumt=$row['Datumt'];
//$datumw= date("Y-m-d",strtotime($row['Datumw']));
$status= "Goedgekeurd";
$datumt= date('d/m/Y',strtotime($Datumt));
$datumt2= date('Y-m-d',strtotime($Datumt));
$Link="https://www.wmc-corner.be/DeLijn/Dienstwissel/Wissels/Dienstwissel_(".$id.")".$Datumw.".pdf";
mysqli_query($link," UPDATE WMC_DeLijn_Wissel SET Link='$Link', STATUS='Goedgekeurd' WHERE w_id='$id'")
or die(mysqli_error());
if($Dienstw1 == "X" or $Dienstw1 =="T" or $Dienstw1 == "WV" or $Dienstw1 =="WV01" or $Dienstw1 =="CV" or $Dienstw1 =="CV01" or $Dienstw1 =="HU" or $Dienstw1 =="HU01" or $Dienstw1 =="AV01" or $Dienstw1 =="AV" or $Dienstw2 == "X" or $Dienstw2 =="T" or $Dienstw2 == "WV" or $Dienstw2 =="WV01" or $Dienstw2 =="CV" or $Dienstw2 =="CV01" or $Dienstw2 =="HU" or $Dienstw2 =="HU01" or $Dienstw2 =="AV01" or $Dienstw2 =="AV" )
{
$Dienstw1=$row['AW_Dienst'];
$Dienstw2=$row['TW_Dienst'];
$Dienstt1=$row['AT_Dienst'];
$Dienstt2=$row['TT_Dienst'];
}
else
{
$datumt="";
$Dienstt1="";
$Dienstt2="";
}
$stelplaats=$row['stelplaats'];
$result1 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$A_id'")
or die(mysqli_error());
$row1 = mysqli_fetch_array( $result1 );
$aanvrager=$row1['name'];
$pnr_aanvrager=$row1['pnr'];
$kast_aanvrager=$row1['kast'];
$aanvrager_sign=$row1['sign'];
$aanvrager_email=$row1['email'];
$result2 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$T_id'")
or die(mysqli_error());
$row2 = mysqli_fetch_array( $result2 );
$chauffeur2=$row2['name'];
$pnr_chauffeur2=$row2['pnr'];
$chauffeur2_sign=$row2['sign'];
$chauffeur2_email=$row2['email'];
class PDF extends FPDF
{
function Header()
{
$this->Image('http://www.wmc-corner.be/images/DeLijn.png',5,3,25);
$this->SetFont('Arial','B',16);
$this->Cell(80);
$this->Cell(20,2,'AANVRAAG DIENSTWISSEL',0,0,'C');
$this->Ln(25);
}
/
/ Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'C');
}
}
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',8);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->SetFont('Times','',6);
$pdf->MultiCell(0,5,"De afspraken over het wisselen van diensten bij chauffeurs zijn vermeld in dienstbevel 2186",0);
$pdf->MultiCell(0,5,"Bijzondere aandachtspunten:",0);
$pdf->MultiCell(0,5,"1) De diensten die gewisseld worden dienen evenredig te zijn qua duur.",0);
$pdf->MultiCell(0,5,"2) Er is alleen een tegenprestatie vereist bij een wissel dienst om rustdag. De tegenprestatie moet plaatsvinden binnen hetzelfde trimester als de initiele wissel, indien dit niet lukt, gelieve zich te wenden tot de dienst Planning of jouw stelplaatsverantwoordelijke.",0);
$pdf->MultiCell(0,5,"3) De aanvraag voor een wissel mag pas ingediend worden nadat de betrokkenen hebben nagekeken dat de minimale nachtrust (8u) gerespecteerd wordt en dat ze minimaal 1 rustdag hebben om de 7 kalenderdagen. ",0);
$pdf->MultiCell(0,5,"4) Als de wissel om ziekte of dwingende verlof niet kan doorgaan, dan zal de chauffeur die ziek of in dwingend verlof is, de planning of de betrokken stelplaats op de hoogte brengen. Als de wissel reeds goedgekeurd werd, voorziet de dienst planning of de betrokken stelplaats een planning in functie van de ruil. Was de wissel nog niet goedgekeurd dan komt de aanvraag te vervallen.",0);
$pdf->SetFont('Times','B',8);
$pdf->Cell(30,10,'Datum: '.$vandaag,0,0,'B');
$pdf->Cell(80);
$pdf->Cell(30,10,'Stelplaats: '.$stelplaats,0,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(5);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->Ln(5);
$pdf->Cell(80);
$pdf->SetFont('Arial','B',16);
$pdf->Cell(20,2,'TOEWIJZING DIENSTWISSEL',0,0,'C');
$pdf->Ln(5);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$Datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(10);
$pdf->multiCell(160,5,"1) Voor ontvangst: Datum: Naam: \n2) Goedkeuring van de verantwoordelijke: Ja Nee \n3) Registratie: OK Handtekening:",1,'L',0);
$filenamea = "Dienstwissel_(".$id.")".$Datumw.".pdf";
$filenameb = "Wissels/Dienstwissel_(".$id.")".$datumw.".pdf";
$pdf->Output($filenameb,'F');
$pdf->Output($filenamea,'I');
$pdf->Output($filenamea,'D');
?>
真令人沮丧,它昨天运行完美,经过一些小改动后它停止运行。我一直在尝试在 24 小时内找到错误。有人有线索吗?为什么 edit.php 有效而 pdf_wissel.php 无效?除了一页中的 POST 变量和另一页中的数据库值外,它包含完全相同的代码。
这是 FPDF 库的常见问题。您在脚本的某处输出了一些消息。 "For fpdf to work properly, there cannot be any output at all beside what fpdf generates"。这包括 echo、print 等语句。
参见前面的示例。
FPDF error: Some data has already been output by using FPDF
FPDF error: Some data has already been output, can't send PDF
FPDF error: Some data has already been output, can't send PDF file on 000webhost
FPDF error: Some data has already been output, can't send PDF file
我一直对这段代码感到头疼。它给我一个错误:
Fatal error: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file (output started at /customers/0/c/6/wmc-corner.be/httpd.www/DeLijn/Dienstwissel/pdf_wissel.php:1)'
我已经创建了该页面并且它运行良好,直到更改了一些小的东西。值通过表单发送。错误应该在 FPDF 代码中的某处,但我找不到它。
pdf_wissel.php
<?php
require ($_SERVER['DOCUMENT_ROOT']."/FPDF/fpdf.php");
include ($_SERVER['DOCUMENT_ROOT']."/db/connect-db.php");
$aanvrager=mysqli_real_escape_string($link,htmlspecialchars($_POST['aanvrager']));
$collega= mysqli_real_escape_string($link,htmlspecialchars($_POST['aanvrager']));
$Datumw= mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumw']));
$Datumt= mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumt']));
$Dienstw1= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt1']));
$Dienstt2= mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt2']));
$stelplaats= mysqli_real_escape_string($link,htmlspecialchars($_POST['stelplaats']));
$Wissel=date('d/m/Y',strtotime($Datumw));
$Tegenprestatie=date('d/m/Y',strtotime($Datumt));
$status="Aangevraagd";
$vandaag = date("d/m/Y");
if(isset($_POST['submit']))
{
$aanvrager=$_POST['aanvrager'];
$collega=$_POST['collega'];
$stelplaats=$_POST['stelplaats'];
if($Dienstw1 == "X" or $Dienstw1 =="T" or $Dienstw1 == "WV" or $Dienstw1 =="WV01" or $Dienstw1 =="CV" or $Dienstw1 =="CV01" or $Dienstw1 =="HU" or $Dienstw1 =="HU01" or $Dienstw1 =="AV01" or $Dienstw1 =="AV" or $Dienstw2 == "X" or $Dienstw2 =="T" or $Dienstw2 == "WV" or $Dienstw2 =="WV01" or $Dienstw2 =="CV" or $Dienstw2 =="CV01" or $Dienstw2 =="HU" or $Dienstw2 =="HU01" or $Dienstw2 =="AV01" or $Dienstw2 =="AV" )
{
$Datumw=mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumw']));
$Datumt=mysqli_real_escape_string($link,htmlspecialchars($_POST['Datumt']));
$Dienstw1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt1']));
$Dienstt2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstt2']));
}
else
{
$Datumt=$Datumw;
$Dienstw1=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw1']));
$Dienstw2=mysqli_real_escape_string($link,htmlspecialchars($_POST['Dienstw2']));
$Dienstt1="";
$Dienstt2="";
}
$result1 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$A_id'")
or die(mysqli_error());
$row1 = mysqli_fetch_array( $result1 );
$aanvrager=$row1['name'];
$pnr_aanvrager=$row1['pnr'];
$kast_aanvrager=$row1['kast'];
$aanvrager_sign=$row1['sign'];
$aanvrager_email=$row1['email'];
$result2 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$T_id'")
or die(mysqli_error());
$row2 = mysqli_fetch_array( $result2 );
$chauffeur2=$row2['name'];
$pnr_chauffeur2=$row2['pnr'];
$chauffeur2_sign=$row2['sign'];
$chauffeur2_email=$row2['email'];
class PDF extends FPDF
{
function Header()
{
$this->Image('http://www.wmc-corner.be/images/DeLijn.png',5,3,25);
// Arial bold 15
$this->SetFont('Arial','B',16);
$this->Cell(80);
$this->Cell(20,2,'AANVRAAG DIENSTWISSEL',0,0,'C');
$this->Ln(25);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'C');
}
}
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',8);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->SetFont('Times','',6);
$pdf->MultiCell(0,5,"De afspraken over het wisselen van diensten bij chauffeurs zijn vermeld in dienstbevel 2186",0);
$pdf->MultiCell(0,5,"Bijzondere aandachtspunten:",0);
$pdf->MultiCell(0,5,"1) De diensten die gewisseld worden dienen evenredig te zijn qua duur.",0);
$pdf->MultiCell(0,5,"2) Er is alleen een tegenprestatie vereist bij een wissel dienst om rustdag. De tegenprestatie moet plaatsvinden binnen hetzelfde trimester als de initiele wissel, indien dit niet lukt, gelieve zich te wenden tot de dienst Planning of jouw stelplaatsverantwoordelijke.",0);
$pdf->MultiCell(0,5,"3) De aanvraag voor een wissel mag pas ingediend worden nadat de betrokkenen hebben nagekeken dat de minimale nachtrust (8u) gerespecteerd wordt en dat ze minimaal 1 rustdag hebben om de 7 kalenderdagen. ",0);
$pdf->MultiCell(0,5,"4) Als de wissel om ziekte of dwingende verlof niet kan doorgaan, dan zal de chauffeur die ziek of in dwingend verlof is, de planning of de betrokken stelplaats op de hoogte brengen. Als de wissel reeds goedgekeurd werd, voorziet de dienst planning of de betrokken stelplaats een planning in functie van de ruil. Was de wissel nog niet goedgekeurd dan komt de aanvraag te vervallen.",0);
$pdf->SetFont('Times','B',8);
$pdf->Cell(30,10,'Datum: '.$vandaag,0,0,'B');
$pdf->Cell(80);
$pdf->Cell(30,10,'Stelplaats: '.$stelplaats,0,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(5);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->Ln(5);
$pdf->Cell(80);
$pdf->SetFont('Arial','B',16);
$pdf->Cell(20,2,'TOEWIJZING DIENSTWISSEL',0,0,'C');
$pdf->Ln(5);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$Datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(10);
$pdf->multiCell(160,5,"1) Voor ontvangst: Datum: Naam: \n2) Goedkeuring van de verantwoordelijke: Ja Nee \n3) Registratie: OK Handtekening:",1,'L',0);
$filename = "Dienstwissel_".$Datumw.".pdf";
$pdf->Output($filename,'I');
}
?>
在此页面之后,通常会创建一个 pdf 并将值放入数据库中。将它放入数据库的代码不在其中。第二个人需要在一个列表 (edit.php?id=$id) 中推送一个 link,这会转到另一个 php 文件。除了这个从数据库中获取值并创建一个新的 pdf 文件。和上面的代码一样。奇怪的是,第二页效果很好...
edit.php
<?php
$id=$_GET['id'];
$vandaag = date("d/m/Y");
require ($_SERVER['DOCUMENT_ROOT']."/FPDF/fpdf.php");
$server = 'xxxx';
$user = 'xxxx';
$pass = 'xxxx';
$db = 'xxxx';
$link = mysqli_connect($server, $user, $pass);
$dbs= mysqli_select_db($link,$db);
$result = mysqli_query($link,"SELECT * FROM WMC_DeLijn_Wissel WHERE w_id='$id'")
or die(mysqli_error());
$row = mysqli_fetch_array( $result );
$w_id=$row['w_id'];
$A_id=$row['A_id'];
$T_id=$row['T_id'];
$Dienstw1=$row['AW_Dienst'];
$Dienstw2=$row['TW_Dienst'];
$Dienstt1=$row['AT_Dienst'];
$Dienstt2=$row['TT_Dienst'];
$Datumw=date("d/m/Y",strtotime($row['Datumw']));
$datumw=$row['Datumw'];
$Datumt=$row['Datumt'];
//$datumw= date("Y-m-d",strtotime($row['Datumw']));
$status= "Goedgekeurd";
$datumt= date('d/m/Y',strtotime($Datumt));
$datumt2= date('Y-m-d',strtotime($Datumt));
$Link="https://www.wmc-corner.be/DeLijn/Dienstwissel/Wissels/Dienstwissel_(".$id.")".$Datumw.".pdf";
mysqli_query($link," UPDATE WMC_DeLijn_Wissel SET Link='$Link', STATUS='Goedgekeurd' WHERE w_id='$id'")
or die(mysqli_error());
if($Dienstw1 == "X" or $Dienstw1 =="T" or $Dienstw1 == "WV" or $Dienstw1 =="WV01" or $Dienstw1 =="CV" or $Dienstw1 =="CV01" or $Dienstw1 =="HU" or $Dienstw1 =="HU01" or $Dienstw1 =="AV01" or $Dienstw1 =="AV" or $Dienstw2 == "X" or $Dienstw2 =="T" or $Dienstw2 == "WV" or $Dienstw2 =="WV01" or $Dienstw2 =="CV" or $Dienstw2 =="CV01" or $Dienstw2 =="HU" or $Dienstw2 =="HU01" or $Dienstw2 =="AV01" or $Dienstw2 =="AV" )
{
$Dienstw1=$row['AW_Dienst'];
$Dienstw2=$row['TW_Dienst'];
$Dienstt1=$row['AT_Dienst'];
$Dienstt2=$row['TT_Dienst'];
}
else
{
$datumt="";
$Dienstt1="";
$Dienstt2="";
}
$stelplaats=$row['stelplaats'];
$result1 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$A_id'")
or die(mysqli_error());
$row1 = mysqli_fetch_array( $result1 );
$aanvrager=$row1['name'];
$pnr_aanvrager=$row1['pnr'];
$kast_aanvrager=$row1['kast'];
$aanvrager_sign=$row1['sign'];
$aanvrager_email=$row1['email'];
$result2 = mysqli_query($link,"SELECT * FROM WMC_users WHERE id='$T_id'")
or die(mysqli_error());
$row2 = mysqli_fetch_array( $result2 );
$chauffeur2=$row2['name'];
$pnr_chauffeur2=$row2['pnr'];
$chauffeur2_sign=$row2['sign'];
$chauffeur2_email=$row2['email'];
class PDF extends FPDF
{
function Header()
{
$this->Image('http://www.wmc-corner.be/images/DeLijn.png',5,3,25);
$this->SetFont('Arial','B',16);
$this->Cell(80);
$this->Cell(20,2,'AANVRAAG DIENSTWISSEL',0,0,'C');
$this->Ln(25);
}
/
/ Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'C');
}
}
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',8);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->SetFont('Times','',6);
$pdf->MultiCell(0,5,"De afspraken over het wisselen van diensten bij chauffeurs zijn vermeld in dienstbevel 2186",0);
$pdf->MultiCell(0,5,"Bijzondere aandachtspunten:",0);
$pdf->MultiCell(0,5,"1) De diensten die gewisseld worden dienen evenredig te zijn qua duur.",0);
$pdf->MultiCell(0,5,"2) Er is alleen een tegenprestatie vereist bij een wissel dienst om rustdag. De tegenprestatie moet plaatsvinden binnen hetzelfde trimester als de initiele wissel, indien dit niet lukt, gelieve zich te wenden tot de dienst Planning of jouw stelplaatsverantwoordelijke.",0);
$pdf->MultiCell(0,5,"3) De aanvraag voor een wissel mag pas ingediend worden nadat de betrokkenen hebben nagekeken dat de minimale nachtrust (8u) gerespecteerd wordt en dat ze minimaal 1 rustdag hebben om de 7 kalenderdagen. ",0);
$pdf->MultiCell(0,5,"4) Als de wissel om ziekte of dwingende verlof niet kan doorgaan, dan zal de chauffeur die ziek of in dwingend verlof is, de planning of de betrokken stelplaats op de hoogte brengen. Als de wissel reeds goedgekeurd werd, voorziet de dienst planning of de betrokken stelplaats een planning in functie van de ruil. Was de wissel nog niet goedgekeurd dan komt de aanvraag te vervallen.",0);
$pdf->SetFont('Times','B',8);
$pdf->Cell(30,10,'Datum: '.$vandaag,0,0,'B');
$pdf->Cell(80);
$pdf->Cell(30,10,'Stelplaats: '.$stelplaats,0,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,132,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,132,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(5);
$pdf->cell(30,2,'================================================================================================================',0,1);
$pdf->Ln(5);
$pdf->Cell(80);
$pdf->SetFont('Arial','B',16);
$pdf->Cell(20,2,'TOEWIJZING DIENSTWISSEL',0,0,'C');
$pdf->Ln(5);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->Cell(80,10,'formulier invullen vanuit standpunt van de aanvrager ',1,0,'B');
$pdf->SetXY($x + 80, $y);
$pdf->Cell(80,10,'tegenprestatie enkel invullen bij wissel rustdag om dienst',1,0,'B');
$pdf->Ln(10);
$pdf->SetFont('Times','B',8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->multiCell(80,5,"Datum wissel: ".$Datumw." \nDienst oorspronkelijk: ".$Dienstw1." \n(geplande dienst aanvrager) \nNieuw: ".$Dienstw2."\n(geplande dienst chauffeur 2)",1,'L',0);
$pdf->SetXY($x + 80, $y);
$pdf->multiCell(80,5,"Datum tegenprestatie: ".$Datumt." \nDienst oorspronkelijk:".$Dienstt1." \nNieuw: ".$Dienstt2."\n \n ",1,'L',0);
if( empty ($aanvrager_sign) && empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign="";
}
if( empty ($aanvrager_sign) && !empty ($chauffeur2_sign))
{
$t_aanvrager_sign="";
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
if(empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign="";
}
if(!empty ($chauffeur2_sign ) && !empty ($aanvrager_sign))
{
$t_aanvrager_sign=$pdf->image($aanvrager_sign,30,210,20);
$t_chauffeur2_sign=$pdf->image($chauffeur2_sign,140,210,20);
}
$pdf->multiCell(160,5,"Aanvrager: ".$aanvrager." Chauffeur2: ".$chauffeur2." \nPersoneelsnr: ".$pnr_aanvrager." Kastnr: ".$kast_aanvrager." Personeelsnr: ".$pnr_chauffeur2." \n \n \nHandtekening: ".$t_aanvrager_sign." Handtekening: ".$t_chauffeur2_sign,1,'L',0);
$pdf->Ln(10);
$pdf->multiCell(160,5,"1) Voor ontvangst: Datum: Naam: \n2) Goedkeuring van de verantwoordelijke: Ja Nee \n3) Registratie: OK Handtekening:",1,'L',0);
$filenamea = "Dienstwissel_(".$id.")".$Datumw.".pdf";
$filenameb = "Wissels/Dienstwissel_(".$id.")".$datumw.".pdf";
$pdf->Output($filenameb,'F');
$pdf->Output($filenamea,'I');
$pdf->Output($filenamea,'D');
?>
真令人沮丧,它昨天运行完美,经过一些小改动后它停止运行。我一直在尝试在 24 小时内找到错误。有人有线索吗?为什么 edit.php 有效而 pdf_wissel.php 无效?除了一页中的 POST 变量和另一页中的数据库值外,它包含完全相同的代码。
这是 FPDF 库的常见问题。您在脚本的某处输出了一些消息。 "For fpdf to work properly, there cannot be any output at all beside what fpdf generates"。这包括 echo、print 等语句。
参见前面的示例。
FPDF error: Some data has already been output by using FPDF
FPDF error: Some data has already been output, can't send PDF
FPDF error: Some data has already been output, can't send PDF file on 000webhost
FPDF error: Some data has already been output, can't send PDF file