Отправить значение кнопки отправки при публикации формы

у меня есть список фамилий и некоторые кнопки с названиями продуктов. При нажатии одной из кнопок информация списка отправляется в 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);
}
?>