如何消除 FPDF 中的这个错误?

Posted

技术标签:

【中文标题】如何消除 FPDF 中的这个错误?【英文标题】:How to remove this error in FPDF? 【发布时间】:2015-03-31 12:01:42 【问题描述】:

我正在使用 FPDF 以 pdf 格式显示以 html 形式提交的数据。 我已经完成了之前问题中给出的所有解决方案,但我无法解决这个问题。 我收到了错误:

注意:未定义的变量:s_ 第 9 行 C:\xampp\htdocs\dynamic website\form1.php 中的名称 FPDF 错误:部分数据已输出,无法发送 PDF 文件

我的部分html代码是

<td align="right" valign="top">
  <label for="student3_name">3.Name </label>
  </td>
<td valign="top">
  <input  type="text" name="student3_name" maxlength="50" size="20" >
  </td>

而我的form1.php如下:

<?php
   if(isset($_POST['submit']))
   $s_name = $_POST["student3_name"];
   require ("fpdf/fpdf.php");
   $pdf=new FPDF('P','mm','A4');
   $pdf->AddPage();
   $pdf->SetFont('Arial','B',16);
   $pdf->Cell(0,50,'',0,1);
   $pdf->Cell(60,10,"hello$s_name",10,8,'C');
   $pdf->output();
?>

编辑: 这是我的表格的详细部分

<form name="submission_form" method="post" action="form1.php">
  <p style="text-align: center; font-size: 24px; font-weight: 900;></p>
  <table  align="center" border="1">
  <tr>
  <td align="right" valign="top">
  <label for="student3_name">3.Name </label>
  </td>
  <td valign="top">
  <input  type="text" name="student3_name" maxlength="50" size="20" >
  </td>
  </tr> 
  <tr>
  <td colspan="4" style="text-align:center">
  <input type="submit" value="Submit"></td>
  </tr>

【问题讨论】:

PHP: "Notice: Undefined variable" and "Notice: Undefined index"的可能重复 @Daan 我已经检查过这个问题,但我无法使用给出的答案来解决这个问题。 【参考方案1】:

把你的代码改成这样:

<?php
       $s_name = "";
       if(isset($_POST['submission_form']))
       
               $s_name = $_POST["student3_name"];
       
       require ("fpdf/fpdf.php");
       $pdf=new FPDF('P','mm','A4');
       $pdf->AddPage();
       $pdf->SetFont('Arial','B',16);
       $pdf->Cell(0,50,'',0,1);
       $pdf->Cell(60,10,"hello$s_name",10,8,'C');
       $pdf->output();
    ?>

将您的提交按钮更改为此

<input name="submission_form" type="submit" value="Submit">

您在块内声明 $s_name 变量,该变量在块外是不可见的,因此除了在声明它的块内之外,您不能在其他任何地方使用它。

【讨论】:

谢谢,现在错误已被删除,但在我的 pdf 文件中我看不到 s_name 的值。我正在输入 student3_name 但它没有显示。 你的表单方法是什么??是GET 还是POST 这个条件 isset($_POST['submit']) 返回 false 这就是原因。你能告诉我你提交的表格吗? @CoDeMurDeRer 它是“POST”。 显示您提交的 html 表单代码。您永远不会从您的 html 表单中发布值 'submit' $_POST['submit']【参考方案2】:

您需要一个 else 条件来定义 s_nameisset($_POST['submit']) 返回 false 的情况下。

类似:

if (isset($_POST['submit'])) 
    $s_name = $_POST['student3_name'];
 else 
    $s_name = 'The form hasn\'t been submitted yet!';

跟上您的编辑:

还要确保提交按钮正在发布其值。为了实现这一点,您需要包含一个名称属性:

<input name="submit" type="submit" value="Submit"/>

【讨论】:

我添加了这个,确认我的表单没有提交,请问如何解决这个问题。 在这种情况下,这就是您要求的答案。也许如果未提交表单,您将希望完全避免输出 pdf。在这种情况下,您可以将整个 pdf 生成代码包装在 if 语句的第一个块中。您需要针对您现在遇到的问题发布一个更具体的新问题,因为该问题仅涉及 $s_name 未正确初始化的原因。

以上是关于如何消除 FPDF 中的这个错误?的主要内容,如果未能解决你的问题,请参考以下文章

FPDF FPDM - 由于 PDFTK 导致的合并错误

fpdf 中导出的错误符号... ñ 为 ñ ..?

FPDF 错误:无法包含字体度量文件

如何消除程序中的链接器错误?

如何消除 Flutter BLOC 模式中的“为空错误”?

FPDF获取“不正确的输出目标”,但错误代码显示正确的目标