如何使用PHP

时间:2017-12-06 12:39:20

标签: php html mysqli

我有一个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个都表示没有被选中。

2 个答案:

答案 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 
            } 
        } 
        ?>