在HTML/PHP中的表单subit之后重新加载相同的页面


Reload same page after form subit in HTML/PHP

我使用get方法来选择带有年份和月份的选项。提交此选择后的URL如下所示:

www.mywebsite.com/transactions/?yr=2013&mo=6

我可以重新加载此页面,并且所选内容仍然存在。然而,当我提交一个表格来添加记录时,页面会重新加载如下:

www.mywebsite.com/transactions/?#

选择已经不见了。提交表单后,我如何保持选择并重新加载完全相同的url?

我正在使用以下代码:

<form action="?" method="post">
<SELECT options with different inputs>
<input type="submit" value="Add">
</form>

在我的PHP中,它看起来如下:

header('Location: ?yr='. $GLOBALS['yearselect'] .'&mo=' . $GLOBALS['monthselect']);

它在提交后创建正确的URL,只有全局变量不更新。我定义如下:

$GLOBALS['monthselect'] = date('m');
$GLOBALS['yearselect'] = date('Y');

当我选择一个选项时,它们会发生变化。

您可以遍历提交的变量并将它们添加到HTML代码中。

<form action="target.php?var1=<?= $_GET["value2"]; ?>&var2=value2" method="get">

或者只在action=""中使用$_SERVER['REQUEST_URI']

您的表单元素可能有一个属性action="#"。您可以将其替换为原始请求uri(假设您使用POST方法,如果您使用GET,则表单的action属性中的查询参数将在大多数浏览器中被覆盖

<form method="POST" action="<?= $_SERVER['REQUEST_URI'] ?>">your form</form>

在您的PHP代码中,通过get方法获取值后,使用header()函数作为:

header("Location: www.mywebsite.com/transactions/?yr=2013&mo=6");

它将重定向到带有表单的页面。

编辑:

这是您需要的示例代码:

<?php
$years=array(1999,2000,2001,2002,2003,2004);
if(isset($_POST['year']))
{
/*
Do your coding here

*/
echo <<<EOT
<form action='{$_SERVER['PHP_SELF']}' method='POST'>
<select name='year'>
EOT;
    for($i=0;$i<6;$i++)
    {
        if($years[$i]==$_POST['year'])
            echo "<option value='{$years[$i]}' selected='selected' >{$years[$i]}</option>";
        else
            echo "<option value='{$years[$i]}'>{$years[$i]}</option>";
    }
echo <<<EOT
</select>
<input type='submit' value='Add'>
</form>
EOT;
}
else
{
echo <<<EOT
<form action='{$_SERVER['PHP_SELF']}' method='POST'>
<select name='year'>
EOT;
    for($i=0;$i<6;$i++)
    {
            echo "<option value='{$years[$i]}'>{$years[$i]}</option>";
    }
echo <<<EOT
</select>
<input type='submit' value='Add'>
</form>
EOT;
}
?>

它将在第一次打印下拉列表的第一个值,然后保存这些值。

表单标记中的action属性应该设置为处理请求的页面,我认为您已经设置了action='#'。请指定更多详细信息。这样我就可以帮助u