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

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

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

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

Q&A

解決済

2回答

1327閲覧

ページングで表示するページリンクを五つまでにしたい

Kuriaki

総合スコア85

PHP

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

0グッド

0クリップ

投稿2017/04/10 09:52

現在
<<先頭 << 1 2 3 4 5 6 7 8 >> 最後>>

今はこのようにすべてのページが表示されています。
解決したいのはこのページを最大五つまでにしたいです。
1 2 3 4 5 そして次のページをクリックしたら
2 3 4 5 6 になるように。

まったく方向が見つからないため、こちらで質問させていただきました。
アドバイスや、ヒントなどいただけたら幸いです。
回答よろしくお願いいたします。

php

1<html> 2<head> 3 4<title>DB</title> 5<link rel="stylesheet" type="text/css" href="css.css"> 6</head> 7<body> 8 9<form method="post" name="form" action="insert.php" > 10<input type="text" name="name"> 11<input type="submit"> 12</form> 13 14<table border="2" cellspacing="10"> 15 <tr> 16 <td style="background:green; color:white;">ID</td> 17 <td style="background:green; color:white;">入力値</td> 18 <td style="background:green; color:white;">詳細</td> 19 </tr> 20<?php 21header('content-type:text/html;charset=utf-8'); 22 $link = mysql_connect('localhost', 'root', ''); 23if (!$link) { 24 die('接続失敗です。'.mysql_error()); 25} 26 27$db_selected = mysql_select_db('kd', $link); 28if (!$db_selected){ 29 die('データベース選択失敗です。'.mysql_error()); 30} 31mysql_set_charset('utf8'); 32 $sql="select * from user order by id desc"; 33 $result=mysql_query($sql); 34 $num=mysql_num_rows($result); 35 $pageSize=5; 36 $pageCount=ceil($num/$pageSize); 37 $pageNo=isset($_GET['page'])?$_GET['page']:1; 38 $pageNext=$pageNo+1; 39 $pagePrev=$pageNo-1; 40 41 42 if($pageNext>$pageCount) $pageNext=$pageCount; 43 if($pagePrev<1) $pagePrev=1; 44 if($pageNo>$pageCount) $pageNo=$pageCount; 45 if($pageNo<1) $pageNo=1; 46 47 $offset=($pageNo-1)*$pageSize; 48 mysql_data_seek($result, $offset); 49?> 50 51<style type="text/css"> 52 tr{background-color:#ffffff; font-size:12px;} 53 td{text-align:center;height:30px;} 54 55</style> 56 57 <tr> 58 <?php 59 60 for ($i=0; $i <$pageSize ; $i++){ 61 $row=mysql_fetch_assoc($result); 62 if ($row){ 63 } 64?> 65 <td><?php echo $row['id']?></td> 66 <td><?php echo $row['name']?></td> 67 <td id="ss" name="ss"><a href="info.php?id=<?php print $row['id']; ?>">詳細</a></td> 68 69 </tr> 70 71 <?php 72 } 73 74 ?> 75 76 77</table> 78 79<div id="ctrl"> 80 81 <div id="aa"> 82 <a style="width: 70px;" href="Page.php?page=1"><<先頭</a> 83 <a style="width: 40px;" href="Page.php?page=<?php echo $pagePrev?>"><<</a> 84 <?php 85 for($i=1;$i<=$pageCount;$i++){ 86 echo '<a href="Page.php?page='.$i.'">'.$i.'</a> '; 87 } 88 ?> 89 <a style="width: 40px;" href="Page.php?page=<?php echo $pageNext?>">>></a> 90 <a style="width: 70px;" href="Page.php?page=<?php echo $pageCount?>">最後>></a> 91 </div> 92 93</div> 94</body> 95</html>

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

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

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

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

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

guest

回答2

0

ベストアンサー

単純に次ページで2 3 4 5 6としたらダメですよね。
1ページ目に戻れない。
現在のページを中心に前後2ページじゃないでしょうか。
という前提で修正してみました。
最後のfor文のところを下記に置き換えてみてください。
修正ついでに現在ページの番号はリンクをしないようにしていますが、気に入らなかったら元に戻してください。

PHP

1// 出力する範囲を算出(もう少しスッキリまとめたかった…) 2if($pageCount <= 5){ 3 $pageSt = 1; 4 $pageEd = $pageCount; 5} else { 6 $pageSt = ($pageNo - 2 < 1)? 1: $pageNo - 2; 7 if($pageSt + 4 >= $pageCount) $pageSt = $pageCount - 4; 8 $pageEd = ($pageSt + 4 > $pageCount)? $pageCount: $pageSt + 4; 9} 10// ページ番号出力 11for($i = $pageSt; $i <= $pageEd; $i++){ 12 if($i == $pageNo){ 13 echo $i.' '; 14 } else { 15 echo '<a href="Page.php?page='.$i.'">'.$i.'</a> '; 16 } 17}

投稿2017/04/11 01:43

ttyp03

総合スコア16996

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

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

Kuriaki

2017/04/11 05:28

回答ありがとうございます。 ベストアンサーになせて頂きます。
guest

0

「1~最大ページ」までループしてページリンクを表示している箇所を「現在ページ~(現在ページ+4)」までループするように変更すればいいのではないでしょうか?

以下のような感じです。

php

1for($i=$pageNo; $i<=min($pageNo + 4, $pageCount); $i++){ 2 echo '<a href="Page.php?page='.$i.'">'.$i.'</a> '; 3}

投稿2017/04/10 10:21

ku__ra__ge

総合スコア4524

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

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

Kuriaki

2017/04/11 04:52 編集

ありがとうございます。 意外とこういうところで頭がまわらなくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問