嵌套for循环,检查复选框对数据库的复选框值

时间:2013-12-02 01:29:34

标签: php mysql sql

我有一个外部for循环,它根据SQL表的字段创建一个表单。它工作正常,放置正确数量的输入元素与相关的名称,ID等...顺便说一句,这些输入元素是用于选择科目,如数学,科学等...

为了检查并查看是否应该检查这些框,我查询另一个名为subject_teachers的SQL表,其中每位教师在给定唯一ID的情况下报告与不同主题的关系。这是一个多对多的表,因为任何给定的老师都可以教授许多不同的科目,任何科目,并由许多老师教授。在编写内部for循环以检查复选框时,我得到了正确数量的复选框,但现在我打印了两倍的科目,即代替数学,科学,英语,它打印数学数学,科学科学,英语英语

这是我写的:

for ($i = 0; $i < $subjects_num;$i++)
{

    for ($j = 0; $j < $subjects_taught;$j++)
    {
        if ($all_subjects[$i]['subject_id'] == $this_user[$j]['subject_id'])
        {
            $checked = "checked";

        }
        else
        {
            $checked = "";

        }

        echo "<label class='checkbox-inline'><input type='checkbox' name='subject' id=".$all_subjects[$i]['subject_id']." value=".$all_subjects[$i]['subject_id']." . $checked .>".$all_subjects[$i]['subject_en_name']."</label>";


    }


}

如果我将echo语句放在内部第一个循环之外,我会得到正确数量的复选框,但检查了不正确的(较少)框。对于我正在使用的示例,应检查前两个框。

由于

1 个答案:

答案 0 :(得分:0)

只需要在内循环的if条件中添加中断

if ($all_subjects[$i]['subject_id'] == $this_user[$j]['subject_id'])
   {
       $checked = "checked";
       break;
   }