【问题标题】:nested for loops, checking checkboxes check boxes values against the database嵌套for循环,检查复选框复选框值对数据库
【发布时间】:2013-12-02 01:29:33
【问题描述】:

我有一个外部 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 语句放在内部第一个循环之外,我会得到正确数量的复选框,但会选中不正确(更少)的框。对于我使用的示例,应选中前两个框。

谢谢

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    只需要在内循环的if条件中加一个break

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

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2013-03-09
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多