如何限制直接从MYSQL数据库和PHP创建的检查表中的选择(*而不是手动在HTML*中创建检查表)
到目前为止,我的代码将mysql表中的数据作为检查表输出到网站上,但我在设置可以勾选的选项数量限制时遇到了问题,即如果我只想勾选5个框中的3个,我如何在php中做到这一点 注意:关于复选框限制的大多数答案都显示了一些示例,其中一个清单是用HTML手动创建的,然后使用Javascript对可以勾选的框的数量进行限制。然而,在我的代码中,情况并非如此;我的代码输出一个清单,该清单不是用HTML手动创建的,而是使用PHP从预设的MYSQL数据库自动创建的(如下所示)。在这种情况下,我如何限制勾选的框?如有代码的解决方案/示例,将不胜感激 以下是我的PHP代码:如何限制直接从MYSQL数据库和PHP创建的检查表中的选择(*而不是手动在HTML*中创建检查表),php,mysql,database,Php,Mysql,Database,到目前为止,我的代码将mysql表中的数据作为检查表输出到网站上,但我在设置可以勾选的选项数量限制时遇到了问题,即如果我只想勾选5个框中的3个,我如何在php中做到这一点 注意:关于复选框限制的大多数答案都显示了一些示例,其中一个清单是用HTML手动创建的,然后使用Javascript对可以勾选的框的数量进行限制。然而,在我的代码中,情况并非如此;我的代码输出一个清单,该清单不是用HTML手动创建的,而是使用PHP从预设的MYSQL数据库自动创建的(如下所示)。在这种情况下,我如何限制勾选的框?
<?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。现在让我们解码上面的代码示例:
$('.checkChange').change
$(“#复选框输入:选中”)。每个
:对于已选中的每个复选框,我们将计数值增加一$(this).attr(“disabled”,true);
)所有未选中的($('#复选框输入:not(:checked))。每个
)复选框$(this).removeAttr('disabled')代码>
<!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来控制它。非常感谢您花时间详细解释一切。这真的很有帮助!非常感谢您花时间详细解释一切。这真的很有帮助!