【问题标题】:locating and emailing data from a database从数据库中查找数据并通过电子邮件发送数据
【发布时间】:2021-10-17 10:04:42
【问题描述】:

我有一个用户可以上下班打卡的网站。

我在以下标题下保存时间

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;


   }

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

感谢您的帮助

【问题讨论】:

  • 我知道,抱歉应该更具体。如果我把 1209600 放得太远了 1 天,所以我做了 1209500 以确保它给出我需要的日期
  • 你可以使用这样的查询$start = date('d.m.Y', strtotime($row['period']. ' - 2 weeks')); $sql = "SELECT * FROM clocks WHERE date &gt; '$start' ";
  • 您的 SQL 查询中有错误。你在date之前添加了一个额外的(`)字符@

标签: php mysql email


【解决方案1】:

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

问题:您需要通过电子邮件发送用户的所有日志,包括过去 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;

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

【讨论】:

  • 这就是我试图模仿的。我已经尝试制作一个二维数组来保存所有值并且完全迷失了。感谢您的帮助!
  • 显然我的 SQL 知识并没有我想象的那么好。我什至没有想过在查询中使用 运算符。再次感谢您
  • @JackFitton 没问题!
猜你喜欢
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多