Что делает <form action = "?" > При отправке в себя?
Я следую за php mysql новичком в ninja:
шаблон формы ниже
<form action="?" method="post">
<div>
<label for="joketext">Type your joke here:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
</div>
<div><input type="submit" value="Add"></div>
</form>
Часть контроллера PHP:
if(isset($_POST['joketext'])) //insert block
{
try
{ //prepared starement
$sql = 'INSERT INTO joke SET
joketext = :joketext,
jokedate = CURDATE()';
Что означает '?' do в форме action
Ответы
Ответ 1
?
используется для разделения пути URL-адреса из строки запроса. В этом случае строка запроса пуста, поэтому она такая же, как если бы она была action=""
.
Однако есть разница. Если исходная страница была загружена с использованием URL-адреса с строкой запроса, action=""
отправит форму с той же строкой запроса. Помещение явного ?
в URL-адрес заменяет исходную строку запроса этим пустым.
Ответ 2
Он использует текущий URL-адрес с пустой строкой запроса как действие формы. Пустая строка запроса, которая вообще не содержит строку запроса.
Ответ 3
Таким образом, форма отправит данные в папку "?", если ваш файл содержит код PHP, вам не понадобится action="?"
. Вы можете удалить его, форма будет публиковать его самостоятельно и заменить isset($_POST["joketext"])
с помощью isset($_POST["submit"])
для обнаружения кнопки отправки, на которую было нажата кнопка joketext,
это будет как это
HTML:
<form method="post">
<div>
<label for="joketext">Type your joke here:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
</div>
<div><input type="submit" name="submit" value="Add"></div>
PHP:
if(isset($_POST['submit'])) //insert block
{
try
{ //prepared starement
$sql = 'INSERT INTO joke SET
joketext = :joketext,
jokedate = CURDATE()';