【问题标题】:PHP: How to remove/disable a selection from a checkbox group if the value is already selected and stored in database previouslyPHP:如果该值已被选中并先前存储在数据库中,如何从复选框组中删除/禁用选择
【发布时间】:2017-12-07 08:51:15
【问题描述】:

现在我正在使用 PHP 和 HTML 进行编码


我需要从复选框组中进行选择 它是这样的:

  1. 下拉菜单中的值是从存储在数据库中的表subject 中的值中检索的。因此,复选框选项将显示为(例如)数学、代数、微积分、英语、语言学等。--显示这个没有问题。

    表格主题

    subject_id       subject_name
    ==========       ============
         1            Mathematics
         2            Algebra
         3            Calculus
         4            English
         5            Linguistic
    
  2. 1234563有学生选择了) 示例:

表 student_subject

    student_id       subject_id
    ==========       ===========
        1                 1
        1                 2                                           
        1                 3
        2                 1  
        2                 3   
  1. 现在,学生又来为他的个人资料添加另一个主题。与前面 (1) 中提到的一样,将显示相同的复选框选项,但我希望禁用/删除/不显示已选择的选项,使其无法再次选择以避免冗余。

我真的不知道如何创建这个函数。我知道这里有很多经验丰富的程序员和开发人员,所以我希望你能告诉我正确的方法。非常感谢您的指导。

【问题讨论】:

    标签: javascript php mysql checkbox


    【解决方案1】:

    您不应删除/禁用/不显示现有主题。

    首先,您应该检查student_subject 表的现有行并将其呈现在选中的HTML 复选框中。

    其次,当学生在编辑模式下对学科选择进行更改时,请在循环中检查具有学生和学科 ID 的数据库行。

    如果数据库中没有学生提交的科目 ID,则将该值插入表中。

    如果学生提交的科目 ID 在数据库中可用,则不执行任何操作。

    用数据库检查从提交值中删除的主题,并从数据库中删除。

    如果您想禁用现有科目,如果科目已分配给学生,请在复选框中使用readonly

    【讨论】:

      【解决方案2】:

      这只是一个想法:

      在您的 #2 表将存储 student_id 和 subject_id 上,我认为最好是每当您将值存储到 subject_id 时,您只需通过将其存储在 php 数组中来序列化该值,这样您就可以迭代整个数组,如果该字段是否已检查。

      Json_encode 也很好,因为它是一个字符串,和序列化一样

      例子:

      Student_id       Subject_ID
      999-0518         a:{this is the serialize value }; 
      

      然后当你查询结果时,它会被序列化,然后使用 unserialize 函数并做一个循环来迭代结果,当你 json_encode 时也是如此;只需执行 json_decode() 函数并执行循环。

      【讨论】:

        【解决方案3】:

        您可以使用只选择 ID 不在 student_subject 中的主题的查询。

        它看起来像:

        SELECT * FROM `subject` 
        WHERE `subject_id` NOT IN (
            SELECT `subject_id` FROM `student_subject` WHERE `student_id` = '1'
        )
        

        (如果您不希望这是特定于用户的,可以省略内部的 where 子句)

        然后根据从它返回的数组构建<select> 元素。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-09
          • 2020-02-08
          • 1970-01-01
          • 2011-11-30
          • 1970-01-01
          • 1970-01-01
          • 2013-02-15
          • 1970-01-01
          相关资源
          最近更新 更多