使用复选框更新MySql数据库

时间:2017-01-21 19:21:40

标签: php mysql forms checkbox sql-update

好的,我知道我可能会因为这个问题而受到抨击......自从我接触过PHP和MySql以来已经有5到6年了,所以我想我可能会过度思考这一切

我有一个HTML表单,这是一系列复选框,通过单击一个,我希望它将它在数据库中的相对条目设置为0或1.更新完成后,它返回如果需要,我可以再次更改设置。

条目数量(复选框)将是一个静态的静态数量,所以我不认为foreach循环是必要的,我或多或少试图慢慢记忆如何与PHP一起工作,我没有太多的运气阅读散落在一堆乱七八糟的答案,这有点必须处理我想要做的事情。

非常感谢任何帮助。

FORM:

<?php

 require "config.php";

 $db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
 mysql_select_db($db_name) or die(mysql_error());

 $query = "SELECT * FROM roster";
 $result = mysql_query($query);

?>
<form action="update.php"  method="POST">
<?php

        while( $row = mysql_fetch_array($result) ){
            $active = $row['active'];
            $name = $row['name'];
            $class = $row['class'];
            $value = '0';

            if ($active == '1'){
                $value = '0';
            } else {
                $value = '1';
            }

            echo "<label class='switch'><input type='checkbox' name='".$class."' value='". $value."'";

            if($active == '1'){
                echo "checked='checked'";
            }

            echo "/><div class='slider'></div><span>" . $name . "</span></label>";
        }

 mysql_close();
 ?>
<input type="submit" class="submit" value="Update Active Roster">
</form> 

Update.php(到目前为止) - 这是我需要帮助的地方,我认为

<?php
require "config.php";

$db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());

$checkbox = $_POST['activate'];
for($i = 1; $i < sizeof($checkbox)+1; $i++){
    $query = "UPDATE roster SET active='".$checkbox[$i]."' WHERE id='".$i."'";
    echo "active='".$checkbox[$i]."' WHERE id='".$i."'";
    mysql_query($query) or die(mysql_error());
}

?>

MySQL数据库

id   class      name         active
0    thisdude   This Dude    0
1    thatguy    That Guy     0
2    somechick  Some Chick   0

1 个答案:

答案 0 :(得分:-1)

使用jQuery和Ajax可以轻松解决它。

<input type='checkbox' name='".$class."' value='". $value."'"; class="mycheckbox" />

现在在用户检查时发送ajax调用,其中up​​date_datase.php文件可以包含更新查询。

$('.mycheckbox').click(function() {
    alert($(this).attr("value"));  //-->this will alert value that will be update to DB.
       if(this.checked){
            $.ajax({
                type: "POST",
                url: 'update_databse.php',
                data: $(this).attr("value"),
                success: function(data) {
                    alert('DB updated');
                },
                 error: function() {
                    alert('it broke');
                },
                complete: function() {
                }
            });

            }
      });

我希望它有所帮助。