首页 > 解决方案 > 如果选中复选框,如何增加数据库中的 int 字段?

问题描述

因此,要总结我的问题,当用户输入表单时,我有一个小复选框,当检查时,它应该在数据库中的当前值中添加+1,但是我只是没有掌握要使用的逻辑

数据库

表 - 用户

字段

HTML 复选框

                <div class="form-group">
                    <input type="checkbox" id="shifts_done" name="shifts_done"/>
                </div>

                <!-- Submit form -->
                <br>
                <button class="btn btn-lg btn-primary btn-block" name="create-report" type="submit">Create</button>

PHP

if(isset($_POST['shifts_Done'])) {

$username=mysqli_real_escape_string($conn,$_POST['uid']);
    $shifts_done=mysqli_real_escape_string($conn,$_POST['shifts_done']);


$increment = " UPDATE users SET shifts_done = '".$shifts_done."' WHERE uidUsers = '".$username."'";

}

编辑 - 表格的其余部分

<?php
require 'dbh.inc.php';

if(isset($_POST['shifts_done'])) {

    $username = mysqli_real_escape_string($conn, $_POST['uid']);
    $shifts_done = mysqli_real_escape_string($conn, $_POST['shifts_done']);


    $increment = "UPDATE users SET shifts_done = shifts_done + 1 WHERE uidUsers = '" . $username . "'";
    mysqli_query($conn, $increment);
}

if(isset($_POST['create-submit'])) {


    //Declaração de variáveis
    $username = $_POST['uid'];
    $origin = $_POST['origin'];
    $destination = $_POST['destination'];
    $transport = $_POST['transport'];
    $status = $_POST['status'];
    $date=strtotime($_POST['date']);
    $date=date("Y-m-d",$date);
    $time=strtotime($_POST['time']);
    $time=date('H:i:s',$time);



    //inserts new shift
                $sql = "INSERT INTO shifts (name, origin, destination, transport_number, status, date, time) VALUES (?,?,?,?,?,?,?)";
                $stmt = mysqli_stmt_init($conn);
                if(!mysqli_stmt_prepare($stmt, $sql)) {
                    header("Location: ../shifts.php?error=sqlerror");
                    exit();
                }
                else {
                    mysqli_stmt_bind_param($stmt, "sssssss", $username,$origin, $destination, $transport, $status, $date, $time);
                    mysqli_stmt_execute($stmt);
                    header("Location: ../shifts.php?newrecord=success");
                    exit();

                }


}

现在我真的不知道更新查询是否正确,因为用户名被用作变量来更新另一个字段,但我也不知道如何做我想要的增量部分。

在这两个方面的任何帮助将不胜感激,谢谢。

标签: phphtmlsql

解决方案


解决方案是将您的查询重写为:

$increment = "UPDATE users SET shifts_done = shifts_done + 1 WHERE uidUsers = '".$username."'";

推荐阅读