サーラリマンは働き過ぎ、社畜化に注意しよう!!

students mysql php ページング処理方法

mysql

php

mysql -u root -p

create database students;

use students;

GRANT SELECT,UPDATE,INSERT,DELETE ON students.* TO ‘user’@’localhost’;

//MyISAM で作ったほうがトラブルは少ないそうだ

CREATE TABLE `students` ( `ID` int(11) NOT NULL auto_increment, `Name` varchar(250) NOT NULL, `PhoneNumber` varchar(250) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT;

INSERT INTO students (Name,PhoneNumber) VALUES(‘藤本孝彦’,’0781234567′);

INSERT INTO students (Name,PhoneNumber) VALUES(‘藤本かよ子’,’0781234568);

INSERT INTO students (Name,PhoneNumber) VALUES(‘藤本太郎’,’0781234569′);

INSERT INTO students (Name,PhoneNumber) VALUES(‘藤本花子’,’0781234561);

 

20レコードのみを表示するようにクエリーで制限できる

$sql ="SELECT * FROM students ORDER BY name ASC LIMIT 0, 20";

 

最初のレコードから名前順にソートされた20レコードを返します

$sql ="SELECT * FROM students ORDER BY name ASC LIMIT 0, 20";

基本的にこの節(LIMIT start、count)では “start”は開始レコードを指定し、 “count”は表示するレコードの数を指定します

 

Webブラウザでindex.phpを開くと、 “students”テーブルの$start_fromレコードから$results_per_pageレコード分を示すテーブルが表示されます。

if (isset($_GET["page"])) {$page  =$_GET["page"]; }else {$page=1; };
$start_from = ($page-1) *$results_per_page;
別のページに移動するためにURLを使用して “page”値を渡すことがわかります(index.php?page = 2など)
次に、テーブルの総レコード数と必要なページ数を調べる必要があります。これを行うために、COUNT()関数を使用して別のクエリを実行します。
$sql="SELECT COUNT(ID) AS total FROM ".$datatable;
$result=$conn->query($sql);
$row=$result->fetch_assoc();
$total_pages=ceil($row["total"] /$results_per_page);
PHPを使用して必要なページ数を計算するには、ceil()関数を使用します。
$total_pages =ceil($total_records /$results_per_page);
レコードの総数を1ページあたりのレコード数で割ったあと、ceil()関数は結果を切り上げます
各ページのリンクを表示する
<?php
for ($i=1;$i<=$total_pages;$i++) {
    echo "<a href='index.php?page=".$i."'>".$i."</a> ";
};
?>

 

mkdir /var/www/html/students

vi /var/www/html/students/config.php

<?php
error_reporting(0);
$servername = “localhost”;
$username = “user”;
$password = “パスワード”;
$dbname = “students”;
$datatable = “students”; // MySQL table name
$results_per_page = 20; // number of results per page

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die(“Connection failed: ” . $conn->connect_error);
}
?>

 

vi /var/www/html/students/index.php

<?php
include(‘config.php’);
if (isset($_GET[“page”])) { $page = $_GET[“page”]; } else { $page=1; };
$start_from = ($page-1) * $results_per_page;
$sql = “SELECT * FROM “.$datatable.” ORDER BY ID ASC LIMIT $start_from, “.$results_per_page;
$rs_result = $conn->query($sql);
?>
<table border=”1″ cellpadding=”4″>
<tr>
<td bgcolor=”#CCCCCC”><strong>ID</strong></td>
<td bgcolor=”#CCCCCC”><strong>Name</strong></td><td bgcolor=”#CCCCCC”><strong>Phone</strong></td></tr>
<?php
while($row = $rs_result->fetch_assoc()) {
?>
<tr>
<td><?php echo $row[“ID”]; ?></td>
<td><?php echo $row[“Name”]; ?></td>
<td><?php echo $row[“PhoneNumber”]; ?></td>
</tr>
<?php
};
?>
</table>

<?php
$sql = “SELECT COUNT(ID) AS total FROM “.$datatable;
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_pages = ceil($row[“total”] / $results_per_page); // calculate total pages with results

for ($i=1; $i<=$total_pages; $i++) { // print links for all pages
echo “<a href=’index.php?page=”.$i.”‘”;
if ($i==$page) echo ” class=’curPage'”;
echo “>”.$i.”</a> “;
};
?>

コメント