如何限制直接从MYSQL数据库和PHP创建的检查表中的选择(*而不是手动在HTML*中创建检查表)

如何限制直接从MYSQL数据库和PHP创建的检查表中的选择(*而不是手动在HTML*中创建检查表),php,mysql,database,Php,Mysql,Database,到目前为止,我的代码将mysql表中的数据作为检查表输出到网站上,但我在设置可以勾选的选项数量限制时遇到了问题,即如果我只想勾选5个框中的3个,我如何在php中做到这一点 注意:关于复选框限制的大多数答案都显示了一些示例,其中一个清单是用HTML手动创建的,然后使用Javascript对可以勾选的框的数量进行限制。然而,在我的代码中,情况并非如此;我的代码输出一个清单,该清单不是用HTML手动创建的,而是使用PHP从预设的MYSQL数据库自动创建的(如下所示)。在这种情况下,我如何限制勾选的框?

到目前为止,我的代码将mysql表中的数据作为检查表输出到网站上,但我在设置可以勾选的选项数量限制时遇到了问题,即如果我只想勾选5个框中的3个,我如何在php中做到这一点

注意:关于复选框限制的大多数答案都显示了一些示例,其中一个清单是用HTML手动创建的,然后使用Javascript对可以勾选的框的数量进行限制。然而,在我的代码中,情况并非如此;我的代码输出一个清单,该清单不是用HTML手动创建的,而是使用PHP从预设的MYSQL数据库自动创建的(如下所示)。在这种情况下,我如何限制勾选的框?如有代码的解决方案/示例,将不胜感激

以下是我的PHP代码:

<?php

    $username = "root";
    $password = "";
    $hostname = "localhost";

    $dbname = "major_degrees";
    $str='';

    // Create connection
    $conn = new mysqli($hostname, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT degree_name FROM majors";
    $result = $conn->query($sql);

    $out = '';
    $cnt = 0;
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            $cnt++;
            $out .= '<input id="cb_' .$cnt. '" class="someclass" type="checkbox" />' .$row['degree_name']. '<br/>';
        }
        echo $out;
    } 
    $conn->close();


?>

如果不使用JavaScript,您无法控制用户在客户端做什么,因为JavaScript是控制客户端浏览器体验的编程语言。PHP生成HTML服务器端,然后将其打印出来,但是用户在服务器端所做的事情与服务器端之间没有来回的关系


您可以通过PHP生成列表,然后使用JavaScript控制列表。浏览器必须在PHP输出后(或者更准确地说,在生成列表后)读取JavaScript才能正常工作。您可以从PHP输出JavaScript,或者更好地使用JavaScript AJAX调用PHP列表,然后关联控制器

如果不使用JavaScript,就无法控制用户在客户端做什么,因为JavaScript是控制客户端浏览器体验的编程语言。PHP生成HTML服务器端,然后将其打印出来,但是用户在服务器端所做的事情与服务器端之间没有来回的关系


您可以通过PHP生成列表,然后使用JavaScript控制列表。浏览器必须在PHP输出后(或者更准确地说,在生成列表后)读取JavaScript才能正常工作。您可以从PHP输出JavaScript,或者更好地使用JavaScript AJAX调用PHP列表,然后关联控制器

就像@Shadouts所说的,你不能从PHP控制复选框,你需要Javascript。要创建列表,像在html标记中那样回显查询的输出。出于示例的考虑,我将不包括查询为复选框返回的内容,而是简单的增量数据

<form action="some_file" method="">
    <div id="checkboxes">
    <?php
        for($i = 0; $i < 8; $i++) {
            echo "<input class='checkChange' type='checkbox' name='check' value='ch".($i+1)."'>check ".($i+1)."<br>";
        }
    ?>
    </div>

    <input type="submit" value="Submit">
</form>
让您知道,像
$('.checkChange')
之类的东西都是jQuery选择器。这意味着我们可以通过类、id或其他方式选择一些html元素。要按类选择元素,
+className。通过ID选择元素
#
+ID。现在让我们解码上面的代码示例:

  • 首先,无论何时单击复选框(或者更准确地说是更改),都会调用.change函数:
    $('.checkChange').change
  • $(“#复选框输入:选中”)。每个
    :对于已选中的每个复选框,我们将计数值增加一
  • 如果用户选中了3个复选框,则禁用(
    $(this).attr(“disabled”,true);
    )所有未选中的(
    $('#复选框输入:not(:checked))。每个
    )复选框
  • 如果没有,则启用它们:
    $(this).removeAttr('disabled')
  • 为了在html标记中使用PHP,文件必须是.PHP。因此,文件(比如checkbox.php)如下所示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Checkboxing</title>
    </head>
    <body>
    
    <form action="action.php" method="post">
        <div id="checkboxes">
        <?php
            for($i = 0; $i < 8; $i++) {
                echo "<input class='checkChange' type='checkbox' name='check' value='ch".($i+1)."'>check ".($i+1)."<br>";
            }
        ?>
        </div>
    
        <input type="submit" value="Submit">
    </form>
    
    </body>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
    <script>
        $('.checkChange').change(function() {
            var count = 0;
    
            $('#checkboxes input:checked').each(function() {
                count++;
            });
    
            if (count >= 3) {
                $('#checkboxes input:not(:checked)').each(function() {
                    $(this).attr("disabled", true);
                });
            } else {
                $('#checkboxes input:not(:checked)').each(function() {
                    $(this).removeAttr('disabled');
                });
            }
        });
    </script>
    </html>
    
    
    拳击比赛
    
    正如@Shadouts所说,您无法从PHP控制复选框,您需要Javascript。要创建列表,像在html标记中那样回显查询的输出。出于示例的考虑,我将不包括查询为复选框返回的内容,而是简单的增量数据

    <form action="some_file" method="">
        <div id="checkboxes">
        <?php
            for($i = 0; $i < 8; $i++) {
                echo "<input class='checkChange' type='checkbox' name='check' value='ch".($i+1)."'>check ".($i+1)."<br>";
            }
        ?>
        </div>
    
        <input type="submit" value="Submit">
    </form>
    
    让您知道,像
    $('.checkChange')
    之类的东西都是jQuery选择器。这意味着我们可以通过类、id或其他方式选择一些html元素。要按类选择元素,
    +className。通过ID选择元素
    #
    +ID。现在让我们解码上面的代码示例:

  • 首先,无论何时单击复选框(或者更准确地说是更改),都会调用.change函数:
    $('.checkChange').change
  • $(“#复选框输入:选中”)。每个
    :对于已选中的每个复选框,我们将计数值增加一
  • 如果用户选中了3个复选框,则禁用(
    $(this).attr(“disabled”,true);
    )所有未选中的(
    $('#复选框输入:not(:checked))。每个
    )复选框
  • 如果没有,则启用它们:
    $(this).removeAttr('disabled')
  • 为了在html标记中使用PHP,文件必须是.PHP。因此,文件(比如checkbox.php)如下所示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Checkboxing</title>
    </head>
    <body>
    
    <form action="action.php" method="post">
        <div id="checkboxes">
        <?php
            for($i = 0; $i < 8; $i++) {
                echo "<input class='checkChange' type='checkbox' name='check' value='ch".($i+1)."'>check ".($i+1)."<br>";
            }
        ?>
        </div>
    
        <input type="submit" value="Submit">
    </form>
    
    </body>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
    <script>
        $('.checkChange').change(function() {
            var count = 0;
    
            $('#checkboxes input:checked').each(function() {
                count++;
            });
    
            if (count >= 3) {
                $('#checkboxes input:not(:checked)').each(function() {
                    $(this).attr("disabled", true);
                });
            } else {
                $('#checkboxes input:not(:checked)').each(function() {
                    $(this).removeAttr('disabled');
                });
            }
        });
    </script>
    </html>
    
    
    拳击比赛
    
    我对php、JS、mysql和ajax还比较陌生。。你能举个例子说明我如何通过PHP生成列表并使用JavaScript/Ajax来控制它吗?我对PHP、JS、mysql和Ajax都很陌生。。请给出一个例子,说明我如何通过PHP生成列表,并使用JavaScript/Ajax来控制它。非常感谢您花时间详细解释一切。这真的很有帮助!非常感谢您花时间详细解释一切。这真的很有帮助!