SUM values inside foreach and while loop

Hi…
I have table which has a data so_month:
FromMonth : 5
ToMonth : 7
and I have table working_days:
MonthName
May
Jun
Jul
MonthNumber
05
06
07
WorkingDays
23
24
23
Now I have function to get the 3 consecutive months from FromMonth to ToMonth , which as you can see from May to Jul
Now I have problem in getting the SUM of Working days.
here is my code:


<?php
  $sql = "SELECT FromMonth, ToMonth FROM so_month";
$res = mysql_query($sql,$con);
$row = mysql_fetch_assoc($res);
$FromMonth = $row['FromMonth'];
$ToMonth = $row['ToMonth'];
function monthNames($from, $to){
   $range=array();
   for($i=$from; $i<=$to; $i++){
           $range[$i]=date('M', mktime(0,0,0,$i));
   }
    return $range;
}
$month_ = implode("' ', ",monthNames($FromMonth,$ToMonth));
foreach( monthNames($FromMonth, $ToMonth) as $month){
$sql = "SELECT MonthName, SUM(WorkingDays) AS WorkingDays FROM working_days WHERE MonthName IN ('$month') GROUP BY MonthName";
$res = mysql_query($sql, $con);
while($row = mysql_fetch_array($res)){
$WorkingDays = $row['WorkingDays'];
}
echo $WorkingDays;
}
?>

the output of this code is:
232423
and when I change this line:
$WorkingDays = $row[‘WorkingDays’];
to
$WorkingDays += $row[‘WorkingDays’];
the output is:
234770
The correct output should be: 70
Any help is highly appreciated.
Thank you very much…

When the second query is run direct against the database, is the correct value that you’re expecting being returned?

Move your echo $workingDays; outside of the foreach loop and you will only get 70

looks like you’re trying to do a loop to calculate a total… why aren’t you doing a join?

Hi…

I resolved it now using thid code:


//-----Computation of Working Days---//
$sql = "SELECT FromMonth, ToMonth FROM so_month";
$res = mysql_query($sql,$con);

$row = mysql_fetch_assoc($res);
$FromMonth = $row['FromMonth'];
$ToMonth = $row['ToMonth'];

function monthNames($from, $to){
   $range=array();
   for($i=$from; $i<=$to; $i++){
           $range[$i]=date('M', mktime(0,0,0,$i));
   }
    return $range;
}
 $month_ = implode("' ', ",monthNames($FromMonth,$ToMonth));

foreach( monthNames($FromMonth, $ToMonth) as $month){
$sql = "SELECT MonthName, SUM(WorkingDays) AS WorkingDays FROM working_days WHERE MonthName IN ('$month') GROUP BY MonthName";
$res = mysql_query($sql, $con);
$SumWorkingDays = 0;
while($row = mysql_fetch_array($res)){

 $WorkingDays+=(int)$row['WorkingDays'];
$SumWorkingDays += $WorkingDays;

}
}

Thank you