php表单处理有问题

时间:2015-11-30 18:42:11

标签: php html

我正在尝试创建一个共享的购物清单webapp,作为学习HTML和PHP的一种方式。我正在尝试关注these directions来创建我的项目添加表单。

我正在尝试让我的页面在表单下显示提交的数据作为概念证明,但不会显示任何内容。这是我的代码,保存在\ XAMPP \ htdocs \:

<html>
<head>
    <title>Grocery List</title>
</head>
<body>

<?php
$category = $item = "";
?>

    <form id='additem' method='post'>
    <fieldset>
        <legend>Add Item</legend>
        <table>
        <tr>
            <td><label for='Category'>Category: </label></td>
            <td><input type='text' name='Category' list='categories' value='<?php echo $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 echo $item;?>' /></td>
        </tr><tr>
            <td></td><td><input type='Submit' value='Submit' /></td>
        </tr>
        </table>
    </fieldset>
    </form>

    <?php
    echo "Your Input:";
    echo $category;
    echo $item;
    ?>

但是当我在浏览器中打开该页面并输入一些信息时,我得到的是#34;您的输入:&#34;接下来是空白区域,我的信息应输出。

有人可以看到我哪里出错吗?

2 个答案:

答案 0 :(得分:3)

这是因为您实际上并未处理提交的$_POST变量。

按如下方式更改您的代码:

<?php
    // Load the posted values into their respective variables
    $category = $_POST['Category'];
    $item = $_POST['item'];
    echo "Your Input:";
    echo $category;
    echo $item;
?>

修改
由于您已更新了问题,因此我需要更新您应该在哪些位置进行更改。

现在您已在页面顶部声明了变量(这很好)。但是你现在应该从post变量中获取它们,并包括某种检查以查看它是否被发布(以避免警告/通知):

位于文件顶部:

<?php
    $category = '';
    $item = '';
    // Check if the form is posted...
    if (isset($_POST['item'])) {
        // Load the posted values into the variables
        $category = $_POST['Category'];
        $item = $_POST['item'];
        // .. do the same for any other form values 
    }
?>

您可以找到使用extract($_POST)的代码示例或建议,但我强烈建议against using extract()

答案 1 :(得分:0)

您的选项标签格式不正确。

<option value='Protein'>Protein</option>
<option value='Produce'>Produce</option>
<option value='Baked Goods'>Baked Goods</option>
<option value='Dry/Canned'>Dry/Canned</option>
<option value='Household'>Household</option>

在这种情况下,<option></option>标记之间的内容将显示在屏幕上,而value=stuff将保存为&#34;的值。分类&#34;