我有一个PHP页面从数据库中提取手机。根据数据库中的手机数量,PHP页面将确定要创建的字段数。我有一个会话,只允许那些登录,能够编辑和访问某些功能的人。
我希望复选框用1(作为活动)和0(作为非活动)设备更新数据库,这样我就能只显示那些活动的数据。
编辑:session_start();在header.php中的每个页面都连接到每个页面的顶部。我把它留在了代码中。
phones.php
<?php
if (isset($_SESSION['u_name'])) {
echo ' <button type="submit" name="submit"
form="activeForm">Save</button>';
}
for($x = 1; $x <= deviceCount("phones"); $x++) {
?>
</section>
<?php
if (isset($_SESSION['u_name'])) {
?>
<form id="activeForm" method="POST" action="save.php">
<input type="checkbox" echo ' name="active'.$x.'"';?>>
</form>
<?php
}
}
?>
下面是我的PHP。我想检查是否选中了每个复选框。我遇到的问题是,在选中第一个复选框后,其余部分始终未被选中。
save.php
<?php
if (isset($_POST['submit'])) {
include_once 'connect.inc.php';
$query = "SELECT * FROM phones";
if ($result=mysqli_query($conn, $query)) {
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
}
for($x = 1; $x < $rowcount + 1; $x++) {
$select = 'active'.$x;
if (isset($_POST[$select])) {
$sql = "UPDATE phones SET active='1' WHERE id=$x";
mysqli_query($conn, $sql);
} else {
$sql = "UPDATE phones SET active='0' WHERE id=$x";
mysqli_query($conn, $sql);
}
}
}
假设我有4台设备。第一个复选框是响应式的,然而,接下来的3个都表示没有被选中。
答案 0 :(得分:0)
1.您需要将表单代码放在循环之外。
2.将输入名称用作数组类型
3.您需要session_start();
4.基于数组类型名称相应更改php代码。
如下所示: -
<强> HTML: - 强>
<form id="activeForm" method="POST" action="save.php">
<?php
session_start();//needed
if (isset($_SESSION['u_name'])) {
for($x = 1; $x <= deviceCount("phones"); $x++) {
?>
<input type="checkbox" name="active[<?php echo $x;?>]" />
<?php
}
}
?>
<button type="submit" name="submit">Save</button>
</form>
<强> PHP: - 强>
<?php
if (isset($_POST['submit'])) {
include_once 'connect.inc.php';
foreach($_POST['active'] as $key =>$x) {
if ($x) {
$sql = "UPDATE phones SET active='1' WHERE id=$key";
mysqli_query($conn, $sql);
} else {
$sql = "UPDATE phones SET active='0' WHERE id=$key";
mysqli_query($conn, $sql);
}
}
}
答案 1 :(得分:0)
<强> phones.php 强>
<?php
// you need first start session
session_start();
if (isset($_SESSION['u_name'])) {
echo ' <button type="submit" name="submit"
form="activeForm">Save</button>';
}
for($x = 1; $x <= deviceCount("phones"); $x++) {
?>
</section>
<?php
if (isset($_SESSION['u_name'])) {
?>
<form id="activeForm" method="POST" action="save.php">
<input type="checkbox" name="active<?= $x ?>" >
</form>
<?php
}
}
?>