質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

283閲覧

出力されるhtmlを条件指定したい

ryches

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/03/21 16:33

編集2018/03/22 17:44

大変失礼致しました。

質問させて頂きます。

アクセスランキング用の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>

追加処理の解決方法ご教授頂ければと思います。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

同様の結果をListでも出力

するための詳しい仕様が提示されていませんので、
どういう表示になればListになるのか図示するなり言葉で説明を加えるなりしてください。

どなたか対応方法をご存知の方はいませんでしょうか

そもそも、どういうアウトプットを求めているのか不明瞭です。
誤解が生じない程度に説明を加えてください。

simaccessといったphpを使用しております

がどう質問の主旨に関係してくるのでしょうか。

こういう結果を導き出すために、
こういうことをやってみたんだけど、
これこれが障害になって解決できない、
どうしたらいいでしょうか、
という流れでもう一度質問内容を組み立て直してください。

投稿2018/03/22 01:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問