大変失礼致しました。
質問させて頂きます。
アクセスランキング用のphpで定期的にhtmlが出力されるのですが
数パターンの出力をさせたいです。
該当部分の処理を記載します。
public function createRank($create = false, $rank_all = false, $start = null, $end = null) { $interval = CREATE_INTERVAL * 60; // 指定時間経っていない場合はランキングを生成しない if (CREATE_TIME + $interval >= $this->time && !$create) { return; } // リファラチェック、削除 $this->denyURLDelete(); list($url, $name, $count) = $this->rankProcess($start, $end); // 表示件数 $cnt = count($url); $loop = ($cnt < RANK_COUNT) ? $cnt : RANK_COUNT; if ($rank_all) { $loop = $cnt; } // 0件の場合は作成しない if ($cnt <= 0) { return; } // 以下の HTML 部分を編集 // 始まりに表示する部分です $html = '<ul '; $html2 = '<table> <thead> <tr><th>順位</th><th>サイト名</th><th>IN数</th></tr> </thead> <tbody>'; // ここまで $rank = 0; $rank_temp = 1; $prev_rank = 0; $prev_count = -1; for ($i = 0; $i < $loop; $i++) { if ($count[$i] == $prev_count) { $rank = $prev_rank; $rank_temp++; } else { $rank = $prev_rank + $rank_temp; $rank_temp = 1; } // 以下の HTML 部分を編集 // ループ部分です。ランキングの数だけ繰り返されます。 /* $rank : 順位 $url[$i] : アクセス元の URL $name[$i] : 表示する文字列 $count[$i] : アクセス数 */ $html .= '<li><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a><span>'.$count[$i].'IN</span></li>'; $html2 .= '<tr><td>'.$rank.'</td><td><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a></td><td>'.$count[$i].'</td></tr>'; $prev_rank = $rank; $prev_count = $count[$i]; } // 以下の HTML 部分を編集 // 終に表示する部分です。 $html .= '</ul>'; $html2 .= '</tbody></table>'; // ここまで $html = str_replace(array("\r\n", "\r", "\n", "\t"), '', $html); // 文字コード変換 $html = mb_convert_encoding($html, CHARACTER_CODE, 'UTF-8,JIS,EUC-JP,SJIS,sjis-win,ASCII'); $html2 = str_replace(array("\r\n", "\r", "\n", "\t"), '', $html2); // 文字コード変換 $html2 = mb_convert_encoding($html2, CHARACTER_CODE, 'UTF-8,JIS,EUC-JP,SJIS,sjis-win,ASCII'); $handle = fopen($this->rank_file, 'w'); fwrite($handle, $html); fclose($handle); $handle = fopen($this->rank_file2, 'w'); fwrite($handle, $html2); fclose($handle); // 生成時間を格納 $this->db->begin(); $this->db->update('setting', 'create_time = ?', array($this->time)); $this->db->commit(); }
上記の処理で結果が.htmlで指定したコードで生成されます。
それぞれ条件を指定したhtmlで出力させたいです。
現在上記で
html1の出力でul list
html2の出力でtable
と2種の出力が出来ていますが
ここに
$categoryがAだった場合html3として
$categoryがBだった場合html4として
加えて出力処理を追加したいです。
ifを使って
if ($count[$i] == $prev_count) { $rank = $prev_rank; $rank_temp++; } else { $rank = $prev_rank + $rank_temp; $rank_temp = 1; }
上記の下部分に
if ($category == 'A') { $html3 .= '<li><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a></li>'; }
といった処理を追加してみたのですが
ループ部分だけが出力されません(<li></li>)
追加処理の解決方法ご教授頂ければと思います。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。