2012-06-10 2 views
1

Я сделал очень простую форму, просто чтобы убедиться, что я делаю правильную вещь при отправке данных на PHP. Он состоит всего из трех переключателей и ничего больше. Правильно нет, я не получаю значение в $ _POST, как я ожидаю.Значение формы не найдено в _POST

Форма:

<form name='testform' action='test.php' method='post'> 
    <input type='radio' name='testbutton' value='larry' /> 
    <input type='radio' name='testbutton' value='curly' /> 
    <input type='radio' name='testbutton' value='moe' /> 
    <input type='submit' value='Submit'> 
</form> 

Сценарий, test.php:

if($_POST['testbutton'] == 'larry') { 
    echo "You picked Larry"; 
} elseif($_POST['testbutton'] == 'curly') { 
    echo "You picked Curly"; 
} else { 
    echo "You picked Moe"; 
} 

код не возвращает ошибки но все, что кнопка я выбираю, я всегда получаю Moe, даже если не выбирая не кнопки на все. Использование var_dump ($ _ POST) ничего не дает, пустого пространства. Использование print_r ($ _ POST) дает 1, независимо от того, что я выбираю. Я не могу найти то, что я делаю неправильно здесь.

Btw, я знаю, что этот код не оптимален, но я просто тестирую здесь.

+0

У меня нет проблем с этим, и я не вижу ничего плохого:/Попробуйте использовать $ _REQUEST вместо этого, чтобы узнать, получает ли он его вообще. – TylerH4

+0

заключается в том, что вся форма \ php? –

+0

Ну, это вся форма, но у меня есть еще две вершины. Один с элементами списка и один с флажками. Но они работают как должно. Действуют только радиокнопки. Возможно ли, что эти формы могут быть «названы», а некоторые - как чрезмерный процесс всего процесса? Я проверил теги, чтобы формы не были вложены в какой-либо форме. – Sandokan

ответ

3

У вас, вероятно, есть другой код, который нам не показан, который присваивает значение переменной $ _POST, перезаписывая его.

Если вы создадите новый php-файл и введите не что иное, как код, который вы разместили здесь, он должен работать нормально.

+0

Я узнал, что это было. Два неуместных []. Спасибо за ваше время. – Sandokan

-1
  • Всегда полезно добавлять атрибут 'name' к элементу ввода.
<input type="submit" name="MySubmit" value="Submit"> 
  • Вы всегда получаете Moe, когда ничего не выбирая. Предполагая, что вы не показали весь код, это то, что я могу вам сказать:
if(isset($_POST['MySubmit'])) { 

    $selected = $_POST['testbutton']; 

    switch($selected){ 

     'larry': echo "You picked Larry"; 

       break; 

     'curly': echo "You picked Curly"; 

       break; 

     default: "You picked Moe"; 

        break; 

    } 

} 

else { 

    echo "Form submit failed"; 

} 
+0

Извините. По какой-то причине формат кода не работал для меня для этого сообщения. Я попробовал перередактировать. Если кто-то еще может это сделать, спасибо. – exception

+0

Практически никогда не бывает хорошо называть кнопку ввода и проверять ее на предмет отправки формы.http://stackoverflow.com/questions/2680160/how-can-i-tell-which-button-was-clicked-in-a-php-form-submit/2680198#2680198 – goat

+0

Согласовано и узнано. Благодарю. – exception

0

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

В моем случае я использовал ajax для отправки формы. В javascript-коде: я установил «type:» в «GET», а затем приступил к написанию кода для обработки данных «$ _POST» в скрипте PHP на стороне сервера. Обманчиво, представление запроса (как видно из инструментов разработчика Chrom) имеет правильные значения, поэтому вы уверены, что значения передаются. Однако при дальнейшем рассмотрении вы увидите, что заголовки ответов показывают «GET».

Невероятная ошибка. Надеюсь, что это поможет спасти кого-то другого от подобного отладочного ада.

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