###前提・実現したいこと
少し難しいみたいですが
mysql に登録した商品マスターのカテゴリー名をPHPでリストメニューを作りたい。(Part.2)
初心者です。
###発生している問題・エラーメッセージ
データベスからカテゴリー名を読み込み、数種類の変数に格納してPHPでリストメニューを作りたい
データ↓
商品コード(hs_id):カテゴリー1(ct_03) : カテゴリー2(ct_04)
1001 : A : AA
1002 : A : BB
1003 : A : BB
1004 : A : CC
1005 : B : BB
1006 : B : BB
1007 : B : CC
というデータで Aというカテゴリー名とBというカテゴリー名を取得して
<ul> <li>A <ul> <li>AA</li> <li>BB</li> <li>CC<li> </ul> </li> <li>B <ul> <li>BB</li> <li>CC<li> </ul> </li> </ul>というリストを表示したいのですが。
group を使うと
となります。確かにGROUPだとトータルでカウントするだけなので....
カテゴリー1 (A) のAA,BB,CCは出てきますが (B)のBB,CCが表示されません
GROUP だと最初 (A) のAA,BB,CCでカウントされてしまい、(B)には残りません
GROUP の使い方を調べていますが他の方法があるのでしょうか?
サンプルソースは4段階の入れ子になっていて
一番上のデータだけ表示されリストの2行目以降が何も出ません
PHPでswitch : case などで振り分けが必要なんでしょうか
sql文の裏技があるのかmないのか...
どなたか教えてください
よろしくお願い致します。
エラーメッセージ
###該当のソースコード
PHP
1 2<?PHP 3require_once("./js/nic_MYDB.php"); 4$pdo = db_connect(); 5 6// 01-02 ct-0102 7$sql= "SELECT ct_02,COUNT(*) AS count FROM products_table where hs_id >= 1001 AND hs_id <= 1999 GROUP BY ct_02 ORDER BY hs_id ASC "; 8$stmh0102 = $pdo->query($sql); 9 10// 01-03 ct-0103 11$sql= "SELECT ct_03,COUNT(*) AS count FROM products_table where hs_id >= 1001 AND hs_id <= 1999 GROUP BY ct_03 ORDER BY hs_id ASC "; 12$stmh0103 = $pdo->query($sql); 13 14// 01-04 ct-0104 15$sql= "SELECT ct_04,COUNT(*) AS count FROM products_table where hs_id >= 1001 AND hs_id <= 1999 GROUP BY ct_04 ORDER BY hs_id ASC "; 16$stmh0104 = $pdo->query($sql); 17?> 18 19<nav id="dd"> 20<ul> 21<li class="font18"><a href="http://www.nikkohm.com/test/#" class="active">Part Search</a> 22 <!-- 01 --> 23 <ul class="level1" style="display: block;"> 24 <!-- 01-01 --> 25 <li><a href="#" class="item-arrow">Power</a> 26 27<?PHP 28echo '<!-- 01-02 -->'; 29echo "<ul class=\"level2\" style=\"display: none;\">"; 30while ($row = $stmh0102->fetch(PDO::FETCH_ASSOC)) { 31 echo "<li><a href=\"#\" class=\"item-arrow\">"; 32 echo htmlspecialchars($row["ct_02"]); 33 echo "</a>"; 34 35 echo "<!-- 01-03 -->"; 36 echo "<ul class=\"level2\" style=\"display: none;\">"; 37 while ($row = $stmh0103->fetch(PDO::FETCH_ASSOC)) { 38 echo "<li><a href=\"#\" class=\"item-arrow\">"; 39 echo htmlspecialchars($row["ct_03"]); 40 echo "</a>"; 41 42 echo "<!-- 01-04 -->"; 43 echo "<ul class=\"level2\" style=\"display: none;\">"; 44 while ($row = $stmh0104->fetch(PDO::FETCH_ASSOC)) { 45 echo "<li><a href=\"#\" class=\"item-arrow\">"; 46 echo htmlspecialchars($row["ct_04"]); 47 echo "</a>"; 48 echo "</li>"; 49 } 50 echo "</ul><!-- 01-04 -->"; 51 echo "</li>"; 52 } 53 echo "</ul><!-- 01-03 -->"; 54 echo "</li>"; 55} 56echo "</ul><!-- 01-02 -->"; 57?> 58 59 </li><!-- 01-01 --> 60 <!-- 01-02 --> 61 <li><a href="#" class="item-arrow">Shunt</a> 62 </li><!-- 01-02 --> 63 </ul><!-- 01 --> 64</li><!-- Part Search --> 65</ul> 66</nav> 67
###試したこと
PHPでswitch : case などで振り分けが必要だと思いますが、sql文 だけで良い方法があれば
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/30 15:53