www.webdeveloper.com
Results 1 to 2 of 2

Thread: SUM values inside foreach and while loop

Hybrid View

  1. #1
    Join Date
    Oct 2011
    Posts
    350

    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 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..

  2. #2
    Join Date
    Nov 2006
    Location
    Oakland
    Posts
    500
    $monthStr = implode("', '",monthNames($FromMonth,$ToMonth));
    $sql = "SELECT MonthName, SUM(WorkingDays) AS WorkingDays FROM working_days WHERE MonthName IN ('$monthStr') GROUP BY MonthName";

    if(($res = mysql_query($sql, $con))!==false){
    $WorkingDays=0;

    while($row = mysql_fetch_array($res)){
    $WorkingDays += $row['WorkingDays'];
    }

    echo $WorkingDays;
    }


    The foreach( monthNames($FromMonth, $ToMonth) as $month){ ... } loop is using too many database resources.
    Last edited by holyhttp; 05-01-2012 at 04:17 AM.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles