发送给自己时<form action =“?”>做什么?

时间:2015-05-26 08:51:01

标签: html forms

我正在关注ninja的php mysql新手:

下面的表格模板

<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()';

'?'是什么?做表单动作

3 个答案:

答案 0 :(得分:17)

?用于将URL路径与查询字符串分开。在这种情况下,查询字符串为空,因此它与action=""一样。

但是,有区别。如果使用具有查询字符串的URL加载原始页面,action=""将使用相同的查询字符串提交表单。在URL中放置显式?会将原始查询字符串替换为此空字符串。

答案 1 :(得分:2)

它使用当前URL和空查询字符串作为表单的操作。空查询字符串,表示根本没有查询字符串。

答案 2 :(得分:1)

这样表单会将数据发布到某个位置“?”,如果你的文件包含PHP代码,则不需要任何action="?"你可以将其删除,表单将自行发布并替换使用isset($_POST["joketext"]) isset($_POST["submit"])来检测已点击的提交按钮而不是存在的笑话文字

就像这样 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()';