2014-02-18 4 views
0

Почему это не работает?Вставка скрипта php в атрибут действия формы

<form action="<?php echo 'test'; ?>"><input type="submit"></form> 

Почему эхо «тест», я должен был бы поместить PHP в отдельный файл, и указать атрибут действия на него? Если у меня есть несколько форм с короткими PHP-скриптами, могу ли я не просто встраивать их как-то в выполнение задач, а не делать много внешних файлов для этого?

Мое намерение состоит в том, чтобы иметь своего рода панель управления для внесения различных изменений в базу данных.

+0

Как насчет объяснения ПОЧЕМУ это плохой вопрос, а не downvoting? Нет дублированного вопроса, например, код кода, что еще вы хотите? – user3226844

ответ

1

Вы не можете поместить код в атрибут action, это просто не так, как работает HTML.

<form action="index.php"> 
<input type="hidden" name="do" value="dotest"> 

Вам потребуется маршрутизатор в вашем приложении, которое отправляет задания. В этом случае параметр запроса «делать» будет определять, что делать. Код может быть большим оператором switch (не рекомендуется), или вы можете хранить действия в отдельных методах files/classes/class. Вы можете напрямую искать код (file_exists/method_exists/autoloading ...), или вы можете отделить поиск и выполнить предварительную регистрацию и сохранить действия в словаре (array).

Я бы рекомендовал проверить некоторые фреймворки PHP, также получить некоторые идеи. Есть некоторые очень умные маршрутизаторы и абстракции контроллера. Это будет лучше, чем вы можете придумать, особенно если вы неопытный.

Примечание: нет ничего плохого в большом количестве небольших файлов - попробуйте использовать одну точку входа для своего веб-приложения.

+0

У меня нет внешнего файла. Этого я пытаюсь избежать. Я не хочу, чтобы 10 файлов имели длину всего 3 или 4 строки, если я могу разместить их в том же файле, что и форма (ы) – user3226844

+0

. обновлено. –

0

Потому что браузер не имеет и не может заботиться о PHP. Когда браузер получает этот HTML-код:

<form action="<?php echo 'test'; ?>"><input type="submit"></form> 

Что это должно делать с этим? Просто «запустите PHP»? Вы имеете в виду PHP, который настроен и настроен на вашем сервере? Нет, это просто не так, как это работает.

В спецификации HTML указано, что атрибут action указывает на URL, на который браузер отправит данные формы. Затем он полностью доходит до сервера на этом URL-адресе, чтобы что-то с ним делать, и это то, где работает PHP.

Вам также не нужно иметь отдельные физические файлы, вы можете отправлять все формы в один и тот же файл/URL-адрес PHP, который затем определяет, что он получил, и выдает разные вещи в зависимости от этого. Возможно, вы также захотите изучить запросы Javascript и AJAX.

+0

Итак, есть ли альтернатива созданию нескольких файлов PHP? Могу ли я разместить PHP в том же файле в верхней части страницы, а затем заставить действие указать на одну страницу? – user3226844

+0

Да, точно. Никто не сказал, что это должны быть отдельные файлы. Он просто должен быть URL-адресом, и сервер может отвечать всем, что он хочет. Это может быть даже URL-адрес формы. – deceze

+0

Тогда я сделаю это. – user3226844

Смежные вопросы