2015-01-16 2 views
0

У меня есть нижняя html-форма и отправьте ее в файл php (workcard_done.php). Моя проблема заключается в том, когда я отправляю код, который он вызывает. else echo "nothing here"; Если я установил оператор not (!) На isset, я получаю желаемый результат? Он должен работать нормально с if(isset($_POST['submit']) && !empty($_POST['submit'])).

Может ли кто-нибудь сказать мне, что случилось с приведенным ниже кодом, это сводит меня с ума.

<!DOCTYPE html> 
<HTML> 
<head> 
<title>yoyo</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
<body> 
<form action="workcard_done.php" name="workCard_open" method="POST"> 
<br> 
<table> 
<tr> 
<th>title 1</th> 
<th>title 2</th> 
</tr> 
<tr> 
<td><input type="text" name="name[]" value="" ></td> 
<td><input type="text" name="price[]" value="" class="matr_price"/></td> 
</tr> 
<tr> 
<td><input type="text" name="name[]" value="" ></td> 
<td><input type="text" name="price[]" value="" class="matr_price"/></td> 
</tr> 
<tr> 
<td>Total incl. VAT:</td> 
<td><span type="text" name"sum[]" id="sum">0</span></td> 
</tr> 
</table> 
<input type="submit" name"submit" class="submit" value="Done"/> 
</form> 
</body> 
</html> 

workcard_done.php

<!DOCTYPE html> 
<html> 
<head> 
<title>title...</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 
<pre> 
<?php 
error_reporting(E_ALL); 
if(isset($_POST['submit']) && !empty($_POST['submit'])) { 
    $name = $_POST['name']; 
    $price = $_POST['price']; 
    $user = $_POST['user']; 

    print_r($name); 
    echo "<br>"; 
    print_r($price); 
    echo "<br>"; 
    print_r($user); 
    echo "<br>"; 
} 
else { 
    echo "nothing here"; 
} 
?> 
</pre> 
</body> 
</html> 

Если установка оператора нет (!) На IsSet, я получаю ниже желаемого результата.

Array 
(
    [0] => slange 
    [1] => rfd 
) 
Array 
(
    [0] => 123 
    [1] => 200 
) 
Array 
(
    [user] => 2 
) 
+0

'! isset ($ _ POST ['submit']) &&! empty ($ _ POST ['submit']) 'всегда оценивается как' FALSE'. Если '$ _POST ['submit']' не установлен, то он пуст и '! empty() 'оценивается как' FALSE'. Если он установлен, то '! isset() 'оценивается как FALSE. В любом случае полное выражение «FALSE». – axiac

ответ

4

Вы пропустили = на <input type="submit" name"submit"

+0

хороший приятель мат. – Daan

+0

... извините @JimboSlice мой плохой, вы правы. все работает сейчас. Спасибо. – Nomis

+0

приятно, удачи! – JimboSlice

0

Регулярно проверяйте эту строку HTML:

<input type="submit" name"submit" class="submit" value="Done"/> 

Кнопку Submit не имеет имени, поэтому isset($_POST['submit']) == FALSE. Добавьте знак равенства (=), где он принадлежит, и вдруг ваша проблема исчезнет.

+0

Используйте 'print_r ($ _ POST);', чтобы узнать, что ваш скрипт получает из браузера. – axiac

+0

... извините @axiac мой плохой, вы правы. все работает сейчас. Спасибо. – Nomis

0

Проверка на $ _POST, а не на $ _POST ['submit'].

Что делать, если пользователь нажимает кнопку ввода? Кнопка отправки никогда не будет срабатывать, и это значение не будет существовать.

Не забывайте, что маркер CRSF кстати.

+1

проверка на '$ _POST' всегда истинна, поскольку пустые поля будут по-прежнему возвращать строку длиной 0 – Neat

+0

isset ($ _ POST) => yep, всегда true ! Empty ($ _ POST) => nope, только когда это заполнены. Таким образом, этот способ предпочтительнее, чем проверка кнопки отправки. – Blaatpraat

+0

Если пользователь нажимает «Enter» в текстовом поле или в поле «Пароль», тогда форма отправляется, и значение кнопки «отправить» также отправляется, если оно не отключено. Если форма содержит более одной кнопки «отправить», отправляется первая, которая не отключена. – axiac

0

Вы забыли =, как и другие ответы, но вы также пытаетесь получить доступ к $_POST['user'], в то время как ни одно из ваших полей ввода не имеет имени user.

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