在foreach之后为多个复选框PHP返回不同的输入

时间:2014-06-09 15:32:26

标签: php mysql checkbox input foreach

我有一个用于多个复选框条目的表单。

我可以使用foreach函数循环访问数据。

foreach($_POST['competition'] as $value) {
    echo "Value = $value <br>";
}

<input type="checkbox" name="competition[]" value="comp 1">
<input type="checkbox" name="competition[]" value="comp 2">
<input type="checkbox" name="competition[]" value="comp 3">

这将完全返回我需要的内容,但是一些比赛将有一个输入字段用于答案。

<label for="text">Answer <strong>A, B or C </strong></label>
<input type="text" name="answer1" value="" />
<input type="checkbox" name="competition[]" value="comp 1">

<input type="checkbox" name="competition[]" value="comp 2">

<label for="text">Answer <strong>A, B or C </strong></label>
<input type="text" name="answer2" value="" />
<input type="checkbox" name="competition[]" value="comp 3">

如果有人勾选进入&amp;在回答中写道,我将如何循环并确保将正确的答案返回到“foreach”(假设他们已在输入字段中输入内容)

我想看看

Value = comp1 - Answer = $answer1
Value = comp2 
Value = comp3 - Answer = $answer3

如果在输入字段中输入了某些内容,请在我使用foreach $_POST['comp']

循环时将其返回

1 个答案:

答案 0 :(得分:0)

你可能不得不分解并重命名这里的一些字段:

<label for="text">Answer <strong>A, B or C </strong></label>
<input type="text" name="answer1" value="" />
<input type="checkbox" name="answer_1_competition[]" value="comp 1">

<input type="checkbox" name="answer_1_competition[]" value="comp 2">

<label for="text">Answer <strong>A, B or C </strong></label>
<input type="text" name="answer2" value="" />
<input type="checkbox" name="answer_2_competition[]" value="comp 1">

<?php

$answer_keys = array(1, 2);
$answers = array();

foreach($answer_keys as $index)
{
    $answers[$index] = array(
        'answer' => '',
        'competition' => array(),
    );

    if(isset($_POST['answer' . $index]))
        $answers[$index]['answer'] = $_POST['answer' . $index];

    if(isset($_POST['answer_' . $index . '_competition']))
        foreach($_POST['answer_' . $index . '_competition'] as $comp)
            $answers[$index]['competition'][] = $comp;
}

print_r($answers);

/*
* Should look something like
* 
* Array(
*   1 => array(
*     'answer' => 'Something',
*     'competition' => array(
*        'comp1',
*     )
*   ),
*   etc
* )
*
*/

这就是我所拥有的,但我不喜欢它。但是,我不确定解决这个问题的最佳方法。有关文本和复选框如何相互关联的更多详细信息可能有所帮助。