ホームページ >バックエンド開発 >PHPチュートリアル >表单 - 关于php $_GET接收多重参数的问题

表单 - 关于php $_GET接收多重参数的问题

WBOY
WBOYオリジナル
2016-06-06 20:50:571053ブラウズ

一个页面有两个

表单都是用get提交。
其中第一个表单的参数有$_GET['color']、$_GET['size']
第二个表单的参数有$_GET['page']

我希望实现:

第一个表单提交后得到?color=red&size=7
再提交第二个表单,能得到?color=red&size=7&page=3,反过来亦然

现在问题就是如果提交了其中任何一个表单,再提交另一个就会重置url

比如上面的场景,提交第二个表单的时候,只能得到?page=3

回复内容:

一个页面有两个

表单都是用get提交。
其中第一个表单的参数有$_GET['color']、$_GET['size']
第二个表单的参数有$_GET['page']

我希望实现:

第一个表单提交后得到?color=red&size=7
再提交第二个表单,能得到?color=red&size=7&page=3,反过来亦然

现在问题就是如果提交了其中任何一个表单,再提交另一个就会重置url

比如上面的场景,提交第二个表单的时候,只能得到?page=3

第二个表单用type=hidden的input中转参数

额,有点被你的需求搞的晕晕的了。话说其实你可以考虑用javascript的哦,因为你是get嘛,直接跳到相应的网址去不就好了么。下面是例子:

<script type="text/javascript">
    var color = document.getElementsByName('color')[0], size = document.getElementsByName('size')[0], page = document.getElementsByName('page')[0];
    document.getElementById('#input1').onclick = function() {
        window.location.href = '?color='+color+'&size='+size;
    }
    document.getElementById('input2').onclick = function() {
        window.location.href = '?color='+color+'&size='+size+'&page='+page;
    }
</script>

如果你想要保存input的值的话我觉得你可以考虑页面在新窗口中打开,就是说把window.location.href换成window.open这样,之前输入的值就还在了。当然,你还可以使用COOKIES来保存当前输入的值,这样你在一定时间内重新刷新了页面值也还是保存着的。简单的操作是这样的:

<script type="text/javascript">
    //setcookies函数和getcookies函数是从w3school上手动拷贝过来的
    //setcookies()用来设置cookies
    function setcookies(name, value, expiredays) {
        var exdate = new Date();
        exdate.setDate(exdate.getDate() + expiredays)
        document.coolie = name + '=' + escape(value) + ((expiredays == null) ? '' : ';expires='+exdate.toGMTString());
     }
     //getcookies用来获取cookies,如果cookies不存在则返回空
     function getcookies(name) {
         if(document.cookie.length>0) {
             start = document.cookie.indexOf(name+'=');
             if(start != -1) {
                 start += name.length+1;
                 end = document.cookie.indexOf(';', start);
                 if(end == -1) {
                     end = document.cookie.length;
                 }
                 return unescape(document.cookie.substring(start, end);
             }
         }
         return "";
     }
     //沿用了上面的代码,没有再定义color, size, page三个变量了
     document.body.onload = function() {
         //input多的话可以考虑是循环~
         color.value = getcookies('color');
         size.value = getcookies('size');
         page.value = getcookies('page');
     }
     function setall() {
         setcookies('color', color.value, 7);
         setcookies('size', size.value, 7);
         setcookies('page', page.value, 7);
     }
     document.getElementById('input1').onclick = function() {
         setall();
     }
     document.getElementById('input2').onclick = function() {
         setall();
     }
</script>

思路大概就是这样子的吧,代码是现打的,没有测试过,不保证正确性就是,不过思路应该表示的比较清楚了。

你可以两个表单内都有这三个元素,隐藏起来不想显示出来的。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。