如果column1匹配条件,则HTML column2中的小计

时间:2015-03-24 13:50:13

标签: php jquery mysql

我正在尝试创建报告,我需要根据另一列中的值将值合并为小计。我的问题是,我不能在MySQL中使用SUM命令,因为我没有处理表的MySQL列名。

我有一组日期范围,我需要根据日期范围将总数加起来。我创建日期范围作为变量,所以我不知道如何使用PHP或MySQL来总结。 (我想使用像jQuery这样的东西,如果能够工作的话。)

“活动代码”列中的值位于数据库本身,但监控期间来自此查询的“计划”表中的Approval_Date字段:

$query = "SELECT * from Plans
Inner JOIN Payroll ON Payroll.Client_ID = Plans.Client_ID";

然后这个特别丑陋的代码创建了表:

$res = mysqli_query($con, $query);
echo "<div id='payroll'>";
echo "<table class='sortable' style='position:absolute; top: 150px; left: 15px; white-space: nowrap;'>";
echo "<th>Activity Date</th><th>Last Name</th><th>First Name</th><th>PT Last Name</th><th>PT First Name</th><th>Activity Code</th><th class='sorttable_numeric'>Monitoring Period</th><th>Hours</th><th>Rate</th><th>Hourly Pay</th><th>Notes</th>";


while ($row = mysqli_fetch_assoc($res)) {
    foreach($row as $key => $val) {
    $daterange = $row['Approval_Date'];
    $m30 = date('m/d/y',strtotime('+ 30 days', strtotime($daterange)));
    $m60 = date('m/d/y',strtotime('+ 60 days', strtotime($daterange)));
    $m90 = date('m/d/y',strtotime('+ 90 days', strtotime($daterange)));
    $m120 = date('m/d/y',strtotime('+ 120 days', strtotime($daterange)));
    $m150 = date('m/d/y',strtotime('+ 150 days', strtotime($daterange)));
    $m180 = date('m/d/y',strtotime('+ 190 days', strtotime($daterange)));
    $m210 = date('m/d/y',strtotime('+ 210 days', strtotime($daterange)));
    $m240 = date('m/d/y',strtotime('+ 240 days', strtotime($daterange)));
    $m270 = date('m/d/y',strtotime('+ 270 days', strtotime($daterange)));
    $m300 = date('m/d/y',strtotime('+ 300 days', strtotime($daterange)));
    $m330 = date('m/d/y',strtotime('+ 330 days', strtotime($daterange)));
    $m360 = date('m/d/y',strtotime('+ 360 days', strtotime($daterange)));

    $Hourly_Pay = round($row['Pay_Rate'] * $row['Hours'],2);
    asort($row);

        $time = strtotime($val);
        $newformat = date('Y-m-d',$time);
        $myformat = date('Y-m-d', strtotime($row['Date']));

    if ( $time > strtotime("01/01/1969") AND $key == "Date" AND $myformat = $newformat) {
                        echo "<tr><td>" . $row['Date'];  echo "</td><td>" . $row['SC_LName'] . "</td><td>" . $row['SC_FName'] .  "</td><td>" . $row['PT_Last_Name'] . "</td><td>" . $row['PT_First_Name'] . "</td><td>" . $row['Activity_Type'] . "</td><td>"; 
                        if ($row['Activity_Type'] <> "New Plan" AND $row['Activity_Type'] <> "DDD Initial Training" AND $row['Activity_Type'] <> "DSA Initial Training" AND $row['Activity_Type'] <> "CDS Videos") {
                            if (strtotime($row['Date']) <=   strtotime($m30)) {echo date('m/d/y',strtotime('+ 0 days', strtotime($daterange))) . " - " . $m30;}; 
                            if (strtotime($row['Date']) >  strtotime($m30) AND strtotime($row['Date']) < strtotime($m60)) {echo date('m/d/y',strtotime('+ 60 days', strtotime($daterange))) . " - " . $m60 ;}; 
                            if (strtotime($row['Date']) >=  strtotime($m60) AND strtotime($row['Date']) < strtotime($m90)) {echo date('m/d/y',strtotime('+ 60 days', strtotime($daterange))) . " - " . $m90 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m90) AND strtotime($row['Date']) < strtotime($m120)) {echo date('m/d/y',strtotime('+ 90 days', strtotime($daterange))) . " - " . $m120 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m120) AND strtotime($row['Date']) < strtotime($m150)) {echo date('m/d/y',strtotime('+ 120 days', strtotime($daterange))) . " - " . $m150 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m150) AND strtotime($row['Date']) < strtotime($m180)) {echo date('m/d/y',strtotime('+ 150 days', strtotime($daterange))) . " - " . $m180 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m180) AND strtotime($row['Date']) < strtotime($m210)) {echo date('m/d/y',strtotime('+ 180 days', strtotime($daterange))) . " - " . $m210 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m210) AND strtotime($row['Date']) < strtotime($m240)) {echo date('m/d/y',strtotime('+ 210 days', strtotime($daterange))) . " - " . $m240 ;}; 
                            if (strtotime($row['Date']) >= strtotime($m240) AND strtotime($row['Date']) < strtotime($m270)) {echo date('m/d/y',strtotime('+ 240 days', strtotime($daterange))) . " - " . $m270 ;}; 
                            if (strtotime($row['Date']) > strtotime($m270) AND strtotime($row['Date']) < strtotime($m300)) {echo date('m/d/y',strtotime('+ 270 days', strtotime($daterange))) . " - " . $m300;}; 
                            if (strtotime($row['Date']) > strtotime($m300) AND strtotime($row['Date']) < strtotime($m330)) {echo date('m/d/y',strtotime('+ 300 days', strtotime($daterange))) . " - " . $m330;}; 
                            if (strtotime($row['Date']) > strtotime($m330) AND strtotime($row['Date']) < strtotime($m360)) {echo date('m/d/y',strtotime('+ 330 days', strtotime($daterange))) . " - " . $m360 ;}
                            };                              
                            echo "<td>" . $row['Hours'] . "</td><td>" . $row['Pay_Rate'] . "</td><td>" . $Hourly_Pay .  "</td><td>"  . $row['Notes'] . "</td></tr>";
   }
  }
}
echo "</table>";

由于您可能或可能无法从混乱中判断出来,它会根据行的Approval_Date创建一个监视期间列,其中包含一系列日期范围。

我的困境是我无法弄清楚如何在监控期间获得一笔款项。由于它是动态创建的,并且该列不是数据库的一部分,因此我无法从MySQL获得SUM。

任何和所有建议将不胜感激。如果您需要其他信息,请与我们联系。如果有一个jQuery或Javascript方式来解决这个问题,那我也很好。 :)

谢谢!

ETA:我刚想到,不是立即打印出表中的数据,也许我应该将数据存储在MySQL表中。那样的话,我可以做所有的操作,如果我愿意,可以在完成后放下桌子。听起来有可能吗?

0 个答案:

没有答案