我使用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>";
}
答案 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];
}
当然,你可以改进上面的两个代码块,但这应该会给你一个想法。