- ベストアンサー
ループ内に任意行を差し込む処理を加えたい
- ループ内に任意行を差し込む処理を加えたい場合、特定の条件で分岐させることが必要です。
- 以下のサンプルコードでは、IDを基準にデータを取得し、年ごとにグループ化して表示しています。
- 条件分岐を行うためには、ループ内で年の情報を保持し、変更があった場合に特定の行を追加する処理を行うように設計する必要があります。
- みんなの回答 (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;
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
まず年度でORDER BYが必要ですね で、年度がかわったら別のOLを書くようにすればよいでしょう
補足
yamabejpさん、いつもお世話になります。 ご回答ありがとうございます。 >で、年度がかわったら別のOLを書くようにすればよいでしょう ええっと、おっしゃるとおりなのでしょうが、 元質問のプログラムですと、OLがfor構文の外に出ていますよね? そうすると、年度が変わったという判定と</OL><OL>の記述というロジックを どう組み込んだらよいかさっぱり検討つかないのが元質問の主旨です。 ものすごい複雑な(冗長な?(^_^;)プログラムになってしまいそうな 気がするのですが・・・
お礼
yamabejpさん、完璧なコードをご提示くださりありがとうございました。 早速本番環境に組み込みまして、120%期待通りに動作しました。 最初にforで覚えたので、whileの使い方にあまりなれていないのですが、 こうやってやるんですね・・ 正直、いくら時間をかけて考えても、わたしでは解がでなかったと思われます。 このたびは(このたび'も')、本当に助かりました。ありがとうございました。