-1

3 つの異なる mysql テーブル、クライアント、注文のコンテンツを表示しようとしています。html 構造を持つ製品:

                 Product 1        Product 2      Product 3 .....
client 1       quantityOrder     quantityOrder        -
client 2            -            quantityOrder    quantityOrder
client 3        quantityOrder        -                 -

多次元配列を使っているのですが、なぜかうまくいきません。

この投稿の指示に従おうとしましたが、うまくいきませんでした: PHP 2 次元配列を HTML に

何か案が?

ありがとうアレックス

4

1 に答える 1

0

配列は一切使用しないでください。二次元配列があり、テーブルを直接構築できます:

SELECT client.id, client.name, product.name as productname, SUM(order.quantity) AS qty
    FROM client CROSS JOIN product
         LEFT JOIN order ON ( order.product_id = product.id AND order.client_id = client.id)
    GROUP BY client.id, product.id ORDER BY client.name, product.code;

これにより、クライアントと製品ごとにセルが出力されます。その (クライアント、製品) と注文の間に JOIN がない場合は NULL になる可能性があります。

次に、PHP でテーブルを繰り返すだけです (もちろん、クライアント ID と製品 ID をキーとして使用して、テーブルを多次元配列に保存することもできます)。

print "<table>";
$customer_id = -1;
while($tuple = SQLFetchTuple($exec))
{
    if ($tuple['id'] != $customer_id)
    {
        if (-1 != $customer_id)
            print "</tr>"; // Close previous row
        print "<tr><td>{$tuple['name']</td>"; // Output row header
        $customer_id = $tuple['id'];
    }
    if ($tuple['qty'])
        print "<td>{$tuple['qty']</td>";
    else
        print "<td>-</td>";
}
print "</table>";
于 2012-09-04T23:07:27.153 に答える