gianghl1983
6/2/2018 - 4:27 PM

Phan trang PHP - MySQL

<?php 
include 'database/db.php';

$accounts = [];
$limit = 2;

/**
 * BÀI TOÁN PHÂN TRANG
 * B1: Khai báo $limit (Số bản ghi trên trang)
 * B2: Lấy $page (Trang hiện tại): $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
 * B3: Tính $offset  = ($page - 1) * $limit;
 * B4: Đếm tổng số bản ghi (Có kèm điều kiện hoặc không có điều kiện): $totalRecord
 * B5: Tính $totalPage = ceil($totalRecord/$limit)
 * B6: Lấy danh sách record
 * B7: Dùng vòng lặp hiển thị danh sách bản ghi
 * B8: Dùng vòng lặp để hiện ra số trang theo $totalPage
 */


$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

$offset  = ($page - 1) * $limit;

$totalRecord = 0;

$sql = "SELECT COUNT(*) as total_record FROM accounts LEFT JOIN users ON users.id=accounts.user_id WHERE 1=1";

$username = isset($_GET['user_name']) ? trim($_GET['user_name']) : '';
$accountName = isset($_GET['account_name']) ? trim($_GET['account_name']) : '';

$where = '';

if ($username != '') {
    $where .= " AND users.fullname LIKE '%{$username}%'";
}

if ($accountName != '') {
    $where .= " AND accounts.name LIKE '%{$accountName}%'";
}
$sql .= $where;



$sql = sprintf("SELECT COUNT(*) as total_record FROM accounts LEFT JOIN users ON users.id=accounts.user_id WHERE 1=1");
$query = $db->query($sql);
if ($query) {
    //Lay mot ban ghi
    $totalRecord = $query->fetch_row()[0];
}

$totalPage = ceil($totalRecord/$limit);
//cach 1 %s - %d - %b....
$sql = sprintf("SELECT accounts.*, users.fullname as user_name FROM accounts LEFT JOIN users ON users.id=accounts.user_id WHERE 1=1 LIMIT %d OFFSET %d", $limit, $offset);

$query = $db->query($sql);
if ($query) {
    $accounts = $query->fetch_all(MYSQLI_ASSOC);//key-value
}

?>
<form action="" method="GET">
<input type="text" name="user_name" placeholder="Chủ tài khoản">
<input type="text" name="account_name" placeholder="Tên tài khoản">
<button type="submit" name="search">Tìm kiếm</button>

</form>
<table>
<thead>
    <tr>
        <th>STT</th>
        <th>ID</th>
        <th>Tên tài khoản</th>
        <th>Chủ tài khoản</th>
        <th>Loại tài khoản</th>
        <th>Ghi chú</th>
        <th>Số tiền</th>
        <th>Trạng thái</th>
        <th></th></th>
    </tr>
</thead>
<tbody>
<?php 
if (count($accounts) > 0) :
    $i = 0;
    foreach ($accounts as $item) :
        $i++;
?>
    <tr>
        <td><?php echo $i;?></td>
        <td><?php echo $item['id'];?></td>
        <td><?php echo $item['name'];?></td>
        <td><?php echo $item['user_name'];?></td>
        <td><?php echo $item['type'];?></td>
        <td><?php echo $item['note'];?></td>
        <td><?php echo $item['amount'];?></td>
        <td><?php echo $item['status'];?></td>
        <td></td>
    </tr>    
<?php
    endforeach;
endif;
?>
</tbody>
</table>

<?php
    if ($totalPage > 0) : 
        for ($i = 1; $i <= $totalPage; $i++) :
?>

<a href="account.php?page=<?php echo $i;?>"><?php echo $i;?></a>
<?php 
        endfor;
    endif;
?>