显示日期数组为12个月视图

时间:2010-03-09 21:45:30

标签: php mysql arrays date

我使用php / Mysql

我有两个cols(日期,现金)的表,其值为{7/2001:100 $,12/2001:50 $,1/2002:30 $,5/2002:90 $,6/2003: 80 $,9/2003:20 $}我想制作现金流量表,其中包括cols(1月,2月,3月,............ 12月)和每年的行数数组和表格单元格中的现金值如打击。

如何显示此数组{7/2001:100 $,12/2001:50 $,1/2002:30 $,5/2002:90 $,6/2003:80 $,9/2003:20 $作为打击??????

         |Jan  | Feb | Mar | Apr | May | Jun  | Jul  | Aug | Sep  | Oct | Nov | Dec |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2001    |  0  | 0   | 0   | 0   |  0  |  0   | 100$ |  0  |  0   |  0  |  0  |  50$ |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2002    | 30$ | 0   | 0   | 0   | 90$ |  0   | 0    |  0  |  0   |  0  |  0  |  0   |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2003    | 0   | 0   | 0   | 0   |  0  | 80$  |   0  |  0  |  20$ |  0  |  0  |   0  |

这个代码可以从数据库中检索行并将其绘制在表格中(日期,现金),就像数组的格式一样

   mysql_connect("localhost","",""); 
   mysql_select_db(""); 
   $var3=$_REQUEST['order_num']; 
   $cashtotal=0; 
   $summat = mysql_query("SELECT * FROM cash_flow WHERE order_num='$var3'"); 
   while ($row = mysql_fetch_assoc($summat)) { 
        print "<tr>"; 
        print "<td>$row[cash_date]</td>"; 
        print "<td>$row[cash]</td>"; 
        print "</tr>"; 
   } 

1 个答案:

答案 0 :(得分:0)

$array = array ("7/2001:100$", "12/2001:50$" , "1/2002:30$" , "5/2002:90$" , "6/2003:80$","9/2003:20$" );

    $prefill = array_fill(1,12,0);
    $years_array = array();

    foreach($array as $value){
        list($date , $amount) = explode(":" , $value);
        list($month , $year) = explode("/" , $date);

        if(!$years_array[$year]) $months_data = $prefill;
        else $months_data = $years_array[$year];

        $months_data[$month] = $amount;
        $years_array[$year] =   $months_data;
    }

    echo "| Jan  | Feb | Mar | Apr | May | Jun  | Jul  | Aug | Sep  | Oct | Nov | Dec | <br>";
    ksort($years_array);
    foreach($years_array as $year => $year_row){
        echo $year." | ";
        echo implode(" | " , $year_row);
        echo "<br>";
    }

这应该以您想要的格式提供数据,当然您需要引入一个表来使col宽度正确。

编辑: 根据提供的数据,通过DB创建您的数组并将其传递给上面的代码,可能是这样的:

$array = array(); 
   while ($row = mysql_fetch_assoc($summat)) { 
        $array[] = $row[cash_date].":".$row[cash];
   } 

当然,你可以改进上面的两个代码块,但这应该会给你一个想法。