一个很郁闷的任务,要用PHP去查询一个MSSQL库,实现如下图一样的表格,想了半天没点思路,请各位指教。
数据表的格式大概为:ID               PName     PDate         price       Location
41928CF444764    高镁钢    2009-07-02    2160.000    石家庄
41928CF444764    高镁钢    2009-07-01    2160.000    石家庄
41928CF444764    高镁钢    2009-06-30    2160.000    石家庄
41928CF444764    高镁钢    2009-06-29    2160.000    石家庄
41928CF444764    高镁钢    2009-06-28    2160.000    石家庄
41928CF444764    高镁钢    2009-06-27    2330.000    成都
41928CF444764    高镁钢    2009-06-26    2330.000    成都
41928CF444764    高镁钢    2009-06-25    2330.000    成都
41928CF444764    高镁钢    2009-06-24    2330.000    成都
41928CF444764    高镁钢    2009-06-23    2330.000    成都
41928CF444764    高镁钢    2009-06-27    2320.000    南昌
41928CF444764    高镁钢    2009-06-26    2320.000    南昌
41928CF444764    高镁钢    2009-06-25    2320.000    南昌
41928CF444764    高镁钢    2009-06-24    2320.000    南昌
41928CF444764    高镁钢    2009-06-23    2320.000    南昌
要将它打印在网页上,不知用何方法?

解决方案 »

  1.   

    我这里看得到呀,请刷新一下页面
    这是图片地址:
    http://wap.yein.cn/test.jpg
      

  2.   

    利用索引数组
    <?php
     //获取所有数据
     $result = mssql_query("SLEECT ID,PName,PDate,price,Location FROM xx_data ORDER BY Location, PDate ASC");
     while($row = mssql_fetch_array($result))
     {
        extract($row);
        $arrData[$Location][$PDate] = $row;
     }
    ?>
    很明显,日期和城市是已知的,所以输出就OK了.
    如果想从数据库里取日期或者城市,也可以再写两条sql语句.
      

  3.   

    你那个是以城市为组?
    打印时在PHP里做个标记,
    例如:$flag++
    用奇偶打印背景!
      

  4.   

    你写两个sql:
    $SQL2 = "WHERE `Location` = '石家庄' AND `ID`='41928CF444764' AND `PDate` >='2009-06-23'";// 第一次查询行的内容//返回记录的总数
    for(){
    <td>"price"</td>
    }
      

  5.   

    mysql本身也可做交叉表,不过感觉复杂点的逻辑还是交给程序来做比较好。还有你的问题最好再细致点,对比图中所示,哈尔滨 6月30号 为1540 这个1540是卖出产品的数目?数据表中没卖出一件产品就插入一条记录?
    也就是说你要求的是 某种钢材在各个日期卖出的数量?
      

  6.   

    <?php 
    //获取所有数据 
    $result = mssql_query("SLEECT ID,PName,PDate,price,Location FROM xx_data ORDER BY Location, PDate ASC"); 
    while($row = mssql_fetch_array($result)) 

        extract($row); 
        $arrData[$Location][$PName][$PDate] = $price; 

    ?> 
    //这样你一次性就可以得到  显示效果的所有数据了。
      

  7.   


    chenping1984,是不是写错了?这样子数组哪来的数据呢?
      

  8.   

    我现在用的是:<?php 
    $result = $pdo->getAll("SELECT * FROM PName_data WHERE ProID=13 AND DateDiff(day,PDate,getdate())between 0 AND 5 ORDER BY Location,PDate ASC");
    foreach ($result as $row){
        extract($row);
        print_r($row);
    }
    ?>
    得到的数据如:Array
    (
        [ProID] => 13
        [PName] => 高镁钢
        [PDate] => 2009-06-28
        [Price] => 2160.0
        [Location] => 石家庄
    )
    Array
    (
        [ProID] => 13
        [PName] => 高镁钢
        [PDate] => 2009-06-29
        [Price] => 2160.0
        [Location] => 石家庄
    )
    Array
    (
        [ProID] => 13
        [PName] => 高镁钢
        [PDate] => 2009-06-30
        [Price] => 2160.0
        [Location] => 石家庄
    )
    Array
    (
        [ProID] => 13
        [PName] => 高镁钢
        [PDate] => 2009-07-01
        [Price] => 2160.0
        [Location] => 石家庄
    )
    Array
    (
        [ProID] => 13
        [PName] => 高镁钢
        [PDate] => 2009-07-02
        [Price] => 2160.0
        [Location] => 石家庄
    )
    头痛的是要怎么样把这些数据分别纳入像图片那样子的表格??
      

  9.   

    完成,用了三个foreach,勉强算OK了.