Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选中时,不同的复选框会将用户发送到不同的页面_Php_Javascript_Forms_Checkbox - Fatal编程技术网

Php 选中时,不同的复选框会将用户发送到不同的页面

Php 选中时,不同的复选框会将用户发送到不同的页面,php,javascript,forms,checkbox,Php,Javascript,Forms,Checkbox,我需要一个表单,其中的复选框将打开不同的页面,根据他们的选择,当表单提交 假设我有一个简单的表格: <form action="" method="post"> <input value="1" type="checkbox" name="sign" /> <input value="2" type="checkbox" name="sign" /> <input value="3" type="checkbox" name="sig

我需要一个表单,其中的复选框将打开不同的页面,根据他们的选择,当表单提交

假设我有一个简单的表格:

<form action="" method="post">
<input value="1" type="checkbox" name="sign" />     
<input value="2" type="checkbox" name="sign" />     
<input value="3" type="checkbox" name="sign" />     
<input value="4" type="checkbox" name="sign" />     
<input value="5" type="checkbox" name="sign" />     
<input type="submit" /> 
</form>

当用户检查值1并提交时,他将被重定向到A页。如果用户检查值1和4,他将被重定向到另一页(例如,F页)。如果用户选中2、3和4,他将被重定向到R页,依此类推。。。当用户提交表单时,该表单将有25种不同的组合,因此有25种不同的页面结果

换句话说,当表单以某种方式提交时,系统将读取选中的复选框,并将每个可能的组合与不同的URL关联

能做到吗?如果是,怎么做?有人做过类似的东西吗?我已经搜索了很长一段时间的解决方案,但只找到了稍微相似的解决方案,并不完全符合我的需要,因此希望您能提供帮助。

HTML:

<form action="" method="post">
<input value="1" type="checkbox" name="sign[1]" />     
<input value="2" type="checkbox" name="sign[2]" />     
<input value="3" type="checkbox" name="sign[3]" />     
<input value="4" type="checkbox" name="sign[4]" />     
<input value="5" type="checkbox" name="sign[5]" />     
<input type="submit" /> 
</form>

这可以通过两种方式实现。一种是可以使用javascript拦截表单提交,更改表单“action”的值,然后执行提交

第二种方法可能是将所有这些数据发送到一个脚本,并根据所选的值执行重定向到所需的页面。

From应该如下所示:

<form action="" method="post">
<input value="1" type="checkbox" name="sign[]" />     
<input value="2" type="checkbox" name="sign[]" />     
<input value="3" type="checkbox" name="sign[]" />     
<input value="4" type="checkbox" name="sign[]" />     
<input value="5" type="checkbox" name="sign[]" />     
<input type="submit" /> 
</form>

<>你可以把每一个输入都考虑一下。所以,你总是要考虑5个比特。

然后定义25个条目的关联数组,对应于每个可能的值:

00001
00010
...

var links = {
    "00001" : "www.google.com",

];

然后,当您提交表单时,只需根据值设置
表单的
target
属性。

如果我是您,除了遵循这个想法之外别无选择,我会在jQuery中使用类似的方法(假设您的post Var在您想要访问的页面中处理):


$(“#myForm”).submit(函数(){
var checked_array=新数组();
$(“#myForm输入”)。每个(函数(){
如果($(this).is(“:选中”)
选中的_array.push($(this.attr(“value”));
});
if(选中的数组.索引(2)!=-1和选中的数组.索引(5)!=-1)
(“#myForm”).attr(“action”,“/url1.php”);
否则,如果等。。。
});

切换案例或if-else语句。我会选择if-else。但是会有25个这样的案例,就像你说的。使用Javascript。你不应该使用单选按钮吗?现在用户可以选择多个选项。他想要多个验证。是的,我需要多个选项,所以复选框而不是单选框buttons@Sean-他们是t他做了同样的事情,只是两种不同的方式。这只是个人喜好。是的,我知道他们是一样的……两种方法都有效,所以谢谢
if(!empty($_POST['sign'])) {
    if(in_array(1, $_POST['sign'])) {
        // if just 1, go to page
    } elseif(in_array(1, $_POST['sign']) && in_array(4, $_POST['sign'])) {
        // if 1 and 4, go to page
    }
}
00001
00010
...

var links = {
    "00001" : "www.google.com",

];
<form action="" method="post" id="myForm">
    <input value="1" type="checkbox" name="sign[]" />     
    <input value="2" type="checkbox" name="sign[]" />     
    <input value="3" type="checkbox" name="sign[]" />     
    <input value="4" type="checkbox" name="sign[]" />     
    <input value="5" type="checkbox" name="sign[]" />     
    <input type="submit" /> 
</form>


$("#myForm").submit(function() {
    var checked_array = new Array();
    $("#myForm input").each(function() {
        if ($(this).is(":checked")
            checked_array.push($(this).attr("value"));
    });

    if ( checked_array.indexOf(2) !== -1 && checked_array.indexOf(5) !== -1)
       ("#myForm").attr("action", "/url1.php") ;
    else if etc...
});