首页 > 解决方案 > 从数据库中查找数据并通过电子邮件发送数据

问题描述

我有一个网站,用户可以在其中上下班上班。

我在以下标题下节省了时间

ID(密钥)| 日期 | 天 | 用户名 | 开始时间 | 结束时间 | 全部的

我的问题是每两周我需要该网站通过电子邮件向我发送过去两周内我所有员工的开始和结束时间。


连接到数据库后,我尝试了这个:

   $period = strtotime($row['period']);

   //start = 14 days previous to current period start
   $start = $period - 1209500;
    if ($result->num_rows > 0 ){

   //period = start of pay period 
   $period = strtotime($row['period']);

   //start = 14 days previous to current period start
   $start = $period - 1209500;



   while ($start < $period){

         $sql = "SELECT * FROM `clocks` WHERE ``date` = '".gmdate("d.m.Y", $start)."'";
         $res = $conn->query($sql);

         if ($res->num_rows > 0){

         while($row = $res->fetch_assoc()) {
            $line = "{$row['userid']} {$row['date']} {$row['start']} {$row['finish']} {$row['breakstart']}";
            echo $line;

          }
            
         } else {

         }
      $start = $start + 86400;


   }

我的数据库中有一些结果应该像以前看到的那样回显,但我没有任何显示。也没有错误日志。

谢谢您的帮助

标签: phpmysqlemail

解决方案


有很多方法可以做到这一点,但我发现一个非常简单的方法是将它保存在数组中然后发送。如果我错了,请纠正我的想法

问题:您需要将用户的所有日志发送并通过电子邮件发送,包括过去 2 周的开始、结束和休息时间。

测试脚本 [注意:我使用的是程序样式]:

$gtime = date("d.m.Y"); //date of the day you are running the script
$start = date('d.m.Y', strtotime($gtime. ' - 2 weeks'));
$query = mysqli_query($mysqli,"SELECT * FROM clocks WHERE date > '$start'");

$data = array();
while ($row = mysqli_fetch_array($query)) {
    $data[] = array(
        'userid' => $row["userid"],
        'date' => $row["date"],
        'start' => $row["start"],
        'finish' => $row["finish"],
        'breakstart' => $row["breakstart"]
    );
}

然后在您的电子邮件脚本正文中使用 foreach()

$mail_body = '<table>';
foreach ($data as $key => $value) {
    $mail_body .= '<tr>';
    $mail_body .= '<td>'.$value ["userid"].'</td>';
    $mail_body  .= '<td>'.$value ["date"].'</td>';
    $mail_body .= '<td>'.$value ["start"].'</td>';
    $mail_body .= '<td>'.$value ["finish"].'</td>';
    $mail_body .= '<td>'.$value ["breakstart"].'</td>';
    $mail_body .= '</tr>';
}
$html .= '</table>';

echo $html;

脚本需要更多细节,但有了这个你就会明白,


推荐阅读