Подтвердить что ты не робот

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

У меня есть список имен и несколько кнопок с именами продуктов. Когда одна из кнопок нажата, информация из списка отправляется на PHP скрипт, но я не могу нажать кнопку отправки, чтобы отправить ее значение. Как это делается? Я откинул свой код до следующего:

Страница отправки:

<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>

Страница получения: buy.php

<?php
    $name = $_POST['name'];
    $purchase = $_POST['submit'];
    //here some database magic happens
?>

Все, кроме отправки значения кнопки отправки, работает безупречно.

4b9b3361

Ответ 1

Имена кнопок не отправляются, поэтому значение 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 />';
}
?>

Ответ 2

Используйте это вместо:

<input id='tea-submit' type='submit' name = 'submit'    value = 'Tea'>
<input id='coffee-submit' type='submit' name = 'submit' value = 'Coffee'>

Ответ 3

Чтобы начать, использование одинакового идентификатора дважды - это не очень хорошая идея. Идентификатор должен быть уникальным, если вам нужно стилизовать элементы, вы должны использовать класс для применения CSS.

Наконец, вы определили имя своей кнопки отправки как "Чай и кофе", но на вашем PHP вы используете submit в качестве индекса. ваш индекс должен был бы, например, $_POST ['Tea']. это потребует от вас проверки того, что он установлен, поскольку он отправляет только один, вы можете сделать это с помощью isset().

Купите в любом случае, user4035 просто избил меня, его код "исправит" это для вас.

Ответ 4

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

<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' ] ), если вы хотите проверить, действительно ли данные были отправлены.

Ответ 5

Вы можете поддерживать свой html как есть, но использовать этот php-код

<?php
    $name = $_POST['name'];
    $purchase1 = $_POST['Tea'];
    $purchase2 =$_POST['Coffee'];
?>

Ответ 6

Попробуйте этот код:

    <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 = "[email protected]";
$subject = "Your Subject here";
$headers = "From:$name<[email protected]>";
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 = "[email protected]";
$subject = "Your Subject here";
$headers = "From:$name<[email protected]>";
mail($send,$subject,$message,$headers);
}
?>