Hi! Could we please enable some services and cookies to improve your experience and our website?

PHPize Online / SQLize Online  /  SQLtest Online

A A A
Login    Share code      Blog   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear
function PRESENT_CheckOUT_QUERY() { // Get session variables $FROM_DATE = $_SESSION['FROM_DATE']; $TO_DATE = $_SESSION['TO_DATE']; $USERID = $_SESSION['USERID']; // Query to fetch CheckOut data $QUERY = "SELECT DISTINCT b.BADGENUMBER, CONVERT(VARCHAR, CONVERT(DATE, a.CHECKTIME)) PRESENT_DATES_CHECKOUT, CONVERT(VARCHAR, a.CHECKTIME, 108) CHECKOUT_TIME FROM dbo.CHECKINOUT a INNER JOIN dbo.USERINFO b ON a.USERID = b.USERID WHERE CONVERT(DATE, a.CHECKTIME) BETWEEN '$FROM_DATE' and '$TO_DATE' AND (DATEPART(dw, CONVERT(DATE, a.CHECKTIME)) NOT IN (7,1)) AND b.DEFAULTDEPTID != 1008 AND b.USERID = '$USERID' "; // Assuming 'OUT' represents a check-out action return $QUERY; }

Stuck with a problem? Got Error? Ask AI support!

Copy Clear
Copy Format Clear
<?php session_start(); if(!empty($_SESSION)) { $_SESSION['USERID'] = $_GET['USERID']; } $FROM_DATE = $_SESSION['FROM_DATE']; $TO_DATE = $_SESSION['TO_DATE']; include_once('./QueryClasses/connect.php'); include_once('./QueryClasses/DISPLAY_INDIVIDUAL_REPORT_QUERY.php'); $OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY = new Individual_Report(); $statement_all_working_days = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->ALL_WORKING_DAYS()); sqlsrv_execute($statement_all_working_days); $TOTAL_WORKING_DATES_ARRAY = array(); while($row=sqlsrv_fetch_array($statement_all_working_days)) { array_push($TOTAL_WORKING_DATES_ARRAY, $row['TOTAL_WORKING_DAYS']); } $STATEMENT_ALL_PRESENT_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_DAYS_QUERY()); sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS); $PRESENT_DATES_ARRAY = array(); $BADGE_NUMBER = ''; while($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS)) { $BADGE_NUMBER = $row['BADGENUMBER']; array_push($PRESENT_DATES_ARRAY, $row['PRESENT_DATES']); } $STATEMENT_ALL_LATE_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->LATE_DAYS_QUERY()); sqlsrv_execute($STATEMENT_ALL_LATE_DAYS); $LATE_DATES_ARRAY = array(); while($row = sqlsrv_fetch_array($STATEMENT_ALL_LATE_DAYS)) { array_push($LATE_DATES_ARRAY, $row['LATE_DATES']); } $STATEMENT_ALL_EARLY_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->EARLY_DAYS_QUERY()); sqlsrv_execute($STATEMENT_ALL_EARLY_DAYS); $EARLY_DATES_ARRAY = array(); while($row = sqlsrv_fetch_array($STATEMENT_ALL_EARLY_DAYS)) { array_push($EARLY_DATES_ARRAY, $row['EARLY_DAYS']); } // Execute the Present Check-in Time Query // Fetch Check-In times $STATEMENT_ALL_PRESENT_DAYS_CHECKIN = sqlsrv_prepare($conn, $OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_CheckInTime_QUERY()); sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS_CHECKIN); $PRESENT_DATES_ARRAY = array(); $CHECKIN_TIMES_ARRAY = array(); while ($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS_CHECKIN)) { $BADGE_NUMBER = $row['BADGENUMBER']; array_push($PRESENT_DATES_ARRAY, $row['PRESENT_DATES']); array_push($CHECKIN_TIMES_ARRAY, $row['CHECKIN_TIME']); //array_push($checkOutTime, $row['CheckoutTime']); } // Fetch Check-Out times $STATEMENT_ALL_PRESENT_DAYS_CHECKOUT = sqlsrv_prepare($conn, $OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_CheckOUT_QUERY()); sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS_CHECKOUT); $PRESENT_DATES_CHECKOUT_ARRAY = array(); $CHECKOUT_TIMES_ARRAY = array(); while ($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS_CHECKOUT)) { $BADGE_NUMBER = $row['BADGENUMBER']; array_push($PRESENT_DATES_CHECKOUT_ARRAY, $row['PRESENT_DATES_CHECKOUT']); // Store dates as well array_push($CHECKOUT_TIMES_ARRAY, $row['CHECKOUT_TIME']); } // Now you have two arrays: $PRESENT_DATES_ARRAY and $CHECKOUT_TIMES_ARRAY $STATEMENT_ALL_LEAVE_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->LEAVE_DAYS_QUERY()); sqlsrv_execute($STATEMENT_ALL_LEAVE_DAYS); $LEAVE_DATES_ARRAY = array(); while($row = sqlsrv_fetch_array($STATEMENT_ALL_LEAVE_DAYS)) { array_push($LEAVE_DATES_ARRAY, $row['LEAVE_DATE']); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SHOW INDIVIDUAL REPORT</title> <!-- Google Font: Source Sans Pro --> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"> <!-- Font Awesome --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <!-- Daterange picker --> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" /> <!-- Tempusdominus Bootstrap 4 --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.39.0/css/tempusdominus-bootstrap-4.min.css" integrity="sha512-3JRrEUwaCkFUBLK1N8HehwQgu8e23jTH4np5NHOmQOobuC4ROQxFwFgBLTnhcnQRMs84muMh0PnnwXlPq5MGjg==" crossorigin="anonymous" /> <!-- DATATABLE CSS --> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.18/css/dataTables.bootstrap4.min.css"> <!-- Theme style --> <link rel="stylesheet" href="../../dist/css/adminlte.min.css"> <script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script> <!-- Tempusdominus Bootstrap 4 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.39.0/js/tempusdominus-bootstrap-4.min.js" integrity="sha512-k6/Bkb8Fxf/c1Tkyl39yJwcOZ1P4cRrJu77p83zJjN2Z55prbFHxPs9vN7q3l3+tSMGPDdoH51AEU8Vgo1cgAA==" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <!-- AdminLTE App --> <script src="../../dist/js/adminlte.js"></script> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.10.18/js/dataTables.bootstrap4.min.js"></script> <script src="https://cdn.datatables.net/buttons/2.2.3/js/dataTables.buttons.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script> <script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.html5.min.js"></script> <script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.print.min.js"></script> </head> <body class="hold-transition sidebar-mini layout-fixed"> <!-- Preloader --> <div class="wrapper"> <div class="preloader flex-column justify-content-center align-items-center"> <img class="animation__shake" src="../../dist/img/Logo.png" alt="Logo" height="150" width="150" style = "border-radius: 50%;"> </div> </div> <nav class="main-header navbar navbar-expand navbar-white navbar-light"> <!-- Left navbar links --> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a> </li> <li class="nav-item d-none d-sm-inline-block"> <a href="./ADMIN_DASHBOARD.php" class="nav-link">Home</a> </li> </ul> <!-- <h1 style = "font-size:1.5rem; padding-top: 0.3em; padding-left: 6em;">EMPLOYEE ATTENDANCE SYSTEM</h1> --> <!-- Right navbar links --> <ul class="navbar-nav ml-auto"> <!-- Navbar Search --> <li class="nav-item"> <a href="../../index.php" class="nav-link" role="button"> <i class="fas fa-sign-out-alt"></i> <span style="color: red;">LOG OUT</span> </a> </li> </ul> </nav> <!-- Main Sidebar Container --> <aside class="main-sidebar sidebar-dark-primary elevation-4"> <a href="" class="brand-link"> <img src="../../dist/img/Logo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8"> <span class="brand-text font-weight-light">IMC</span> </a> <!-- Sidebar --> <div class="sidebar"> <!-- Sidebar user panel (optional) --> <div class="user-panel mt-3 pb-3 mb-3 d-flex"> <div class="image"> <img src="../../dist/img/user2.jpg" class="img-circle elevation-2" alt="User Image"> </div> <div class="info"> <a href="#" class="d-block">ATTENDANCE SYSTEM</a> </div> </div> <!-- SidebarSearch Form --> <div class="form-inline"> <div class="input-group" data-widget="sidebar-search"> <input class="form-control form-control-sidebar" type="search" placeholder="Search" aria-label="Search"> <div class="input-group-append"> <button class="btn btn-sidebar"> <i class="fas fa-search fa-fw"></i> </button> </div> </div> </div> <!-- Sidebar Menu --> <nav class="mt-2"> <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false"> <li class="nav-item menu-open"> <a href="" class="nav-link active"> <i class="nav-icon fas fa-file"></i> <p> <p> INDIVIDUAL REPORT </p> <i class="right fas fa-angle-left"></i> </p> </a> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="./DISPLAY_ALL_MAIN_STAFF_REPORT.php" class="nav-link"> <i class="nav-icon fas fa-file"></i> <p> DISPLAY REPORT </p> </a> </li> </ul> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="./ALL_MAIN_STAFF_REPORT.php" class="nav-link"> <i class="nav-icon fas fa-file"></i> <p> MAIN STAFF REPORT </p> </a> </li> </ul> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="./ADMIN_DASHBOARD.php" class="nav-link"> <i class="nav-icon fas fa-tachometer-alt"></i> <p> ADMIN DASHBOARD </p> </a> </li> </ul> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="./DAILY_ATTENDANCE.php" class="nav-link"> <i class="nav-icon fas fa-user"></i> <p> DAILY ATTENDANCE </p> </a> </li> </ul> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="./USER_INFO.php" class="nav-link"> <i class="far fa-user nav-icon"></i> <p>USER INFO</p> </a> </li> </ul> </li> </ul> </nav> </div> </aside> <!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0">LEAVE DAYS</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active">SHOW LEAVE DAYS</li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <section class="content"> <div class="container-fluid"> <table id="datatableid" class="table table-bordered table-dark"> <thead> <tr> <th scope = "col">EMPLOYEE ID</th> <th scope = "col">WORKING DATES</th> <th scope = "col">CHECK IN</th> <th scope = "col">CHECK OUT</th> <th scope = "col">LATE DATES</th> <th scope = "col">EARLY DATES</th> <th scope = "col">LEAVE DATES</th> </tr> </thead> <tbody> <?php sqlsrv_execute($statement_all_working_days); while($row=sqlsrv_fetch_array($statement_all_working_days)) { ?> <tr> <td><?php echo $BADGE_NUMBER; ?></td> <td><?php echo $row['TOTAL_WORKING_DAYS']; ?></td> <td> <?php // Check if the current row's total working days exists in the PRESENT_DATES_ARRAY if (in_array($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY)) { // Find the index of the matching date in PRESENT_DATES_ARRAY $index = array_search($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY); // Ensure the indices exist, otherwise fallback to "N/A" $checkInTime = isset($CHECKIN_TIMES_ARRAY[$index]) ? $CHECKIN_TIMES_ARRAY[$index] : "N/A"; // Display the present status with check-in and check-out times echo "(Check-in: " . $checkInTime .")"; } else { echo "ABSENT"; } ?> </td> <td> <?php // Check if the current row's total working days exists in the PRESENT_DATES_ARRAY if (in_array($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY)) { // Find the index of the matching date in PRESENT_DATES_ARRAY $index = array_search($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY); // Ensure the indices exist, otherwise fallback to "N/A" $checkOutTime = isset($CHECKOUT_TIMES_ARRAY[$index]) ? $CHECKOUT_TIMES_ARRAY[$index] : "N/A"; // Display the present status with check-in and check-out times echo "(Check-Out: " . $checkOutTime .")"; } else { echo "ABSENT"; } ?> </td> <td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $LATE_DATES_ARRAY)) { echo "LATE"; }?></td> <td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $EARLY_DATES_ARRAY)) { echo "EARLY"; }?></td> <td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $LEAVE_DATES_ARRAY)) { echo "LEAVE"; }?></td> </tr> <?php } ?> <tr> <td><?php echo "SUMMARY" ?></td> <td><?php echo sizeof($TOTAL_WORKING_DATES_ARRAY);?></td> <td><?php echo sizeof($PRESENT_DATES_ARRAY); ?></td> <td><?php echo sizeof($LATE_DATES_ARRAY); ?></td> <td><?php echo sizeof($EARLY_DATES_ARRAY); ?></td> <td><?php echo sizeof($LEAVE_DATES_ARRAY); ?></td> </tr> </tbody> </table> </div> </section> </div> </body> </html> <script> $(document).ready(function () { $('#datatableid').DataTable({ dom: 'Bfrtip', buttons: [ { extend: 'pdf', className: 'btn-danger', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' }, { extend: 'excel', className: 'btn-success', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' }, { extend: 'print', className: 'btn-secondary', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' }, ], lengthMenu: [10, 15, 50, 100, 400], "fnCreatedRow": function(nRow, aData, iDataIndex) { $(nRow).attr('USERID', aData[0]); }, 'processing': 'true', 'paging': 'true', 'order': [], } ); }); </script>
Copy Clear