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

时间:2012-01-12 19:34:09

标签: php if-statement checkbox

抱歉这个愚蠢的问题,虽然我对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;
}

谢谢。

5 个答案:

答案 0 :(得分:1)

你的代码非常接近,你只需要考虑数组索引。

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

答案 1 :(得分:1)

尝试:

$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;
        }
    }
}

答案 2 :(得分:1)

作为另一种选择,如果您希望根据复选框的值调用函数,则可以执行以下操作...

为简单起见,我将它全部压缩成一个文件,但这是一般的想法...

<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();
            }
        }
    }
?>

答案 3 :(得分:0)

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

希望这会有所帮助。

答案 4 :(得分:0)

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

1)你谈到“第一”和“第四”复选框......但你的代码只显示两个复选框

2)您的示例拼错了“tes2”(因此PHP不会/无法找到它)

3)你应该摆脱所有“die()”条款

建议:

点击此链接:

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