带有复选框错误的PHP if语句


PHP if statement with checkbox error

很抱歉问了这个愚蠢的问题,尽管我对PHP有点陌生。我尝试了很多其他方法来做到这一点,但根本无法实现。。。事实上,我希望它能让我在每个复选框上都附加不同的功能,当用户选择一个或另一个复选框并单击提交按钮时,它会触发特定的功能。但我无法使复选框工作。它要么只选择一个,要么如果我先检查第一个,然后检查第四个,它就会输出第四个的代码。还有其他方法吗?这是我的尝试:

1.php

<form method="POST" action="2.php">
<input type="checkbox" name="test[]" value="test1" />test1<br />
<input type="checkbox" name="test[]" value="test2" />test2<br />
<input type="submit" name="submit" value="submit" />
</form>

2.php

$val = $_POST['test'];
if(isset($val)==true){
    for($i = 0 ; $i<count($val) ; $i++){
        if($val=='test1'){
            echo $val;
            die();
        }elseif($val=='test2'){
            echo $val;
            die();
        }else{
            echo "fail";
            die();
        }
    }
}else{
    return false;
}

谢谢。

尝试:

$vals = $_POST['test'];
$valsCount = count($vals);
if ($valsCount > 0) {
    foreach ($vals as $val) {
        switch ($val) {
            case 'test1':
                echo $val;
                break;
            case 'test2':
                echo $val;
                break;
            default:
                echo 'Fail';
                break;
        }
    }
}

作为另一个选项,如果您希望根据复选框的值调用函数,您可以执行以下操作。。。

为了简单起见,我已经将其全部压缩到一个文件中,但这是一般的想法。。。

<form method="post" action="<?php echo $_SREVER['PHP_SELF']; ?>">
    <input type="checkbox" name="boxes[]" value="box1">Box 1</input><br />
    <input type="checkbox" name="boxes[]" value="box2">Box 2</input><br />
    <input type="checkbox" name="boxes[]" value="box3">Box 3</input><br />
    <input type="checkbox" name="boxes[]" value="box4">Box 4</input><br />
    <input type="checkbox" name="boxes[]" value="box5">Box 5</input><br />
    <input type="submit" value="Go!" />
</form>
<?php
    class boxProcessor
    {
        public function box1()
        {
            echo "<p>You've found box 1.</p>";
        }
        public function box2()
        {
            echo "<p>You've found box 2.</p>";
        }
        public function box3()
        {
            echo "<p>You've found box 3.</p>";
        }
        public function box4()
        {
            echo "<p>You've found box 4.</p>";
        }
        public function box5()
        {
            echo "<p>You've found box 5.</p>";
        }
    }
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $boxes = $_POST['boxes'];
        if(empty($boxes)){
            echo "<p>Nothing to do ...</p>";
        } else {
            $proc = new boxProcessor();
            foreach($boxes as $box){
                $proc->$box();
            }
        }
    }
?>

您的代码已经非常接近了,只需要考虑数组索引。

for ($i = 0, $length = count($val); $i < $length; $i++)
{
    // add [$i] to $val to access an index of $val
    if ($val[$i] == 'test1')

尝试在1.php中将名称从test1[]更改为test1,并检查第7-2.php行的拼写错误。

希望这能有所帮助。

有几个问题可能与真正的问题无关:

1) 你说的是"第一"answers"第四"复选框。。。但是你的代码只显示两个复选框

2) 您的示例拼错了"tes2"(因此PHP找不到)

3) 你可能应该去掉中所有的"die()"子句

建议:

查看此链接:

http://www.html-form-guide.com/php-form/php-form-checkbox.html