Можно ли правильно или правильно поместить параметр url в действие формы?
<form method='get' action='index.php?do=search'> <input name='_search' type='text' value='What are you looking for?'> <button type='submit'> Search </button> </form>
Когда я отправлю форму, URL-адрес будет изменен на:
index.php?_search=What are you looking for? (I've stripped %20)
Я бы предпочел, чтобы URL-адрес читался
index.php?do=search&_search=What are you looking for?
Было бы лучше добавить скрытое поле в форму
<input type='hidden' name='do' value='search' />
По-моему, вы должны добавить их в скрытые поля. Нет смысла пытаться передать параметры, если вы можете сделать это через скрытое поле формы
используйте следующее:
<input type='hidden' name='do' value='search' />
Не вижу причин, по которым вы не можете или не должны этого делать. Мой предпочтительный метод его обработки:
<form method='get' action='index.php'> <input name='_search' type='text' value='What are you looking for?' /> <submit name='do' value='Search'> </form>
Парад имени / значения do / search передается нажатием кнопки, и если вы хотите создать несколько действий в форме, вы можете иметь разные значения для каждой кнопки отправки, обрабатывая форму несколькими способами.
if ($_GET['do'] == "Search") { ... do Search ... } else if ($_GET['do'] == "Foo") { ... do Foo ... } else if ($_GET['do'] == "Bar") { ... do Bar ... }
в качестве альтернативы вы можете использовать конструкцию случая:
switch($_GET['do']) { case "Search": ... do Search ... case "Foo": ... do Foo ... break; case "Bar": ... do Bar ... break; }
Обычно я использую post
, но я уверен, что get
будет работать одинаково. Надеюсь это ответит на твой вопрос.
Я думаю, что те же, что и у Теодора, не должно быть причин не отправлять эту переменную в скрытое поле. Но если у вас есть веская причина для этого … Вы пробовали добавить & в конце URL:
<form method='get' action='index.php?do=search&'>