【发布时间】:2019-04-06 06:23:41
【问题描述】:
我正在设置一个报告,其中包含以下列:月、出纳员、第 1 周、第 2 周、第 3 周、第 4 周和第 5 周以及当月的总计集合。
我很难从数据库中总结出连续每周的金额。
如果有人可以帮助我如何在一个月的每个星期内显示日期列表,可能会有所帮助!
这将显示每月每周收集的柜员。
我不想从每月每个出纳员每周对数据库中的集合进行汇总。
数据库表
我的代码。
if($teller_cnt > 0) {
$new_start_week = 0;
$weeks_num = 5;
for($m = 1; $m<=12; $m++) {
$weeks_num = weeks_num($m, $year);
$num_of_weeks = $weeks_num;
$monthname = date_formating($m, '!m', 'F');
$total_per_month = 0;
$min_1 = 0;
if($m > 1) {
if($num_of_weeks == 4) {
$new_start_week = ($new_start_week + $weeks_num) + 1;
$weeks_num = ($weeks_num + $new_start_week);
$msg = '<span class="label label-danger">4 Months</span>';
}else{
$new_start_week = ($new_start_week + $weeks_num);
$weeks_num = ($weeks_num + $new_start_week);
$msg = '<span class="label label-info">5 Montsh</span>';
$min_1 = -1;
}
}else{
if($num_of_weeks == 4) {
$msg = '<span class="label label-danger">4 Months</span>';
}else{
$msg = '<span class="label label-info">5 Montsh</span>';
}
}
if(weeks_num(($m-1), $year)==4) {
$weeks_num = $weeks_num - 1;
$new_start_week = $new_start_week - 1;
}
echo '<tr>';
echo '<td rowspan="'.($teller_cnt+1).'">';
echo $monthname.' <br>';
//echo 'Num of Weeks per month: '.$num_of_weeks. ' <br> ';
//echo 'Start Of Week Num: ' . $new_start_week;
//echo $msg . '<br>';
echo '</td>';
echo '</tr>';
foreach ($qry_pay_tellers->result() as $row) {
$qry_total_payapplied = $this->db->query("SELECT SUM(amt) + SUM(intrst) AS amt FROM payapplied WHERE teller = {$row->teller} AND YEAR(tdate) = $year AND MONTH(tdate) = $m")->row();
$total_teller_amt = ($qry_total_payapplied) ? $qry_total_payapplied->amt : 0;
echo '<tr>';
echo '<td>' . $row->teller . '</td>';
/*
$firstDayOfMonth = new \DateTime("1st $monthname");
$lastDayOfMonth = new \DateTime($firstDayOfMonth->format('t M Y'));
$oneDay = new DateInterval('P1D');
$period = new \DatePeriod($firstDayOfMonth, $oneDay, $lastDayOfMonth->add($oneDay));
*/
$days_arr = array();
$begin = new DateTime('2019-01-01');
$end = new DateTime('2019-12-31');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach($period as $date)
{
$dates = $date->format('Y-m-d');
$week_num = $this->db->query("SELECT WEEK('$dates', 'Monday') AS weeknum;")->row();
$days_arr[$week_num->weeknum][] = array('dayname' => $date->format('D'), 'date' => $dates);
// echo $dates . ' - ' . $week_num->weeknum . '<br>';
}
for($w = $new_start_week; $w < $weeks_num; $w++) {
echo '<td>';
/*
echo $w . '<br>';
foreach($days_arr[$w] as $wrow) {
echo $wrow['date'] . '<br>';
}
*/
echo '</td>';
}
//echo '<td class="number">'.number_format($total_teller_amt, 2).'</td>';
if($num_of_weeks > 4) {
echo '<td class="number">'.number_format($total_teller_amt, 2).'</td>';
}else{
echo '<td colspan="2" class="number">'.number_format($total_teller_amt, 2).'</td>';
}
echo '</tr>';
$total_per_month += $total_teller_amt;
}
echo '<tr>';
echo '<td class="number" colspan="8">'.number_format($total_per_month, 2).'</td>';
echo '</tr>';
}
}
【问题讨论】:
-
您没有告诉我们您的代码当前做了什么或出了什么问题。给我们一个线索,从某个地方开始。谢谢。
-
我说我很难在一周内从数据库中求和。也许每周显示所有日期会有所帮助。这样我就可以总结该日期内的所有交易。
-
是的,您确实说过...但是“困难”不是问题陈述或对代码行为的描述。如果你告诉医生你有“困难”,你认为他能诊断出你吗?
-
我已经修复并添加了解决方案,感谢您的建议:D