Отправить значение кнопки отправки при публикации формы
у меня есть список фамилий и некоторые кнопки с названиями продуктов. При нажатии одной из кнопок информация списка отправляется в php-скрипт, но я не могу нажать кнопку отправки, чтобы отправить его значение. Как это делается? Я свел свой код к следующему:--3-->
страница отправки:
<html>
<form action="buy.php" method="post">
<select name="name">
<option>John</option>
<option>Henry</option>
<select>
<input id='submit' type='submit' name = 'Tea' value = 'Tea'>
<input id='submit' type='submit' name = 'Coffee' value = 'Coffee'>
</form>
</html>
страница получения: купить.в PHP
<?php
$name = $_POST['name'];
$purchase = $_POST['submit'];
//here some database magic happens
?>
все, кроме отправки значения кнопки отправки, работает безупречно.
7 ответов
имена кнопок не отправляются, поэтому php $_POST['submit']
значение не установлено. Как в isset($_POST['submit'])
принимает значение false.
<html>
<form action="" method="post">
<input type="hidden" name="action" value="submit" />
<select name="name">
<option>John</option>
<option>Henry</option>
<select>
<!--
make sure all html elements that have an ID are unique and name the buttons submit
-->
<input id="tea-submit" type="submit" name="submit" value="Tea">
<input id="coffee-submit" type="submit" name="submit" value="Coffee">
</form>
</html>
<?php
if (isset($_POST['action'])) {
echo '<br />The ' . $_POST['submit'] . ' submit button was pressed<br />';
}
?>
используйте этот код:
<input id='tea-submit' type='submit' name = 'submit' value = 'Tea'>
<input id='coffee-submit' type='submit' name = 'submit' value = 'Coffee'>
для начала использовать один и тот же идентификатор дважды-не очень хорошая идея. ID должен быть уникальным, если вам нужно стилизовать элементы, вы должны использовать класс для применения CSS.
наконец, вы определили имя вашей кнопки отправки как чай и кофе, но в вашем PHP вы используете submit как индекс. например, ваш индекс должен был быть $_POST ['Tea']. что потребуется для проверки того, как он отправляет только один , вы можете сделать это с isset().
купить в любом случае, user4035 просто опередите меня , его код "исправит" это для вас.
как говорили другие, вы, вероятно, неправильно поняли идею уникального идентификатора. Все, что мне нужно добавить, это то, что мне не нравится идея использования "value" в качестве идентифицирующего свойства здесь, так как он может меняться со временем (т. е. если вы хотите предоставить несколько языков).
<input id='submit_tea' type='submit' name = 'submit_tea' value = 'Tea' />
<input id='submit_coffee' type='submit' name = 'submit_coffee' value = 'Coffee' />
и в ваш PHP-скрипт
if( array_key_exists( 'submit_tea', $_POST ) )
{
// handle tea
}
if( array_key_exists( 'submit_coffee', $_POST ) )
{
// handle coffee
}
кроме того, вы можете добавить что-то вроде if( 'POST' == $_SERVER[ 'REQUEST_METHOD' ] )
Если вы хотите проверить, были ли данные фактически разнесены.
вы можете сохранить свой html как есть, но использовать этот php-код
<?php
$name = $_POST['name'];
$purchase1 = $_POST['Tea'];
$purchase2 =$_POST['Coffee'];
?>
начальный пост упомянутых кнопок. Вы также можете заменить входные теги кнопками.
<button type="submit" name="product" value="Tea">Tea</button>
<button type="submit" name="product" value="Coffee">Coffee</button>
на name
и value
атрибуты необходимы для отправки значения при отправке формы (id
атрибут в этом случае не требуется). Атрибут type=submit
указывает, что при нажатии на эту кнопку форма будет отправлена.
когда сервер обрабатывает представленную форму,$_POST['product']
будет содержать значение "чай" или "кофе" в зависимости от какая кнопка была нажата.
если вы хотите, вы также можете потребовать от пользователя подтверждения перед отправкой формы (полезно, когда вы реализуете кнопку удаления, например).
<button type="submit" name="product" value="Tea" onclick="return confirm('Are you sure you want tea?');">Tea</button>
<button type="submit" name="product" value="Coffee" onclick="return confirm('Are you sure you want coffee?');">Coffee</button>
попробуйте этот код :
<html>
<form action="" method="post">
<input type="hidden" name="action" value="submit" />
<select name="name">
<option>John</option>
<option>Henry</option>
<select>
<input id='submit' type='submit' name = 'tea' value = 'Tea'>
<input id='submit' type='submit' name = 'coffee' value = 'Coffee'>
</form>
</html>
<?php
if (isset($_POST['name']) && isset($_POST['tea'])){
$tea = $_POST['tea'];
$name = $_POST['name'];
$message .= "Button : ".$tea."\n";
$message .= "Name : ".$name."\n";
$send = "your_email@service.tld";
$subject = "Your Subject here";
$headers = "From:$name<email@local.com>";
mail($send,$subject,$message,$headers);
}
else if (isset($_POST['name']) && isset($_POST['coffee'])){
$coffee = $_POST['coffee'];
$name = $_POST['name'];
$message .= "Button : ".$coffee."\n";
$message .= "Name : ".$name."\n";
$send = "your_email@service.tld";
$subject = "Your Subject here";
$headers = "From:$name<email@local.com>";
mail($send,$subject,$message,$headers);
}
?>