隐藏表单输入导致PHP注意:未定义变量:

隐藏表单输入导致PHP注意:未定义变量:,php,html,forms,variables,error-handling,Php,Html,Forms,Variables,Error Handling,当用户提交表单时,表单的某些字段为空,要使用预定义数据填充数据库的相关空字段,以下代码首先检查用户是否将表单字段保留为空,然后通过隐藏表单输入将预定义数据插入数据库的相应字段发布日期参考详细信息和名称 if ((isset($_POST["submit_form"])) && ($_POST["submit_form] == "Submit")) { $issue_date = $_POST['DEFAULT CURRENT_TIMESTAMP']; $reference

当用户提交表单时,表单的某些字段为空,要使用预定义数据填充数据库的相关空字段,以下代码首先检查用户是否将表单字段保留为空,然后通过隐藏表单输入将预定义数据插入数据库的相应字段
发布日期
参考详细信息
名称

if ((isset($_POST["submit_form"])) && ($_POST["submit_form] == "Submit")) { 

$issue_date = $_POST['DEFAULT CURRENT_TIMESTAMP'];

$reference = "Not Available";
if(isset($_POST['reference_details']) && !empty($_POST['reference_details'])){  
$reference = $_POST['reference_details'];
}

$drawer_name = "Not Available";
if(isset($_POST['name']) && !empty($_POST['name'])){  
$drawer_name = $_POST['name'];
}

$insertSQL = sprintf("INSERT INTO table (issuing_date, reference_details, name) VALUES (%s, %s, %s)",

GetSQLValueString(trim($issue_date), "date"),
GetSQLValueString(trim($reference), "text"),
GetSQLValueString(trim($drawer_name), "text"));

and do more.......

这里怎么了?表单的隐藏输入是否定义错误


你知道吗?

你以前设置过这个变量吗

$variable = $_POST['NAME VALUE'];
例如,如果数据库中的列是test

你必须把它设置好

$variablename = $_POST['test'];

当然,您甚至必须在初始加载表单时运行查询,因为您没有向表单发布任何数据,所以它永远不会进入此代码块:

第一次加载-访问页面

if ((isset($_POST["submit_form"])) && ($_POST["submit_form"] == "Submit")) { // Data received from your submit button is not available because the form was not submitted

    // We never make it here so $issue_date is not available when you need it

    $issue_date = $_POST['DEFAULT CURRENT_TIMESTAMP'];

    // everything else

}
第二次加载-将表单提交给自身

if ((isset($_POST["submit_form"])) && ($_POST["submit_form"] == "Submit")) { // Data received from your submit button is available so we enter this block of code

    // We made it here so $issue_date is available later on

    $issue_date = $_POST['DEFAULT CURRENT_TIMESTAMP'];

    // everything else

}
你有三个选择: 1-关闭错误报告

^这是最简单的解决方案,应该始终在生产环境或面向公众的网站中完成

在文件的开头,请执行以下操作:

error_reporting(0);
2-使用isset()确定变量是否已声明

<input type="submit" name="submit_form" id="submit" value="Submit" />
<input type="hidden" name="issuing_date" value="<?php echo (isset($issue_date) ? $issue_date : ''); ?>" />
<input type="hidden" name="reference_details" value="<?php echo (isset($reference) ? $reference: ''); ?>" />
<input type="hidden" name="name" value="<?php echo (isset($drawer_name) ? $drawer_name: ''); ?>" />

哪些线路是110-112?编辑:我的错误,我现在看到了。
$issue\u date
是否在尝试在隐藏输入中使用它之前进行了设置?@PrimitiveType我想我搞错了,OP在其表单中提到了错误,因此可能是隐藏字段…@SilentPond您可能应该提供更多代码,因为这些代码片段只会导致猜测您在何处定义和使用这些变量…因此错误出现在表单页面上,而没有“提交”?这意味着上面第一个代码块中的任何代码都不会基于“if”语句执行---->Add'$issue_date=“”$参考_详情=”$name=“”;”如果仔细阅读我的问题,您可能会意识到,定义post变量与我的问题无关。每当我在任何表单操作之前在浏览器中启动页面时,我都会收到此通知。真的很奇怪,谢谢。当关闭错误报告时,表单工作得很好,但我试图找出阻止代码干净或使代码不干净的问题的根源。我需要第二批货的发行日期。然而,你的答案是我所期待的。你的第二个解决方案是我所期待的。
error_reporting(0);
<input type="submit" name="submit_form" id="submit" value="Submit" />
<input type="hidden" name="issuing_date" value="<?php echo (isset($issue_date) ? $issue_date : ''); ?>" />
<input type="hidden" name="reference_details" value="<?php echo (isset($reference) ? $reference: ''); ?>" />
<input type="hidden" name="name" value="<?php echo (isset($drawer_name) ? $drawer_name: ''); ?>" />
$issue_date = NULL;
$reference = NULL;
$drawer_name = NULL;

if ((isset($_POST["submit_form"])) && ($_POST["submit_form"] == "Submit")) {

    $issue_date = $_POST['DEFAULT CURRENT_TIMESTAMP'];

    // everything else
}