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

PHP 簡易ページャーの仕組みがよく分からない・・・

$page = 10;
//===============ファイルの読み込み===================
$lines = file("m_main.log"); // ファイルの内容を配列に格納
$num = count($lines);//m_main.logの合計件数
$p = (isset($_GET['row']) ? min(max(0, $_GET['row'] - 1), floor($num / $page)) : 0);
//===============リンク作成===================
$link = ($p > 0 ? '<a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . $p . '">前ページ</a> ': '') .
($p + 1) .
($num - $page * $p > 1 ? ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次ページ</a> ': '');
echo $link;

こちらで質問して、頂いた回答なのですが、いざ設置して、うごいても仕組みがよくわかりません。初心者なので、なんでも
if(○○){△△△}
と、書いてしまうので、文法がちんぷんかんぷんです・・・『?』とか『:』っていったいなんなのでしょう??
ちなみに、このページャーだと、次のページが無くても、
例えば10件?16件目までの中途半端な数になっても、『次ページ』と、リンクが出てしまいます・・。これもどうにか直したいです


●質問者: goodbabies
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo LINK Max PHP うご
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hatake-kakasi
●5ポイント

それは三項演算子といいます。

◎質問者からの返答

三項演算子ですね。

これで辞書がひけます。ありがとうございます。


2 ● ko8820
●5ポイント

条件 ? 真の時 : 偽のとき

IF文でかくと

if(条件){ 真の時}else{偽の時}

◎質問者からの返答

ありがとうございます。


3 ● GreenStar
●70ポイント ベストアンサー

(1)まずは間違い部分の訂正からさせていただきます。

(質問終了は納得したという意思表示にもなります。納得するまでは締め切りにして新規回答を受け付けないようにして検証し、返答欄に不明点を書き込み、回答者はコメント欄で応答するのが賢いやりかたです。)

$num - $page * $p > 1

$num - $page * $p > $page

残りが$pageより多ければ続きがあるという認識にしなければなりませんでした。検証不足で申し訳ない。


(2)三項演算子をIFに直してみると以下のような具合になります。

三項演算子
$p = (isset($_GET['row']) ? min(max(0, $_GET['row'] - 1), floor($num / $page)) : 0);

IF分岐
if (isset($_GET['row'])) {
 $p = min(max(0, $_GET['row'] - 1), floor($num / $page));
} else {
 $p = 0;
}
三項演算子
$link = ($p > 0 ? '<a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . $p . '">前の' . $page . '件</a> ': '') .
 ($p + 1) .
 ($num - $page * $p > $page ? ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次の' . $page . '件</a> ': '');

IF分岐
$link = $p + 1;
if ($p > 0) {
 $link = '<a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . $p . '">前の' . $page . '件</a> ' . $link;
}
if ($num - $page * $p > $page) {
 $link .= ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次の' . $page . '件</a> ';
}

(3)代入演算子

上記説明で使ったものです。下記2行は同じ結果になりますが代入演算子のほうが少しですがスッキリします。

$link .= ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次の' . $page . '件</a> ';
$link = $link . ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?row=' . ($p + 2) . '">次の' . $page . '件</a> ';

http://www.php.net/manual/ja/language.operators.assignment.php

◎質問者からの返答

前回の質問より、大変お世話になりました。以後質問方法については気をつけたいと思います。

大変勉強になりました!ありがとうございました。

関連質問


●質問をもっと探す●



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