顧客が注文できるすべての可能な製品のリストを含むMySQLテーブルがあります。このテーブルの(非常に)簡略化されたバージョンは次のようになります。
ID | productid | price | age_min | age_max | type
=======================================================================
1 | baseball_1 | 12.34 | 18 | 21 | 1
2 | baseball_2 | 15.99 | 22 | 30 | 1
3 | baseball_3 | 18.99 | 18 | 99 | 1
4 | golf_1 | 4.99 | 18 | 24 | 2
5 | golf_2 | 5.99 | 25 | 44 | 2
6 | tennis_1 | 9.99 | 18 | 50 | 3
7 | tennis_2 | 14.99 | 51 | 99 | 3
この店では、すべての商品に年齢制限があります。つまり、顧客は自分の年齢がその範囲内に収まる場合にのみ、購入する商品を選択できます。カスタムは、製品の「タイプ」ごとに複数のオプションが存在する場合でも、1つの「タイプ」のみを選択できます。上記の表の例では、24歳の顧客は以下を選択することしかできません。
baseball_2、baseball_3 Golf_1、tennis_1
私は、潜在的な顧客が持つオプションを、既知の製品タイプ別に整理してレイアウトしようとしています。したがって、私の場合、ストアは顧客に次のように表示する場合があります。
野球オプション
- baseball_2-$ 15.99
- baseball_3-$ 18.99
ゴルフオプション
- Golf_1-4.99ドル
テニスオプション
- Tennis_1-$ 9.99
年齢変数を使用してデータベースに対して単一の(可能であれば)MySQL呼び出しを行い、可能なすべての製品を返し、上記のようにこれらの製品を適切に表示したいと思います。SQLステートメントは単純で、私はすでにこれを達成していますが、どのように循環するか、またはメンバーに使用可能なオプションをリストできる適切な配列を構築する方法がわかりません。
提案されるかもしれませんが、これは示されているよりもはるかに詳細であり、質問に関係のない他のいくつかの要因のため、サードパーティのソフトウェアやショッピングカートを使用することはできません。これは、多次元配列をどのように扱うかという問題のようです。誰かが以前に同様の問題に直面したことがありますか?
アップデート
Travestyとtdammerが以下に提供するソリューションは状況によっては有効ですが、データをさらに活用して、データベースから出力されたデータを表示できるようにしたいと考えています。ページのレイアウトとデザインは、データベースに保存される方法/時期などに依存しないようにする必要があります。あるセットの「タイプ」については最初に最高価格を表示し、別のセットについては最低価格を最初に表示したい場合があります。
fetchAllステートメントを使用することで、クエリから必要なすべてのデータを収集できますが、それをどのように使用するかは本当にわかりません。たとえば、私の配列は現在次のとおりです。
Array (
[0] => Array ( [productid] => 394, [price] => 6.20, [type] => 16 ),
[1] => Array ( [productid] => 395, [price] => 12.40, [type] => 16 ),
[2] => Array ( [productid] => 396, [price] => 18.60, [type] => 16 ),
[3] => Array ( [productid] => 397, [price] => 24.80, [type] => 16 ),
[4] => Array ( [productid] => 398, [price] => 31.00, [type] => 16 ),
[5] => Array ( [productid] => 449, [price] => 4.20, [type] => 17 ),
[6] => Array ( [productid] => 450, [price] => 8.40, [type] => 17 ),
[7] => Array ( [productid] => 451, [price] => 12.60, [type] => 17 ),
[8] => Array ( [productid] => 452, [price] => 16.80, [type] => 17 ),
[9] => Array ( [productid] => 453, [price] => 21.00, [type] => 17 )
)
後で基本的に「タイプ17のすべてのアイテムの製品IDと価格を表示してください」と言うことができる方法で独自の配列を構築する良い方法はありますか?