人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPログファイルを呼び出し、10件以上で 次のページへ>
とする、簡易ページャーを作りたいのです。
【以下スクリプト】
<?php
//===============一覧の表示===================
$lines = file("main.log"); // ファイルの内容を配列に格納
$num = count($lines);
for($i=0; $i<$num; $i++){
if(isset($lines[$i])){
$str = explode(",", $lines[$i]);

//===============一覧の表示(HTML) ===================
echo "<table width=\"240\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
echo "<tbody><tr>\n";
echo "<td width=\"30\" valign=\"top\"><img width=\"30\" height=\"40\" border=\"0\" alt=\"".$name."\" src=\"../img/gravure/".$number."_th.jpg\"/></td>\n";
echo "<td valign=\"top\"><font color=\"#333333\" size=\"1\">".$shop."</font><br/>\n";
echo "<font color=\"#333333\" size=\"1\">[".$area."/".$type."]</font><br/>\n";
echo "<a href=\"".$number.".php\"><font color=\"#ff3366\" size=\"1\">".$name.$age."</font></a><br/>\n";
echo "</td>\n</tr>\n</tbody>\n</table>\n";
echo "<font color=\"#999999\" size=\"1\">└".$title."</font>\n";
echo "<hr color=\"#cccccc\" size=\"1\"/>\n";
}
?>

explode(",", $lines[$i]); 変数の指定は省略しました。

これだと、当然ログファイル全件だ????っと出てくるとのですが・・・。色々調べたのですが、うまくいかず・・・

●質問者: goodbabies
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Area echo HTML name Op.
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● shellcat
●42ポイント

http://d.hatena.ne.jp/shellcat/

URLはダミーです。


//===============一覧の表示===================
$page = $_GET['page'] || 0;

$lines = file("main.log"); // ファイルの内容を配列に格納
$num = count($lines);

for ($i = 10 * $page; $i < 10 * ($page + 1); $i++){
if ($i >= $num) break;

if(isset($lines[$i])){
$str = explode(",", $lines[$i]);

//===============一覧の表示(HTML) ===================
echo "<table width=\"240\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
echo "<tbody><tr>\n";
echo "<td width=\"30\" valign=\"top\"><img width=\"30\" height=\"40\" border=\"0\" alt=\"".$name."\" src=\"../img/gravure/".$number."_th.jpg\"/></td>\n";
echo "<td valign=\"top\"><font color=\"#333333\" size=\"1\">".$shop."</font><br/>\n";
echo "<font color=\"#333333\" size=\"1\">[".$area."/".$type."]</font><br/>\n";
echo "<a href=\"".$number.".php\"><font color=\"#ff3366\" size=\"1\">".$name.$age."</font></a><br/>\n";
echo "</td>\n</tr>\n</tbody>\n</table>\n";
echo "<font color=\"#999999\" size=\"1\">└".$title."</font>\n";
echo "<hr color=\"#cccccc\" size=\"1\"/>\n";

if ($page > 0) echo "<a href=\"./?page=" . ($page - 1) . "\">前へ</a>";
if ($page < int(($num - 1) / 10)) echo "<a href=\"./?page=" . ($page + 1) . "\">次へ</a>";
}

こんな感じですか


2 ● GreenStar
●33ポイント ベストアンサー

簡単な例を作ってみました。

<?php
//===============環境設定===================
$page = 10;
//===============ファイルの読み込み===================
$lines = file("main.log"); // ファイルの内容を配列に格納
$num = count($lines);
$p = (isset($_GET['row']) ? min(max(0, $_GET['row'] - 1), floor($num / $page)) : 0);
//===============リンク作成===================
$link = ($p > 0 ? '<a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . $p . '">前の' . $page . '件</a> ': '') .
 ($p + 1) .
 ($num - $page * $p > 1 ? ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次の' . $page . '件</a> ': '');
echo $link;
//===============一覧の表示(TABLEヘッダ) ===================
echo '<table width="240" cellspacing="0" cellpadding="0" border="0"><tbody>';
//===============一覧の表示(TABLEボディ) ===================
for($i=0; $i < $page; $i++){
 if(isset($lines[$page * $p + $i])){
 $str = explode(",", $lines[$page * $p + $i]);
 echo '<tr><td>' . $str[0] . '</td><td>' . $str[1] . "</td></tr>\n";
 }
}
//===============一覧の表示(TABLEフッタ) ===================
echo '</tbody></table>';
echo $link;
?>

上記で利用する main.log の中身は以下のようにとりあえず2列にしていますので、上記スクリプトでは$strは[0]と[1]の二つになっています。列の数だけ$str[2]、$str[3]・・・と適宜増やしてください。

1,a1
2,a2
3,a3
・・・同様に続く

今回は特に参考にしているサイトも無いのでURLは無しです。

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます!参考になりました!


3 ● ホーエンハイム
●5ポイント

PEAR :: Pager を利用した方が早いと思いますよ。ご検討ください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ