日期    车间1     车间2   车间3
26      10         20      3027282930.....25如何实现这个统计功能呢?车间和日期的交叉点是本车间当日的产量。当日从8:00到第二天8:00比如26号,那么就是26号8:00到27号8:00的产量。

解决方案 »

  1.   

    你是要从数据文件中读取吗?
    可以将上述文件中的数据读入数组(二维数组,第一维为日期,第二维为车间),先用file()函数吧文件按行读入数组,然后用explode()函数把上一步读出的数组的每一项分割成数组,然后将分割的数组的第一项(日期)变成键,后面三个是值。<?php
    $data = file('data.txt');
    $result = array();
    foreach($data as $item){
    $item_array = explode(" " , $item);
    $tmp_array = array($item_array[0] => array($item_array[1],$item_array[2],$item_array[3]));
    $result = $result+$tmp_array;
    }
    print_r($result);
    ?>
      

  2.   

    我是假设你的data.txt是这样的:
    26 10 20 30
    27 8 3 3
    28 11 22 25
    29 13 21 23
    30 28 26 20
      

  3.   


     
       
                
    <?php  
       $pgxgai=0;
       $fgbzhi=0;
      
              $dt_start = strtotime($begindate26);   //$begindate26是上月26号8:00  $dangqian是当前的时间。
              $dt_end   = strtotime($dangqian);
    do { 
            //将 Timestamp 转成 ISO Date 输出
            echo "<tr>";
    echo "<td>";
    echo date('d', $dt_start);
    echo "</td>";       $query="SELECT sum(m.zhshu)  from mis_main m,mis_gegongxuwanchengjilu g  where g.chhshjian between '$dt_start' and '$dt_start+86400'  and g.chhbmen='Register' and g.jhbmen='Design' and m.bhao=g.bhao and g.pgxgai=$pgxgai and g.fgbzhi=$fgbzhi and m.ktbzhi='no' and m.blei='Besar' ";
       $result = mysql_query($query) or die(mysql_error());
       $rowsywd = mysql_fetch_row($result);
      if ($rowsywd[0]>0){
     $rowsywd[0]=$rowsywd[0];
     }else{
     $rowsywd[0]=0;
     }
           
           

           $query="SELECT sum(m.zhshu)  from mis_main m,mis_gegongxuwanchengjilu g  where g.chhshjian between '$dt_start' and '$dt_start+86400'  and g.chhbmen='Register' and g.jhbmen='Design' and m.bhao=g.bhao and g.pgxgai=$pgxgai and g.fgbzhi=$fgbzhi and m.ktbzhi='no' and m.blei='Kecil' ";
       $result = mysql_query($query) or die(mysql_error());
       $rowsywx = mysql_fetch_row($result);
      if ($rowsywx[0]>0){
     $rowsywx[0]=$rowsywx[0];
     }else{
     $rowsywx[0]=0;
     }

       
    //以上是业务产量

                     echo "<td>";
    echo  $rowsywd[0];
    echo "</td>";
            echo "<td>";
    echo  $rowsywx[0];
    echo "</td>";



    } while (($dt_start += 86400) <= $dt_end);    // 重复 Timestamp + 1 天(86400), 直至大于结束日期中止     ?>
     
     
     
    这样就能实现我的功能,可是mysql语句不识别那个iso date日期格式,如何修改一下呢!
      

  4.   

    你能把你的数据库结构发出来吗?另外你的g.chhshjian字段的数据格式是什么?你现在在where中的时间是整形数据,那么g.chhshjian也要是整形字段才可以能正常获取吧如果你的g.chhshjian是date字段,那么你就考虑是把字段的数据转成整形比较,还是要把查询的时间间隔转成日期字符串比较呢?
      

  5.   

    搞定了!在$query之前加一句:$dt_start=date('Y-m-d H:i:s',$dt_start);while之前加一句:$dt_start = strtotime($dt_start);
     $query="SELECT sum(m.zhshu)  from mis_main m,mis_gegongxuwanchengjilu g  where g.chhshjian between '$dt_start' and date_add('$dt_start',INTERVAL 1 DAY)  and g.chhbmen='Register' and g.jhbmen='Design' and m.bhao=g.bhao and g.pgxgai=$pgxgai and g.fgbzhi=$fgbzhi and m.ktbzhi='no' and m.blei='Besar' ";
       $result = mysql_query($query) or die(mysql_error());
       $rowsywd = mysql_fetch_row($result);
      if ($rowsywd[0]>0){
     $rowsywd[0]=$rowsywd[0];
     }else{
     $rowsywd[0]=0;
     }$query语句改为以上的语句就可以了!