• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ループ内に任意行を差し込む処理を加えたい)

ループ内に任意行を差し込む処理を加えたい

このQ&Aのポイント
  • ループ内に任意行を差し込む処理を加えたい場合、特定の条件で分岐させることが必要です。
  • 以下のサンプルコードでは、IDを基準にデータを取得し、年ごとにグループ化して表示しています。
  • 条件分岐を行うためには、ループ内で年の情報を保持し、変更があった場合に特定の行を追加する処理を行うように設計する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

実際に試してませんがフロー的にはこんな感じでいけるのでは? $sql = "select ID,氏名,運動会開催年 from mytable order by ID,運動会開催年"; $res = mysql_query($sql, $con); $pre_nendo=""; $list =""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $nendo=$row["運動会開催年"]; if($pre_nendo!==$nendo){ if($list!=="") $list.="</ol>\n"; $list.="<div>{$nendo}年運動会</div>\n"; $list.= "<ol>\n"; } $list .= "<li>{$row["氏名"]}</li>\n"; $pre_nendo=$nendo; } if($list!=="") $list .= "</ol>\n"; $body.=$list;

litton101
質問者

お礼

yamabejpさん、完璧なコードをご提示くださりありがとうございました。 早速本番環境に組み込みまして、120%期待通りに動作しました。 最初にforで覚えたので、whileの使い方にあまりなれていないのですが、 こうやってやるんですね・・ 正直、いくら時間をかけて考えても、わたしでは解がでなかったと思われます。 このたびは(このたび'も')、本当に助かりました。ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まず年度でORDER BYが必要ですね で、年度がかわったら別のOLを書くようにすればよいでしょう

litton101
質問者

補足

yamabejpさん、いつもお世話になります。 ご回答ありがとうございます。 >で、年度がかわったら別のOLを書くようにすればよいでしょう ええっと、おっしゃるとおりなのでしょうが、 元質問のプログラムですと、OLがfor構文の外に出ていますよね? そうすると、年度が変わったという判定と</OL><OL>の記述というロジックを どう組み込んだらよいかさっぱり検討つかないのが元質問の主旨です。 ものすごい複雑な(冗長な?(^_^;)プログラムになってしまいそうな 気がするのですが・・・

関連するQ&A