我一直在讨论这段代码。它给了我一个错误:
致命错误:未捕获异常'异常',消息'FPDF错误:某些数据已经输出,无法发送PDF文件(输出从/ 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),该链接转向另一个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变量,以及另一个页面中的数据库值。
答案 0 :(得分:2)
这是FPDF库的常见问题。您在脚本中的某处输出了一些消息。 “为了使fpdf正常工作,除了fpdf生成的内容之外根本不会有任何输出”。这包括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