【问题标题】:Submit form onchange checkbox and update mysql db提交表单 onchange 复选框并更新 mysql db
【发布时间】:2017-04-05 14:57:13
【问题描述】:
<?php
if(isset($_POST['chkStatus'])){
    for ($i=0;$i<count($_POST['chkStatus']);$i++) {
        $count = count($_POST['chkStatus']);
        list($txtClientId, $txStatusValue) = explode('-', $_POST['chkStatus'][$i], 2);
        $stmtChkStatus=$con->query("SELECT id,status FROM users WHERE id=$txtClientId");
        $SRow = $stmtChkStatus->fetch();
        if($SRow['status']!=$txStatusValue) {
            if($txStatusValue==0) $stmtStatus=$con->query("UPDATE users SET status='0' WHERE id=$txtClientId");
            else $stmtStatus=$con->query("UPDATE users SET status='1' WHERE id=$txtClientId");
        }
    }
}
?>

<html>
    <body>
        <dl>
            <?php $stmtUsers=$con->query("SELECT id,status FROM users");
            while($UsersRow = $stmtUsers->fetch()){
                echo "<dt>$UsersRow[name]</dt>
                <dd><input type='checkbox' name='chkStatus[]' value='$UsersRow[id]-$UsersRow[status]'";
                if($CRow['status']==0) echo " checked";
                echo " onchange='this.form.submit()'>
                </dd>";
            ?>
        </dl>
    </body>
</html>

我的代码的问题是它只执行选中的复选框。我需要一个代码来更改我单击的复选框的 SQL DB 中的状态(onchange)。

【问题讨论】:

标签: javascript php mysql database onchange


【解决方案1】:

您可以使用$con-&gt;query("SELECT id,status FROM users") 获取所有可能的值,而不是循环遍历$_POST['chkStatus'] 并遍历这些值。然后,您可以检查是否为相应的值设置了 $_POST['chkStatus']

【讨论】:

  • 我想避免在所有记录中运行查询。我怎样才能运行 id= onchange 复选框的 sql?
【解决方案2】:

此刻,您将所有复选框值发送到服务器。您只能发送感兴趣的值。快速而肮脏的解决方案:

  1. 将您的复选框拆分为单独的表单并仅提交您需要的表单:

    while($UsersRow = $stmtUsers->fetch()){
            echo "<dt>$UsersRow[name]</dt>
       <form .... >  <!-- Here required attributes  -->
            <dd><input type='checkbox' name='chkStatus[]' value='$UsersRow[id]-$UsersRow[status]'";
            if($CRow['status']==0) echo " checked";
            echo " onchange='this.form.submit()'>
       </form>
            </dd>";
    
  2. inclick 属性中获取复选框的 id 或名称并添加到请求中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多