打印表单后立即提交表单


Submit a form instantly after it's been printed

我正在构建一个同时需要GET和POST变量的Web应用程序。get 变量将保存日期,并据此更改列出的订单。POST 变量用于将表单数据提交到数据库(我在同一页面上有输出和输入)。

由于一次只能使用一个 HTTP 方法,我认为我需要以以下方式使用 POST 才能读取两个变量:

<form method="POST" action="index.php?date=foo"></form>

如果没有设置日期,这就是我将日期设置为今天日期的方式:

if(!isset($_GET["date"])) {
        header("location: index.php?date=". date('Y-m-d'));
    }

..但此重定向使用 GET,因此这不是一个选项。

我尝试了以下方法:

if(!isset($_GET["date"])) {
        echo '
            <form method="POST" action="'.$_SERVER["PHP_SELFT"].'?date='.date("Y-m-d").'"></form>
        ';
    }

这没问题,但表单需要表现为重定向,因此在回显后,需要自动提交。

我怎样才能做到这一点?

如果可能的话,我也愿意接受以其他方式实现此功能的建议。

使用 Javascript 可能是这样的:

为表单命名:

if(!isset($_GET["date"])) {
        echo '
            <form name="MyForm" method="POST" action="'.$_SERVER["PHP_SELFT"].'?date='.date("Y-m-d").'"></form>
        ';
    }

然后你可以用JavaScript简单地提交这样的表格:

document.MyForm.submit();

在我看来,你不需要Javascript:

 <form name="MyForm" method="POST" action="<?=$_SERVER["PHP_SELFT"]?>?date='<?=(isset($_GET['date'])) ? $_GET['date'] : date("Y-m-d")?>"></form>

它将日期放在 URL 中。如果确实设置了 $_GET['date'],它将 $_GET['date'] 设置为日期。否则,它将给出当前日期。

希望这有帮助! :)