1

我正在使用 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');

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

4

4 回答 4

1

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

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

或者只是$_SERVER['REQUEST_URI']在里面使用action=""

于 2013-06-23T16:47:28.457 回答
0

在您的 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;
}

?>

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

于 2013-06-23T14:36:14.560 回答
0

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

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

于 2013-06-23T14:40:24.920 回答
-1

内部表单标记操作属性应该设置为处理您的请求的页面,我认为您已经设置了 action='#' 。请指定更多详细信息。以便我可以帮助你

于 2013-06-23T14:39:44.660 回答