php 通过GET提交表单并保留已有的GET参数

sq1bmfud  于 2023-08-02  发布在  PHP
关注(0)|答案(5)|浏览(125)

假设我有一个通过GET发送的表单:

<form method="get" action="/search.php?foo=bar&test=1&something=else">
    <input type="text" name="day" placeholder="day"/>
    <input type="text" name="link" placeholder="link"/>
</form>

字符串
在提交表单并处理数据(仅包括将其保存到文件)后,URL更改为:
search.php?day=test&link=google.com
我应该怎么做才能让URL变成:
/search.php?foo=bar&test=1&something=else&day=test&link= google.com
(* 保留action属性中包含的旧参数。*)

lnvxswe2

lnvxswe21#

表单操作每次都会更改,很难在表单操作中保留旧的GET参数。
但是,您可以使用隐藏字段。
试试这个:

<form method="get" action="/search.php">
    <input type="hidden" name="foo" value="bar"/>      <!-- Add this -->
    <input type="hidden" name="test" value="1"/>        <!-- Add this -->
    <input type="text" name="day" placeholder="day"/>
    <input type="text" name="link" placeholder="link"/>
</form>

字符串

drkbr07n

drkbr07n2#

您可以尝试在提交之前更改操作,这取决于您将如何提交表单。如果您将ID应用到文本中,并将姓名或ID应用到表单中,就可以做到这一点。
超文本标记语言:

<form id="frm" method="get" action="/search.php?foo=bar&test=1&something=else">

    <input type="text" name="day" id="day" placeholder="day"/>
    <input type="text" name="link" id="link" placeholder="link"/>
</form>

字符串
然后使用JavaScript,你可以运行一个函数并更改表单的操作:

var _form = document.getElementById('frm');
var day = document.getElementById('day').value;
var link = document.getElementById('link').value;

_form.action += '&day=' + day + '&link=' + link;
_form.submit();

6tqwzwtp

6tqwzwtp3#

您可以尝试使用隐藏的输入字段。
第一个月

ego6inou

ego6inou4#

如果你首先从get获取变量,然后想将变量添加到第二个表单中,你可以得到这个并创建隐藏在这些get值中的输入字段

现在,当您在get url中提交表单时,您将获得所有您想要的数据

<?php
if($_GET){
    if(isset($_GET['submit1'])){
        $foo = $_GET['foo'];
        $test = $_GET['test'];
        $something =  $_GET['something'];
?>
        <form method="get" action="/search.php">
            <input type="hidden" name="foo" placeholder="foo" value="<?php echo $foo; ?>"/>
            <input type="hidden" name="test" placeholder="test" value="<?php echo $test; ?>"/>
            <input type="hidden" name="something" placeholder="something" value="<?php echo $something; ?>"/>
            <input type="text" name="day" placeholder="day"/>
            <input type="text" name="link" placeholder="link"/>
        </form>
<?php

    }
}

?>

字符串

inkz8wg9

inkz8wg95#

首先显式地添加要发送表单的方法,在本例中是GET。第二个步骤是在操作路由上添加一个斜线,比如“/order.php”或“/payment.php”,以避免相对路由的问题。第三,添加一个隐藏的输入,其中包含您希望通过get方法发送的值,使您的代码更易读。
我希望这对你有帮助。

<?php $row = ['Name' => 'My Name']; ?>

<form action="/order.php" method="GET">
    <input type="hidden" name="product" value="<?=$row['Name']?>">
    <input type="submit" value="Submit" class="btn btn-outline-warning">
</form>

字符串

相关问题