• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【PHP】 次の5件の記事を表示させるには?)

【PHP】次の5件の記事を表示させるには?

99Micchiの回答

  • ベストアンサー
  • 99Micchi
  • ベストアンサー率100% (1/1)
回答No.2

私は総記事数と総ページ数を求めて、 表示の開始件数と終了件数を出して表示しています。 $log=5; $page=htmlspecialchars($_GET["page"]); $page_num=htmlspecialchars($_GET["page_num"]); $total=htmlspecialchars($_GET["total"]); //最初にアクセスしたときに求める if(!$page){ $total = count(記事); $page_num = ceil($total/$log); $page=1; } $start=$log*($page-1); $end=$start + $log; if($total < $end){$end=$total;} //page=2なら6件目から10件目を表示 for ($i=$start; $i< $end; $i++) { 表示処理 } if ($page > 1) { $navi .= "<a href = '$PHP_SELF?page=" . ($page - 1) . "&total=$total&page_num=$page_num'>" . "前のページ</a>"; } if ($total > 1 and $page < $page_num) { $navi .= "<a href = '$PHP_SELF?page=" . ($page + 1) . "&total=$total&page_num=$page_num'>" . "次のページ</a>"; } print"$navi"; 最初・最後のページなども同じようにできると思います。

orz_zin_l
質問者

補足

回答有り難う御座います。 何となく仕組みが分りかけてきましたが・・・後一歩^^; 「(!$page)」これがpage数が有ったらと解釈するのですよね? 「…count(記事);」の「記事」の代入は私の場合「log.txt」で良いのでしょうか? まず、これで、記事のログ総数が求められますね。この部分は分ります。 「ceil($total/$log);」のceil関数は大きい整数を返すと言う意味だと解釈すると「/」この意味はなんなんでしょうか? 「$start=$log*($page-1);」ここの計算で、ページ数による5単位で記事開始の記事番号を意味的には$startに入れてるのですよね? 例えば、2ページ目なら5×2=10と言う様な感じで。(表示の開始件数) 「$end=$start + $log;」の所で10+5=15(終了件数)の意味ですよね? $totalは、記事ログの総数、「if($total < $end){$end=$total;}」この意味は分かるのですが、何故、ここで$end=$totalとする必要性が今一わかりません^^; 一部まだ理解できない部分があるのですが…汗、とりあえず、もし宜しければ、これだけでも、再度、解説宜しくお願いします。

関連するQ&A

  • 自作PHPブログでの記事を10件ずつ表示する方法に

    自作PHPブログでの記事を10件ずつ表示する方法について http://ponk.jp/php/basic/blog こちらのサイトさんを参考にPHPで自作のブログを制作しているのですが、 最新の記事10件ずつ表示させたい場合はどのような記述をすれば良いのでしょうか? 具体的に書いて頂けると嬉しいです。 「前ページ」と「次ページ」的なリンクを貼りたいと思っております。 一番最古の記事のページまで行くと「前ページ」リンクも消えるようにしたいのです。

    • ベストアンサー
    • PHP
  • 【PHP】 記事の削除について(ログの一部を削除)

    log.txt ファイル の中身が下の様になっていた場合、削除したい記事番号を選び削除キーを押したら 選んだ記事番号の記事を削除するにはどうしたらよいでしょうか? ◆ log.txtファイルの中身 1 あああ君 おはよう ・ 3 かかか君 良い天気ですね ・ ・ 6 そそそ君 明日は晴れるでしょ ※ 記事番号($no) 名前($name) 内容($body)と配列がなっています。(全角の空白で区切ってます) ◆ 削除したい記事番号を選ぶ所のファイル名は 「file01.php」 としています。   「file01.php」では次ぎの様に削除キーを設定しています。 <table><tr><td> <form name="form" action="file02.php" method="POST"> <input type="text" name="delkey" size="8"> <input name="Submits" type="submit" value="削除"></form> </td></tr></table> ◆ 「file01.php」からのデーターの受け取りファイル名は 「file02.php」としています。   「file02.php」では次ぎの様にしてデーターを受け取る様にしています。 <?php $delkey = $_REQUEST["delkey"]; $data = file("log.txt"); for($i=0; $i<sizeof($data); $i++){ list($no,$name,$body) = explode( " " , $data[$i]); if($no == $delkey){ //・・・記事削除処理 } } ・ ・ ・ ?> ◆ 書込みは次ぎの様にしています。 $fp = fopen("log.txt","w"); $ndata = implode( " " , array($no,$name,$body."\n") ); fputs($fp,$ndata); fclose($fp); ここまではやってみましたが、ここから、どのような仕組みで選んだ記事番号の記事を削除したらよいのか分らないので教えて下さい? また、記事削除の処理をした場合、ログファイルを元のと書きかえるいはどうしたらよいのでしょうか教えて下さい? 例えば、選んだ削除番号が「3」だった場合など・・・記事削除処理のところはどうしたらよいのでしょうか? if の所では、記事番号($no)が選んだ削除したい記事番号($delkey)と等しいなら、・・・記事削除処理 と言う様にしています。 記事削除処理のところは、記事削除の仕組み仕方が分らないので空白となっています。 以上、出来れば詳しく教えて頂けると助かります。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 自作PHPブログでの記事を5件ずつ表示する方法に

    自作PHPブログでの記事を5件ずつ表示する方法について PHPで自作のブログをサイト等を参考に制作しているのですが、 最新の記事5件ずつ表示させたい場合はどのような記述をすれば良いのでしょうか? 「前ページ」と「次ページ」的なリンクを貼りたいと思っております。 一番最古の記事のページまで行くと「前ページ」リンクも消えるようにしたいのです。 pager等を検索したのですが、いまいち自分の物に組み込むとなるといまいちよくわからなくなります。 LIMITで5件表示まではわかったのですが、「次へ」で6~10件表示の仕方がわかりませんでした。 どのような記述が良いでしょうか、よろしくお願いします。 <?php $pdo = new PDO("mysql:dbname=blog", "root"); $st = $pdo->query("SELECT * FROM post ORDER BY no DESC LIMIT 5"); $posts = $st->fetchAll(); for ($i = 0; $i < count($posts); $i++) { $st = $pdo->query("SELECT * FROM comment WHERE post_no={$posts[$i]['no']} ORDER BY no DESC"); $posts[$i]['comments'] = $st->fetchAll(); } require 't_index.php'; ?> t_index.phpで表示のプログラムを書いています。

    • 締切済み
    • PHP
  • カテゴリの記事を最新記事一件だけ表示したい

    MovableTypeのカスタマイズで困ってます。 カテゴリにおいて、記事数が数件ある時に、 最新の記事一件だけを表示させて、 残りの記事は、 「このカテゴリの記事一覧」のように、 エントリーページへのリンクを張るようにしたいと思います。 カテゴリの記事一覧はできたのですが、 カテゴリにおいて最新の記事を一件だけ表示する方法が分かりません。 ご存知の方がおりましたら、ぜひ教えてください。 よろしくお願いします。

  • 【PHP】 リンクに関した質問です。

    ブログを作成しいて、【最新コメント者】と言う所には、各日記の記事に対してコメントを 付けた方の名前が最新順に記される様にしています。 例えば… 【最新コメント者】 おはよう君 こんばんわ君 ・ ・ ・ おやすみ君 …と言う様に、それで今回の質問とは、その【最新コメント者】の所の名前をクリックしたら その名前の方が付けたコメントの記事にリンクする様にするにはどうしたらよいでしょうか? よろしくお願い致します。教えて下さいませ。 ◆ 【最新コメント者】の表示させるPHPソースの所では次ぎの様にしてあります。 <?php //log.txt は、コメントのログファイルです。 //$name には、コメントを付けた方の名前です。 //$bo には、コメントを付けた所の日記記事の番号(インデックス)です。 $log = file("log.txt"); for($i=0; $i<sizeof($log); $i++){ list($bo,$name) = explode( "," , $log[$i]); print "<a href=\"#$bo\">".$name."</a><br>\n"; } ?> ◆ 各日記の記事の最初のソースの所では次ぎの様にしてあります。 <?php //$no には、日記の記事の番号(インデックス)が代入されるようにしてあります。 print "<a name=\"$no\"></a>"; ?> この仕組みだと、最初に表示されているページ内に、コメントを付けた日記の記事番号があれば 付けたコメントの日記記事にリンクされるのですが、そのページに無い日記の記事番号の場合 コメントを付けたページの所のリンクされません。 ◆ ちなみに、ページリンクに関したソースは次のような感じにしてあります。 <?php if ($page > 1){$tugi .= "<a href = '$PHP_SELF?page=".($page - 1)."&total=$total&page_num=$page_num'>"."<b>次の記事</b></a>"; }print"$tugi"; if ($total > 1 and $page < $page_num){$mae .= "<a href = '$PHP_SELF?page=".($page + 1)."&total=$total&page_num=$page_num'>"."<b>前の記事</b></a>"; }print"$mae"; ?>

    • 締切済み
    • PHP
  • 【PHP】 リンクに関した質問です。

    ブログを作成しいて、【最新コメント者】と言う所には、各日記の記事に対してコメントを 付けた方の名前が最新順に記される様にしています。 例えば… 【最新コメント者】 おはよう君 こんばんわ君 ・ ・ ・ おやすみ君 …と言う様に、それで今回の質問とは、その【最新コメント者】の所の名前をクリックしたら その名前の方が付けたコメントの記事にリンクする様にするにはどうしたらよいでしょうか? よろしくお願い致します。教えて下さいませ。 ◆ 【最新コメント者】の表示させるPHPソースの所では次ぎの様にしてあります。 <?php //log.txt は、コメントのログファイルです。 //$name には、コメントを付けた方の名前です。 //$bo には、コメントを付けた所の日記記事の番号(インデックス)です。 $log = file("log.txt"); for($i=0; $i<sizeof($log); $i++){ list($bo,$name) = explode( "," , $log[$i]); print "<a href=\"#$bo\">".$name."</a><br>\n"; } ?> ◆ 各日記の記事の最初のソースの所では次ぎの様にしてあります。 <?php //$no には、日記の記事の番号(インデックス)が代入されるようにしてあります。 print "<a name=\"$no\"></a>"; ?> この仕組みだと、最初に表示されているページ内に、コメントを付けた日記の記事番号があれば 付けたコメントの日記記事にリンクされるのですが、そのページに無い日記の記事番号の場合 コメントを付けたページの所のリンクされません。 ◆ ちなみに、ページリンクに関したソースは次のような感じにしてあります。 <?php //ページは $page の変数を使ってページを出力していますので、個別ページはありません。 if ($page > 1){$tugi .= "<a href = '$PHP_SELF?page=".($page - 1)."&total=$total&page_num=$page_num'>"."<b>次の記事</b></a>"; }print"$tugi"; if ($total > 1 and $page < $page_num){$mae .= "<a href = '$PHP_SELF?page=".($page + 1)."&total=$total&page_num=$page_num'>"."<b>前の記事</b></a>"; }print"$mae"; ?>

    • 締切済み
    • PHP
  • 【PHP】 書込みされた事を知らせる為のアイコン表示

    私の理想のイメージは、abc.php ファイルの掲示板に書込み(新規・返信)されたら、zyx.php ファイルの方で その abc.php ファイルの掲示板で書込みされた事を知らせる為のマーク up.gif (アイコン)を、書き込まれた日から 24時間(1日)の間表示させたいのです。 ◆ log.txt ファイル(掲示板の書込みログ) 1,みかん君,2008/04/16 15:19:14 ・ 3,りんご君,2008/04/13 22:19:32 ・ ・ 6,ぶどう君,2008/04/11 08:19:48 ・ ・ 以下省略 【 log.txt ファイルの補助説明 】 ※ 「 , 」(カンマ)で区切りを付けてます。 ※ インデックス,名前,日付 と言う順に配列がなっています。 ※ log.txt ファイルは、上から最新順に書き込まれるようにしてあります。 ※ インデックス($no) 名前($name) 内容($date)と配列がなっています。 ◆ abc.php ファイル(掲示板ページ) $fp = fopen("log.txt","a"); flock($fp, LOCK_EX); $data = implode( "," , array($no,$name,$date."\n") ); fputs($fp,$data); flock($fp, LOCK_UN); fclose($fp); 【 log.txt ファイルの補助説明 】 ※ 掲示板での書き込み処理です。 ◆ zyx.php ファイル(up.gif (アイコン)を表示させたいページ) <? $files = file("log.txt"); $logdata = $files[0]; list($no,$name,$date) = explode( "," , $logdata); if($no != ){ } ?> ここまではやってみましたが、ここから、どのようにしたらよいのか分らないので教えて下さい? また、if で、どのように条件を定義してよいかも分りません。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 「次の10件を表示する」のような表示がしたい

    住所録を表示するページをPHPで作成しました。 問題なくできたのですが、データが増えたので一度に表示するのは例えば20件とかにして、「次の20件」のようなボタンをおすと、 21件~40件を表示させ、そのページには、 「前の20件」と「次の20件」のボタンを表示させたいと考えています。 最初のページには、「前の20件」ボタンはなく、 最後のページには、「次の20件」ボタンは表示させないように考えています。 どのようにすればよろしいでしょうか。 ご教授ください。 ************************************************ 作成したPHP ************************************************ <?php print("<table>"); $cont = mssql_connect("サーバ名","ユーザ名","パスワード"); mssql_select_db('DB名', $cont); $sql = "select * from テーブル名 $rc = mssql_query($sql,$cont); while ($array = mssql_fetch_array($rc)) { print("<tr>"); print("<td>"); print "".$array["氏名"].""; print("</td>"); print("<td>"); print "".$array["住所"].""; print("</td>"); print("</tr>"); } print("</table>"); mssql_close($cont); ?> ************************************************ 環境 PHP5.2 Apache2.2 SQLserverVersion5 PHPとSQLは別サーバになります。 両サーバOS:windows

    • ベストアンサー
    • PHP
  • csvからphpを使って商品ページを表示させたい?

    phpがまったくわからない初心者ですがよろしくお願いします。 CSVファイルにはコード番号、商品名、値段、説明文があるとします。 phpを使って商品ページの一覧を表示させたいと思います。 表示は逆順に表示して、できれば20件ごとに「次へのページ」へリンクと「戻る」のリンクを付けたいのですがどのようにプログラムを書けばいいのでしょうか? ほどんど丸投げ状態ですがよろしくお願いします。

    • 締切済み
    • PHP
  • PHPでログをページで区切って表示するようにするには?

    いろんなHPを見ながら掲示板を自作しているのですが 後は、PHPでログをページで区切って表示するようにする方法がどうしても わからないのです たとえば1Pの表示件数が10件超えたらそこまでの記事は前のページに飛べば見れる ような形にしたいのです どなたかご伝授お願いします・・・

    • 締切済み
    • PHP