我想将表单输入处理到MYSQL数据库中,但是我无法让其他文件识别_POST数组中的数据并且不断获得典型的“未定义索引”错误。 我的表格:
<?php
$category = '';
$item = '';
// Check if form is posted
if (isset($_POST['item'])){
// Declare POST'd values into variables
$category = $_POST['Category'];
$item = $_POST['item'];
}
?>
<!-- Item Input form -->
<form id='additem' method='post' action="">
<fieldset>
<legend>Add Item</legend>
<table>
<tr>
<td><label for='Category'>Category: </label></td>
<td><input type='text' name='Category' list='categories' value='<?php $category;?>' /></td>
<datalist id='categories'>
<option value='Protein'>
<option value='Produce'>
<option value='Baked Goods'>
<option value='Dry/Canned'>
<option value='Household'>
</datalist>
</tr><tr>
<td><label for='item'>Name: </label></td>
<td><input type='text' name='item' value='<?php $item;?>' /></td>
</tr><tr>
<td></td><td><input type='Submit' value='Submit' /></td>
</tr>
</table>
</fieldset>
</form>
当我在这个文件中使用$ _POST时,它工作得非常好但是当我尝试在另一个文件中使用它时,process.php:
<?php
echo $_POST['Category'];
echo '<br>';
echo $_POST['item'];
?>
它给出了:
注意:未定义的索引:第3行的E:\ Documents \ XAMPP \ htdocs \ Website \ process.php中的类别
注意:未定义的索引:第5行的E:\ Documents \ XAMPP \ htdocs \ Website \ process.php中的项目
现在我知道我的_POST数组不是空的,因为我可以在原始表单文件中访问它。如果我将表单操作更改为“process.php”它可以工作,但也会自动将我带到该页面。我想要的是process.php将数据发送到我的数据库,同时表单返回到自己的页面准备好更多输入。我甚至将该示例中的代码复制并粘贴到文件中并试图运行它们,但我得到类似的错误,所以我认为它可能是XAMPP / Apache的一个问题。
为了解决这个问题,我也尝试了this但是post_max_size已经设置为8M,并且根据另一篇帖子,我看到某处我在下面的行中添加了'variables_order =“EGPCS”'。我仍然得到相同的未定义索引。
我的代码有问题吗?是XAMPP / Apache吗?我尝试过全新安装XAMPP,但问题仍然存在。
答案 0 :(得分:2)
您的$ _POST数组将无法在所有页面上访问。 尽管我已经理解了您的问题,但您正尝试在其他文件上访问$ _POST数组,而这只能在此文件或您发布的文件中使用。 您需要使用SESSION才能使用这些值
$_SESSION["Category"] = $_POST['Category'];
然后在任何其他页面上使用
在页面顶部session_start();
,然后打印您的变量,如
echo "Selected Category is " . $_SESSION["Category"] . ".<br>";
答案 1 :(得分:0)
您尚未在表单元素的action属性中指定位置或文件。 action属性中指定的文件可以包含&amp; _POST []全局数组中的表单值。要访问多个页面中的值,您应该使用cookie
答案 2 :(得分:0)
检查
类别
因为你只是检查
项目
在数组中,如果数组中没有类别,那么它将给出未定义的索引错误,所以请尝试以下方法
$category = '';
$item = '';
if (isset($_POST['item']) && isset($_POST['Category'])){
// Declare POST'd values into variables
$category = $_POST['Category'];
$item = $_POST['item'];
}
或者如果你想要,你可以在不同的条件下检查它们
$category = '';
$item = '';
if (isset($_POST['item'])){
// Declare POST'd values into variables
$item = $_POST['item'];
}
if (isset($_POST['Category'])){
// Declare POST'd values into variables
$category = $_POST['Category'];
}