-1

我的问题是如何从数据库中获取记录到 dtr 表单的特定日期。例如,当员工在第 3 天缺席时,它会跳过第 3 天并直接跳到员工在场的另一天。喜欢这个https://www.youtube.com/watch?v=g9JUN6TBrak

          <CAPTION><EM>
        <p class="civil_service_title">Civil Service Form No. 48</p>
        <p class="dtr">DAILY TIME RECORD </p>
        <p class="circles">-----o0o-----</p>
        <p class="line1">_____________________________________</p>
        <p class="name"> (Name)</p>
        <p class="civil_service_title2"> For the month of______________________________________<br>             
        Official hours for arrival <br>and departure 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;
        Regular days________________<br><br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        Saturdays___________________    </p>
    </EM></CAPTION>
    <form method="POST">
    <table border="1">
        <tr><th rowspan="2">Day<th colspan="2">A.M.
        <th colspan="2">P.M.<th colspan="2">Undertime
        <TR><th>Arrival<th>Departure 
        <th>Arrival<th>Departure 
        <th>Hours<th>Minutes
            <?php
                $days = 31;
                for($i = 1;$i <= $days;$i++){
                    $fetch = mysqli_fetch_array($sql);   
            ?>
            <tr>
                <th><input type="hidden" name="hidden" value="<?php echo $i;?>"><?php echo $i;?></th>
                <td>
                    <?php 
                        echo $fetch['time_in_am'];
                    ?>
                </td>
                <td>00:00</td>
                <td>00:00</td>
                <td>00:00</td>
                <td>00:00</td>
                <td>00:00</td>
            </tr>
            <?php  
                }  
            ?>
        <tr><th colspan="5">
        <div> Total </div> <td><td>
    </table>
    </form>
4

1 回答 1

1

从数据中获取数据的主循环如下所示:

<?php
    $days = 31;
    for($i = 1;$i <= $days;$i++){
        $fetch = mysqli_fetch_array($sql);
?>
<tr>
    <th><input type="hidden" name="hidden" value="<?php echo $i;?>"><?php echo $i;?></th>
    <td>
        <?php
            echo $fetch['time_in_am'];
        ?>
    </td>
    <td>00:00</td>
    <td>00:00</td>
    <td>00:00</td>
    <td>00:00</td>
    <td>00:00</td>
</tr>
<?php
    }
?>

这就解释了为什么您的输出会跳过几天,并且您的数据会在列表末尾用完。当员工缺席时,当天没有数据。

既然你还没有回答我的问题,我不得不做出假设。我不知道您的数据库中有什么,对它的查询,或者它返回什么。所以我弥补了。我假设您返回所选月份中每一天的日期和时间。上面的代码将变为:

<tr>
<?php
    $days = 31;
    $timesArray = array_fill(1,$days,['timeIn' => 'absent']);
    while($fetch = mysqli_fetch_array($sql)) {
      $timesArray[$fetch['day_of_month']]['timeIn'] = $fetch['time_in_am'];
    }
    foreach ($timesArray as $times)
    {
      echo '<td>'.$times['timeIn'].'</td>';
      echo '<td>00:00</td>';  // for other times
      echo '<td>00:00</td>';  // for other times
      echo '<td>00:00</td>';  // for other times
      echo '<td>00:00</td>';  // for other times
      echo '<td>00:00</td>';  // for other times
    }
?>
</tr>

这可以很容易地扩展到包含其他时间,例如超时。我省略了表格标题,因为我无法理解这一点。

这里的诀窍是我$timesArray用“缺席”这个词来准备一个月中的所有日子。如果您愿意,这可能是一个空字符串。之后我填写员工在场的日期,最后显示整个数组。

于 2018-02-04T11:13:23.303 回答