从数据库中定位和通过电子邮件发送数据
locating and emailing data from a database
我有一个网站,供用户上班打卡。
我在以下标题下保存了一些时间
ID(密钥)|日期 |天 |用户名 | Start-time | End-time |总计
我的问题是每两周我需要该网站通过电子邮件向我发送过去两周我所有员工的开始和结束时间。
连接到数据库后,我尝试了这个:
$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;
}
我的数据库中有一些结果应该像以前看到的那样回显,但我没有任何显示。也没有错误日志。
感谢您的帮助
有很多方法可以做到这一点,但我发现一种非常简单的方法是将其保存在数组中然后发送。不对请指正
问题:您需要发送并通过电子邮件发送用户的所有日志,包括过去 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;
脚本需要更多细节,但有了这个你就明白了,
我有一个网站,供用户上班打卡。
我在以下标题下保存了一些时间
ID(密钥)|日期 |天 |用户名 | Start-time | End-time |总计
我的问题是每两周我需要该网站通过电子邮件向我发送过去两周我所有员工的开始和结束时间。
连接到数据库后,我尝试了这个:
$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;
}
我的数据库中有一些结果应该像以前看到的那样回显,但我没有任何显示。也没有错误日志。
感谢您的帮助
有很多方法可以做到这一点,但我发现一种非常简单的方法是将其保存在数组中然后发送。不对请指正
问题:您需要发送并通过电子邮件发送用户的所有日志,包括过去 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;
脚本需要更多细节,但有了这个你就明白了,