PHP if заявление с ошибкой флажка - PullRequest
1 голос
/ 12 января 2012

Извините за глупый вопрос, хотя я немного новичок в PHP.Я пробовал много других способов сделать это, но просто не мог заставить это работать ... На самом деле я хочу, чтобы я мог иметь различные функции, прикрепленные к каждому флажку, который, когда пользователь выбирает флажок илидругой, и нажимает кнопку отправки, он запускает определенные функции.Но я не могу заставить флажки работать.Он либо работает только с одним выбранным, либо, если я проверяю 1-й, а затем 4-й, он выводит 4-й код.Есть ли другие способы сделать это?Вот моя попытка:

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 ]

1 голос
/ 12 января 2012

В качестве другого варианта, если вы хотите вызывать функции на основе значения флажка, вы можете сделать что-то вроде этого ...

Для простоты я сжал все в один файл, но это общая идея ...

<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();
            }
        }
    }
?>
1 голос
/ 12 января 2012

Попробуйте:

$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;
        }
    }
}
1 голос
/ 12 января 2012

Вы довольно близки к своему коду как есть, вам просто нужно учитывать индексы массива.

for ($i = 0, $length = count($val); $i < $length; $i++)
{
    // add [$i] to $val to access an index of $val
    if ($val[$i] == 'test1')
0 голосов
/ 12 января 2012

Есть пара проблем, которые, вероятно, не имеют ничего общего с реальной проблемой:

1) Вы говорите о флажках «1-й» и «4-й» ... но ваш код показывает только два флажка

2) Ваш пример с ошибками "tes2" (поэтому PHP не может / не может его найти)

3) Вероятно, вам следует избавиться от всех предложений "die ()"

SUGGESTION:

Проверить эту ссылку:

http://www.html -form-guide.com / PHP-формы / PHP форм-checkbox.html

0 голосов
/ 12 января 2012

Попробуйте изменить имена с test1[] на test1 в 1.php, а также проверьте опечатку в строке 7-2ph.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...