Mysql 按月存储员工出勤率的查询

Mysql query to store employee attendance by month

如何在mysql数据库中插入所有员工出勤率(每月一次) 这是我的数据库表

att_employee_id | att_year | att_month | att_present_days | att_absent_days |   att_workingdays

Date.prototype.daysInThisMonthOfThisYear=function() {
  return new Date(this.getFullYear(),this.getMonth()+1,0).getDate();
}
var days_inmonth = new Date().daysInThisMonthOfThisYear();

$(document).ready(function() {
 $( ".absent_days" ).keyup(function() {
   var days = $(this).val();
   $(this).closest("tr").find(".present_days" ).val( days_inmonth - days ); 
  }) 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<form name="emp_att" action="" method="post">
  <table>
    <thead>
      <tr>
        <th class="head0" style="width:5%">S.No</th>
        <th class="head1" style="width:15%">Employee ID</th>
        <th class="head0 no-sort" style="width:15%">No.of days present</th>
        <th class="head1 no-sort" style="width:15%">No.of days absent</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>ETO0001</td>
        <td><input type="text" class="present_days" name="present_days" value=""></td>
        <td><input type="number" name="absent_days" class="absent_days" min="0" max="<?php echo date('t'); ?>" onChange="absentdays()" style="width:100%"></td>
      </tr>
      <tr>
        <td>2</td>
        <td>ETO0002</td>
        <td><input type="text" class="present_days" name="present_days" value=""></td>
        <td><input type="number" name="absent_days" class="absent_days" min="0" max="<?php echo date('t'); ?>" onChange="absentdays()" style="width:100%"></td>
      </tr>
      <tr>
        <td>3</td>
        <td>ETO0003</td>
        <td><input type="text" class="present_days" name="present_days" value=""></td>
        <td><input type="number" name="absent_days" class="absent_days" min="0" max="<?php echo date('t'); ?>" onChange="absentdays()" style="width:100%"></td>
      </tr>
      <tr>
        <td>4</td>
        <td>ETO0004</td>
        <td><input type="text" class="present_days" name="present_days" value="" readonly></td>
        <td><input type="number" name="absent_days" class="absent_days" min="0" max="<?php echo date('t'); ?>" onChange="absentdays()" style="width:100%"></td>
      </tr>
    </tbody>
  </table>
  <input type="submit" name="submit" value="Submit">
</form>

这是我获取所有员工的查询

   <form name="emp_att" action="" method="post">
   <table>
   <thead>
   <tr>
    <th class="head0" style="width:5%">S.No</th>
    <th class="head1" style="width:15%">Employee ID</th>
    <th class="head0 no-sort" style="width:15%">No.of days present</th>
    <th class="head1 no-sort" style="width:15%">No.of days absent</th>
  </tr>
  </thead>
  <tbody>
    <?php
        $allemp= mysqli_query($con,"select * from t_emp e");
          $all_emp = mysqli_num_rows($allemp);

        if ($all_emp > 0)
        {
         $i=1;
            while($all_emp = mysqli_fetch_assoc($allemp))
          {
                 echo "<tr>";
                 echo "<td>".$i."<input type='hidden' name='serialno' value='".$i++."'></td>
                 <td> ".$all_emp["emp_id"]."</td>
                <td><input type='text' class='present_days' name='present_days' value=''></td>";
             echo "<td><input type='number' name='absent_days' class='absent_days' min='0' max= date('t') onChange='absentdays()' style='width:100%'></a></td>"; 
            echo "</tr>";
                 } 
          } 
        else 
        {
            echo "0 Results";
        }
        ?>
      </tbody>
      </table>
      <input type="submit" name="submit" value="Submit">
      </form>

在这里,我得到了上述表格中的所有 n 名员工。当输入所有员工 "No.of days absent" 然后点击提交时,我只能将最后一条记录发送到数据库。 谁能帮我把所有员工的出勤率发送到数据库 这是我的表单提交查询

<?php
if(isset($_POST['submit']))
{ 
 $serialno=$_post['serialno'];
 $employee_id=$_post['emp_id'];
 $att_year = date('Y'); 
 $att_month = date('m'); 
 for($i=1; $i<= $serialno;$i++)
 {
  $present_days=$_POST['present_days'];
  $absent_days=$_POST['absent_days'];
  }
  $query=mysqli_query($con,"INSERT INTO t_emp_attendance(att_employee_id,att_year,att_month,att_present_days,att_absent_days)values('$employee_id','$att_year','$att_month','$present_days','$absent_days')");
  }
 ?>

任何建议将不胜感激,我需要将所有员工的出勤率存储到数据库

检查 INSERT 的拼写。而且您还错过了为 inserting

传递连接对象

第一个参数应该是mysqli_*

中的连接对象
mysqli_query(connectionObject,your Query);

$query=mysqli_query("INSERT INTO t_emp_attendance(att_employee_id,att_year,att_month,att_present_days,att_absent_days)values('$employee_id','$att_year','$att_month','$present_days','$absent_days')");


for($i=1; $i<= $serialno;$i++)
{
   $present_days=$_POST['present_days'][$i];
   $absent_days=$_POST['absent_days'][$i];
   $query=mysqli_query($con,"INSERT INTO t_emp_attendance(att_employee_id,att_year,att_month,att_present_days,att_absent_days)values('$employee_id','$att_year','$att_month','$present_days','$absent_days')");
}      

您的查询应该在循环内。并按照 parag 的建议,将文本字段名称设为数组 [] 像这样,

<input type="text" class="present_days" name="present_days[]" value="">
                                                          ^ ^

你应该为所有的文本框做。

检查是否创建了输入字段的名称。它可能会被最新的值覆盖。将其作为 "absent_days[]" 之类的数组格式发送,它将解决您的问题