【问题标题】:Using Checkboxes to Update a MySql Database使用复选框更新 MySql 数据库
【发布时间】:2017-06-06 14:42:36
【问题描述】:

好吧,我知道我可能会因为问这个问题而受到抨击……我接触 PHP 和 MySql 已经有 5 到 6 年了,所以我想我可能想太多了。

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

条目(复选框)的数量将是静态数量将是静态的,所以我认为不需要 foreach 循环,我或多或少地试图记忆如何使用 PHP,而且我没有太多运气阅读关于SO的一大堆答案,这有点不得不处理我正在尝试做的事情。

任何帮助将不胜感激。

表格:

<?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

【问题讨论】:

    标签: php mysql forms checkbox sql-update


    【解决方案1】:

    使用 jQuery 和 Ajax 将轻松解决。

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

    现在在用户检查时发送 ajax 调用,其中 update_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() {
                    }
                });
    
                }
          });
    

    希望对你有帮助。

    【讨论】:

    • 虽然它可能会回答有关如何返回页面的问题,但它根本不会更新数据库。我还想知道为什么您要为每个复选框添加一个类,而我只能调用一个 input[type=checkbox] 以及您为什么要调用警报,何时我应该调用 console.log()。我的更新脚本是最需要注意的,我上面已经说明了。
    猜你喜欢
    • 2012-08-16
    • 2016-12-14
    • 2012-06-03
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多