私は、何百ものクライアントがオンラインで製品を販売できるようにする Web サイトを運営しています。顧客が私のクライアントの Web サイトの 1 つにアクセスするとき、彼らは次のフォームでアクセスします。
www.site.com?userid=12345
ランディング ページで、ユーザー ID が 12345 のクライアントに関する情報と、そのクライアントが販売できる製品のリストについて、mysql ルックアップを実行します。私たちは 30 までの製品のスイートのみを提供し、それらを定義して、それらがどのように見えるかを知っていますが、すべてのクライアントが同じ価格で提供できるわけではありません. この情報の mysql テーブルは次のようになります。
userid | category | itemid | price
=================================
12345 | 1 | 1 | 1.00
12345 | 1 | 2 | 2.00
12345 | 1 | 3 | 3.00
12345 | 2 | 4 | 4.00
12345 | 2 | 5 | 5.00
67890 | 1 | 1 | 2.25
67890 | 2 | 4 | 8.00
顧客が www.site.com?userid=12345 にアクセスすると、次の検索が行われます。
SELECT category, itemid, price FROM tablename WHERE userid = 12345
*注 - はい、SQL インジェクションを防ぎます。
私が遭遇する問題は、PHP で後続の配列を構築する方法です。私の最初の考えは次のとおりです。
<?php
...
while ($row = $stmt->fetch()) {
$products[]['category'] = $row['category'];
$products[]['itemid'] = $row['itemid'];
$products[]['price'] = $row['price'];
}
//the array will end up looking like this:
Array
(
[0] => Array
(
[category] => 1
[itemid] => 1
[price] => 1
)
[1] => Array
(
[category] => 1
[itemid] => 2
[price] => 2
)
[2] => Array
(
[category] => 1
[itemid] => 3
[price] => 3
)
[3] => Array
(
[category] => 2
[itemid] => 4
[price] => 4
)
[4] => Array
(
[category] => 2
[itemid] => 5
[price] => 5
)
)
?>
このような情報を取得する必要がある理由: 実際のサイト自体には、2 つの主要なカテゴリ (食べ物と飲み物) があります。クライアントがカテゴリ 1 の $products に商品を持っている場合は、ページに Food html セクションを表示します。クライアントがカテゴリ 2 の $products に商品を持っている場合は、ページに Drinks html セクションを表示します。
次に、すべてのカテゴリで使用できる定義済みの itemid のセットがあります。食品の場合は次の4つです。
- ペパロニ
- ソーセージ
- チーズ
- 野菜
ユーザーがこれらの itemid のいずれかを持っていない場合、その商品を販売することはできず、その商品は Food html セクションに表示されません。その商品が売れたら、そのセクション/アイテムの価格を参照して、実際のアイテムの横に表示できるようにしたい.
$products 配列に必要なすべての情報が含まれていることはわかっていますが、構造化の方法が最適かどうか、または説明どおりにページを構築するときに実際に参照する方法がわかりません。
例(このコードが正しくないことはわかっていますが、私が達成しようとしていることを言っています):
- 「$products カテゴリ配列に 1 の値が存在する場合、食品セクションを表示します。」
- 「$products itemid カテゴリ配列に 1 の値が存在する場合、ペパロニ ピザをページのオプションとして表示し、その特定のカテゴリ/アイテムの組み合わせに関連付けられた価格を表示します。」
任意のガイダンスをいただければ幸いです。