CONVの使い方:複置換変:ループ
ループ系複置換の基本は
「"ハッシュ配列"の配列」を作って渡すこと。
で、data_clumpと組み合わせた方法。…ちなみに「SQL文使ってpkのlistを作る」のは、おいちゃん的には結構いや(笑
なにがしか今度作りたいなぁ。
ページ処理したい時は、page_controll_limit クラスと適宜併用してちょ。
まずはテンプレート書式。適当に、掲示板的なものを想定(一行横に並ぶ掲示板ってのもどうかとは思うけど)。
デザインがなってないとかいう突っ込みは禁止(笑
<TABLE border="1"> <tr> <td>タイトル <td>名前 <td>投稿日時 <td>email <td>本文 $$$bbs_loop$$$ <tr> <td>%%%title%%% <td>%%%name%%% <td>%%%insert_date%%% <td>%%%email%%% <td>%%%body%%% $$$/bbs_loop$$$ </table>
んで、プログラム側。ぢつは結構シンプル。PKは1つであると仮定〜。
ID配列の作成とぶん回しは一緒にしてもいいんだけど、説明のしやすさを基準に分離してまふ。
// PKなID配列の取得 $sql = SQL文; // "SELECT bbs_id FROM bbs WHERE 適当な条件;" とかね。 $ids = array(); $res = DBハンドルインスタンス->query($sql); wihle($res->fetch()) { $ids[] = $res->get_data(0); } // データを設定する $data = array(); $obj = new bbs_clump(); foreach($ids as $id) { // データをゲト $obj->init(); $obj->set_db(DBハンドルインスタンス); $obj->set_value('bbs_id', $id, false); // 直前でIDげとってるんでエラー処理は省いてまふ。チェックするなら、booleanでfalseが返ってきたらNG処理ってことで $obj->get(); // ハッシュ配列に情報をげと $wk = $obj->get_all_data_to_hash(); // XXX 情報を追加するなら、ここで$wkに対してkeyとvalueを適宜設定 // データを設定 $data[] = $wk; } // CONVに設定 // XXX 知っている人に。simple_loop、インスタンス生成でいきなりset_data出来るように改造した〜 CONVインスタンス->multiDic('bbs_loop', new simple_loop($data));
こんなげ。