Несколько кнопок отправки в форме

Эй, я очень новичок в веб-программировании. Я изучаю PHP за последние несколько дней, и я застрял в одном.

У меня есть тег формы в моем коде, который имеет две кнопки отправки для управления данными. Поскольку у меня может быть только одно определение действия в теге формы, оно может привести меня только к одной странице. (Не очень уверен)

Теперь в зависимости от кнопки, нажатой на форму, я хочу загрузить другую страницу. Один из способов – проверить кнопку, нажатую в конструкцию if-else, а затем использовать echo '…' в ветвях и показать, как будто это другая страница. Но по какой-то причине это кажется неправильным. Может ли кто-нибудь дать мне лучшее решение? Благодарю.

Один из способов – использовать Javascript для переключения действия формы в зависимости от того, какой элемент управления был нажат. В следующем примере используется библиотека jQuery:

 <form id="theForm" action="foo.php"> ... <input id="first" type="submit"/> <input id="second" type="submit"/> </form>​ $(document).ready(function() { $("#theForm input").click(function(e) { e.preventDefault(); if(e.target.id == 'first') { $("#theForm").attr("action", "somePage.php"); } else { $("#theForm").attr("action", "anotherPage.php"); } alert($("#theForm").attr("action")); $("#theForm").submit(); }); ​});​ 

Демо здесь: http://jsfiddle.net/CMEqC/2/

Но по какой-то причине это кажется неправильным.

Это неверное предположение.
Любое другое решение было бы намного хуже.

Проверка на стороне сервера является единственным надежным решением.
Однако echo в ветках не требуется. Есть много других способов.
Использовать оператор include является наиболее очевидным.

так же, как ссылка … int HTML5 кнопки могут переопределять действие, метод, тип и т. д. http://w3schools.com/html5/tag_button.asp для меня, это хороший способ контролировать форму 🙂

добавить другое решение, основанное на @ karim79, так как оно помечено PHP:

 <form id="theForm" action="foo.php"> ... <input id="first" name="button" value="first" type="submit"/> <input id="second" name="button" value="second" type="submit"/> </form>​ 

в вашем foo.php, сделайте что-то вроде этого:

 <?php $submit = isset($_GET['button']) ? trim($_GET['button']) : ''; if($submit == 'first') { header('Location: somePage.php'); } else if($submit == 'second') { header('Location: anotherPage.php'); } ?> 

Резюме: чтобы читать вашу кнопку (две кнопки отправки), вам нужно добавить name на каждом из них. Чтобы сделать его простым, просто используйте одно и то же имя для обоих. Затем добавьте другое value . Затем вам нужно знать, какую кнопку нажимают, проверяя, какое значение отправлено на этой конкретной кнопке .