Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交表单onchange复选框并更新mysql数据库_Javascript_Php_Mysql_Database_Onchange - Fatal编程技术网

Javascript 提交表单onchange复选框并更新mysql数据库

Javascript 提交表单onchange复选框并更新mysql数据库,javascript,php,mysql,database,onchange,Javascript,Php,Mysql,Database,Onchange,您可以使用$con->query(“从用户选择id、状态”)获取所有可能的值,而不是通过$\u POST['chkStatus']循环这些值。然后,如果为相应的值设置了$\u POST['chkStatus'],则可以进行检查。此时将所有复选框值发送到服务器。您可以只发送感兴趣的值。快速而肮脏的解决方案: 将您的复选框拆分为单独的表单,并仅提交您需要的表单: <?php if(isset($_POST['chkStatus'])){ for ($i=0;$i<count($_

您可以使用
$con->query(“从用户选择id、状态”)
获取所有可能的值,而不是通过
$\u POST['chkStatus']
循环这些值。然后,如果为相应的值设置了
$\u POST['chkStatus']
,则可以进行检查。

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

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

    <?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>
    
    while($UsersRow=$stmtUsers->fetch()){
    echo“$UsersRow[名称]
    ";
    
  • inclick
    属性中,选中复选框的id或名称并添加到请求


  • 对于以后的帖子,请参阅,不要使用HTML格式化代码。您的代码容易受到SQL注入攻击。您应该使用或准备中所述的语句。有什么问题吗?我希望避免查询在所有记录中运行。如何运行SQL where id=onchange复选框?
    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>";