簡體   English   中英

無法將數據保存到Mysql數據庫

[英]Not Able to save data to Mysql database

我正在開發一個簡單的出勤系統,該系統中的出勤由一位老師負責,然后保存到數據庫中。 但是,將數據保存到數據庫時遇到了問題。 當我單擊“提交出勤”時,數據將不會提交到數據庫。 我使用register.php注冊學生,但參加了不同的文件。 下面是我用來提交的代碼。 有人能幫我嗎? 謝謝。

抱歉,我共享的文件應該將數據保存到mysql數據庫。 以下是獲取數據的文件,但保存時仍然有問題。

這是參加出勤老師的老師文件。

 <?php
    $pageTitle = 'Take Attendance';
    include('header.php');
    require("db-connect.php");
    if(!(isset($_COOKIE['teacher']) && $_COOKIE['teacher']==1)){
        echo 'Only teachers can create new teachers and students.';
        $conn->close();
        include('footer.php');
        exit;
    }
    //get session count
    $query = "SELECT * FROM attendance";
    $result = $conn->query($query);
    $sessionCount=0;
    setcookie('sessionCount', ++$sessionCount);
    if(mysqli_num_rows($result)>0){
        while($row = $result->fetch_assoc()){
            $sessionCount = $row['session'];
            setcookie('sessionCount', ++$sessionCount);
        }
    }

    if(isset($_GET['class']) && !empty($_GET['class'])){
        $whichClass = $_GET['class'];
        $whichClassSQL = "AND class='" . $_GET['class'] . "'";
    } else {
        $whichClass = '';
        $whichClassSQL = 'ORDER BY class';
    }

    echo '
        <div class="row">
            <div class="col-md-4">
                <div class="input-group">
                    <input type="number" id="session" name="sessionVal" class="form-control" placeholder="Session Value i.e 1" required>
                    <span class="input-group-btn">
                        <input id="submitAttendance" type="button" class="btn btn-success" value="Submit Attendance" name="submitAttendance">
                    </span>
                </div>
            </div>
            <div class="col-md-8">
                <form method="get" action="' . $_SERVER['PHP_SELF'] . '" class="col-md-4">
                    <select name="class" id="class" class="form-control" onchange="if (this.value) window.location.href=this.value">
    ';

    // Generate list of classes.
    $query = "SELECT DISTINCT class FROM user ORDER BY class;";
    $classes = $classes = mysqli_query($conn, $query);
    if($classes && mysqli_num_rows($classes)){
        // Get list of available classes.
        echo '    <option value="">Filter: Select a class</option>';
        echo '    <option value="?class=">All classes</option>';
        while($class = $classes->fetch_assoc()){
            echo '    <option value="?class=' . $class['class'] . '">' . $class['class'] . '</option>';
        }
    } else {
        echo '    <option value="?class=" disabled>No classes defined.</option>';
    }

    echo '
                    </select>
                </form>
            </div>
        </div>
    ';

    $query = "SELECT * FROM user WHERE role='student' $whichClassSQL;";
    $result = $conn->query($query);
    ?>
        <table class="table table-striped">
            <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
                <th>Class</th>
                <th>Present</th>
                <th>Absent</th>
            </tr>
            </thead>
            <tbody>
            <form method="post" action="save-attendance.php" id="attendanceForm">
            <?php
            if(mysqli_num_rows($result) > 0){
                $i=0;
                while($row = $result->fetch_assoc()){

                    ?>
                    <tr>
                            <td><input type="hidden" value="<?php echo($row['id']);?>" form="attendanceForm"><input type="text" readonly="readonly" name="name[<?php echo $i; ?>]" value="<?php echo $row['fullname'];?>" form="attendanceForm"></td>
                            <td><input type="text" readonly="readonly" name="email[<?php echo $i; ?>]" value="<?php echo $row['email'];?>" form="attendanceForm"></td>
                            <td><input type="text" readonly="readonly" name="class[<?php echo $i; ?>]" value="<?php echo $row['class'];?>" form="attendanceForm"></td>
                            <td><input type="radio" value="present" name="present[<?php echo $i; ?>]" checked form="attendanceForm"></td>
                            <td><input type="radio" value="absent" name="present[<?php echo $i; ?>]" form="attendanceForm"></td>
                    </tr>

                <?php $i++;
                }
            }
            ?>
            </form>
            </tbody>

        </table>
    <script>
    $("#submitAttendance").click(function(){
        if($("#session").val().length==0){
            alert("session is required");
        } else {
            $.cookie("sessionVal", $("#session").val());
            var data = $('form#attendanceForm').serialize();
            $.ajax({
                url: 'save-attendance.php',
                method: 'post',
                data: {formData: data},
                success: function (data) {
                    console.log(data);
                   if (data != null && data.success) {
                       alert('Success');
                   } else {
                       alert(data.status);
                   }
                },
                error: function () {
                   alert('Error');
                }
            });
        }
    });
    </script>
    <?php 
    $conn->close();
    include('footer.php');

save-attendance.
     <?php
        //include ("nav.php");
        require("db-connect.php");

        $query = "SELECT * FROM user WHERE role='student'";
        $result = $conn->query($query);

        $nameArray  = Array();

        $count = mysqli_num_rows($result);

        if(isset($_COOKIE['sessionCount'])){
            $sessionCount = $_COOKIE['sessionCount'];
        }

        //save record to db
        if(isset($_POST['formData'])) {

            //increment the session count
            if(isset($_COOKIE['sessionCount'])){
                $sessionCount = $_COOKIE['sessionCount'];
                setcookie('sessionCount', ++$sessionCount);
            }

            parse_str($_POST['formData'], $searcharray);
            //print_r($searcharray);die;
            //print_r($_POST);

            for ($i = 0 ; $i < sizeof($searcharray) ; $i++){
            //    setcookie("checkloop", $i);;
                $name = $searcharray['name'][$i];
                $email=   $searcharray['email'][$i];
                $class =  $searcharray['class'][$i];
                $present= $searcharray['present'][$i];
                    if(isset($_COOKIE['sessionVal'])){
                        $sessionVal = $_COOKIE['sessionVal'];
                    }

                    //get class id
                    $class_query = "SELECT * FROM class WHERE name='".$class."'";
                    $class_id = mysqli_query($conn, $class_query);

                    if($class_id){
                        echo "I am here";
                        while($class_id1 = $class_id->fetch_assoc()){
                            $class_id_fin = $class_id1['id'];
                            echo $class_id['id'];
                        }
                    }
                    else{
                        echo "Error: " . $class_query . "<br>" . mysqli_error($conn);
                    }

                    //get student id
                    $student_query = "SELECT * FROM user WHERE email='".$email."'";
                    $student_id = $conn->query($student_query);
                    if($student_id) {
                        while ($student_id1 = $student_id->fetch_assoc()) {
                            $student_id_fin = $student_id1['id'];
                        }
                    }

                    //insert or update the record
                    $query = "INSERT INTO attendance VALUES ( '".$class_id_fin."', '".$student_id_fin."' , '".$present."','".$sessionVal."','comment')
                     ON DUPLICATE KEY UPDATE isPresent='".$present."'";

                    print_r($query);

                    if(mysqli_query($conn, $query)){
                        echo json_encode(array('status' => 'success', 'message' => 'Attendance added!'));
                    } else{
                    echo json_encode(array('status' => 'error', 'message' => 'Error: ' . $query . '<br>' . mysqli_error($conn)));
                    }
            }
            $conn->close();
        }

您沒有提供很多信息,但是我從注釋中了解到錯誤$ sessionVal是未定義的。

如果未設置$ _COOKIE ['sessionVal'],請嘗試:

1- print_r($ _ COOKIE)並檢查是否設置了[sessionVal];

2-嘗試向以下項添加后備:

if(isset($_COOKIE['sessionVal'])){
  $sessionVal = $_COOKIE['sessionVal'];
}
else {
  $sessionVal = 0;
}

要么

$sessionVal = (isset($_COOKIE['sessionVal'])) ? $_COOKIE['sessionVal'] : 0;

最重要的是,沒有必要檢查是否設置了變量,如果沒有設置,則沒有回退。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM