http://oshiete.goo.ne.jp/qa/8277847.html
で、No2のagunuz様にご教示いただいたサンプルを以下のように組み込みました。
(当方コメントは■です)
$sv_magazine = '';
while ($col = mysql_fetch_array($rst)) {
$magazine = $col['magazinecode'];
if ($magazine !== $sv_magazine) {
if ($sv_magazine !== '') {
// 前のマガジン番号($sv_magazine)のフッタ(必要があれば)
$body .= "</ul>\n"; //■この行を加筆しました
}
// 今読んだマガジン番号($magazine)のヘッダ
$body .= "<h1>【" . $col['yyyymm'] . "】</h1>\n"; //■この行を加筆しました
$body .= "<ul>\n"; //■この行を加筆しました
$sv_magazine = $magazine;
}
// $col から明細を出力
$body .= "<li>". $col["category"] ; //■ここから・・・・
$body .= "<ul>\n";
$body .= "<li>" . $col["title"];
$body .= "<ul>\n";
$body .= "<li>" . $col["author"];
$body .= "</ul>\n";
$body .= "</ul>\n"; //■・・・ここまでの行を加筆しました
} // ループ終了
if ($sv_magazine !== '') {
// 最後のマガジン番号($sv_magazine)のフッタ(必要があれば)
$body .= "</ul>\n"; //■この行を加筆しました
}
上記を実行し、元質問にお示ししたサンプルレコードを読み込むと、以下のように出力されます。
(箇条書きインデントのポツのレベルは、1は●、2は◇、3は◎と仮定します)
ただ、当前ですが、同じ号の同じ「分類(『特集』、『連載』などの文言)」が2回目以降にもでてくるのはスマートでないので、注記した行は間引いて、以下のようにスッキリHTMLに出力表示させたいと思います。
【2013年5月号】
●特集:折り紙
◇作成法1
◎山本
●特集:折り紙 【←この行は2度目なので間引いて表示しない】
◇作成法2
◎佐藤
●特集:折り紙 【←この行も3度目なので間引く】
◇作成法3
◎岩田
●連載
◇はさみ研ぎ方
◎伊藤
●連載 【←この行は2度目なので間引く】
◇のりの選び方
◎野口
当方での想像として、ループ中、もし$col["category"]の文字列が前に出てきたのと同一ならスキップ(非表示)でいいよ、というスイッチを加筆すれば良さそうですが、どのように記述したらよろしいでしょうか。
(質問とぜんぜん関係ないですが、冒頭のコードで、$sv_magazine = '';と初期化?させているのは理解できますが、WHILEの外側でなぜ効くのか、悩んでます(^_^;)
No.1ベストアンサー
- 回答日時:
私の以前のPDOを使った回答で
// 結果を取り出して表示しやすいようにセットしていく
$data = array();
foreach ($stmt as $row) {
if ($row['title'] === '') {
$data[$row['yyyymm']][$row['category']] = '';
} elseif ($row['category'] === '') {
$data[$row['yyyymm']][$row['title']] = $row['author'];
} else {
$data[$row['yyyymm']][$row['category']][$row['title']] = $row['author'];
}
}
としているところがあったと思いますが、このように一度連想配列にセットすることで、親見出しが重複するものを一つにまとめることができます。mysql関数を使った場合でもやってることは同じなので参考にしてください。
(PDOが一見難しそうに見えるかもしれませんが、「クラスとオブジェクトが分からない」という思い込みから毛嫌いしているだけかもしれないので、チャレンジしてみてください。実際何も難しいことはありません。コーディング自体もPDOを使ったほうが短く書けますしラクです。)
>> (質問とぜんぜん関係ないですが、冒頭のコードで、$sv_magazine = '';と初期化?させているのは理解できますが、WHILEの外側でなぜ効くのか、悩んでます(^_^;)
変数のスコープ
http://php.net/manual/ja/language.variables.scop …
スコープを構成する単位には「グローバル空間」「名前空間」「クラス」「メソッド」「関数」「無名関数(クロージャ)」などがあります。「if」「while」「for」「foreach」などが含まれていないことに注意してください。このあたりが他の言語と実装が大きく異なります。PHP独特です。
To_aru_Userさん、いつもお世話になります。また、早速のご回答ありがとうございました。
PDOですが、一度は前回もご教示いただいたサイトなどを確認しながら導入をやりかけたのですが、php.iniの編集などでつまづいていました。
とりあえず、今回の雑誌索引は、当面社内LAN内での運用にとどまる見込みで、対外的(WWW)に公開するとなればそのときでよいかと後回しになっていました。全て言い訳ですが。。。どうもすみません。いずれ必ず取り組む課題の筆頭にはなっております。
>このあたりが他の言語と実装が大きく異なります。PHP独特です。
詳しく教えていただき大変ありがとうございます。
やや難しい話ですが、事情がわかって非常にすっきりしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS htmltとcssの連携をして画像縮小について 1 2022/11/15 20:32
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
PHPでCSVを出力するさいに、ル...
-
ワードプレスサイト PHP8.0.25...
-
PHPを使って、別サイトの一部を...
-
PHP ページング データベース
-
Q&Aサイトを作成していてURLの...
-
PHPの構文で間違えが分からない
-
書籍とその書籍が提供している...
-
PHPとHTML+Xamppの掲示板で画像...
-
ファイルの書き込みについて教...
-
Postgresの特定のカラムからス...
-
htmlspecialcharsが機能してい...
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
awsにApacheとPHPを入れて、何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
PHPで[]の使い方について
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
sortable ギブアップです…助け...
-
PHPでMY SQLの連想配列をリンク...
-
checkboxクリック時、SQLを実行...
-
チェックボックスによる複数の...
-
PHPでMySQLデータを呼び出し、w...
-
mysql_fetch_objectの書き方を...
-
SELECT結果から動的にコンボボ...
-
チェックボックスでチェックし...
-
VBA初心者です。
-
PHPについてなのですが未定義の...
-
文字化けが解決できません。お...
-
htmlとphpの分離
-
php テーブルが作成できない
-
検索結果をgoogleのように数件...
おすすめ情報