2015-11-30 5 views
3

Я пытаюсь создать общий список покупок в Интернете как способ изучения HTML и PHP. Я пытаюсь следовать these directions, чтобы создать форму добавления моего элемента.Проблема с обработкой формы php

Я пытаюсь получить мою страницу, чтобы показать представленные данные в форме как доказательство концепции, но ничего не отобразится. Это мой код, сохраняется в \ 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; 
    ?> 

, но когда я открываю эту страницу в браузере и ввести некоторую информацию, все, что я получаю «Ваш входной сигнал:» а затем пустое пространство, где моя информация должна быть выведенным.

Может кто-нибудь увидеть, где я иду не так?

+3

'$ category' должен быть' $ _POST [ «категория»] '. Когда вы * отправляете * форму, данные находятся в массиве '$ _POST'. –

ответ

3

Это потому, что вы фактически не обрабатываете переменную $_POST, которая отправляется.

Измените код следующим образом:

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

EDIT
Поскольку вы обновили свой вопрос, я обновляю, где вы должны сделать эти изменения.

Теперь у вас есть переменные, объявленные в верхней части страницы (что хорошо). Но теперь вы должны получить их из переменной пост там также, и включают в себя какие-то проверки, чтобы увидеть, если он был отправлен или нет (чтобы избежать предупреждений/извещений):

В верхней части файла:

<?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().

+0

Что-то вроде этого, вероятно, моя проблема, я проверю его, когда буду дома с работы. Спасибо за вашу помощь, вы сделали это очень легко понять, и смысл каждого добавления ясен. –

0

Ваши теги Option не отформатированы правильно.

<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 является то, что будет сохранено в качестве значения для «Категории»

+0

Решает ли этот вопрос вопрос? –

+0

Без текста между тегами , browswer не предлагается ничего показывать на экране, что является проблемой, насколько я ее понимаю. – Skullclutter

+0

Как насчет ввода 'item'? Разве это не появилось бы, если бы ваше решение было правильным? –

Смежные вопросы