Paginacja wyników sql

0

Witam,

Zastanawiam się jak zrobić paginację wyników z sql. Doszedłem do tego jak wyświetlić dana ilość wyników, ale nie wiem jak zrobić numerację przełączania stron. Może ktoś miał już z tym styczność i podpowie mi jak się za to zabrać.

funkcja odpowiedzialna za zbieranie wyników:

public function getAllusers()
	{
		global $pdo;
		$query = $pdo->prepare("SELECT * FROM users ORDER BY id DESC LIMIT 0,2");
		$query->execute();
		return $query->fetchALL(PDO::FETCH_ASSOC);
	}
 

a tutaj już w index.php wyświetlanie wyników:

 
<?php
							if(isset($_SESSION['login_msg']))
							{
								echo $_SESSION['login_msg'];
								unset($_SESSION['login_msg']);
							}
							?>
						</p>
							<h2>Welcome, <?php echo $username; ?></h2>
						
						<p class="userlist">
						All user from list
						</p>
						<table class ="tbl_one">
							<tr>
								<th>Serial</th>
								<th>Name</th>
								<th>Profile</th>
							</tr>
							<?php 
								$i=0;
								$alluser = $user->getAllusers();
								foreach($alluser as $user)
								{
									$i++;							
							?>
							<tr>
								<td><?php echo $i; ?></td>
								<td><?php echo $user['name']; ?></td>
								<td><a href="userProfile.php?id=<?php echo $user['id']; ?>">View Details</a></td>
							</tr>
								<?php } ?>
0

Dzięki za szybką odpowiedź :) Zmontowałem paginator, działa jak należy. Nurtuje mnie jednak jedna sprawa. Chodzi mi dokładnie zmienną $start. Czy ktoś może mi wytłumaczyć ta linię?:

$start = ($page > 1) ? ($page * 3) - 3 : 0;
 

Bo np. jeśli $page = 3 to $start = 6 a startuje od 7,
jeśli $page = 4 to $start = 9 a startuje od 10

Dlaczego od 7 a nie od 6? Dlaczego od 10 a nie od 9?

Cały skrypt:

 
global $pdo;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
//$perpage = isset($_GET['per-page']) && $_GET['per-page'] <= 7 ? (int)$_GET['per-page'] : 3;

//Positioning
$start = ($page > 1) ? ($page * 3) - 3 : 0;

$articles = $pdo->prepare("SELECT SQL_CALC_FOUND_ROWS id, username FROM users LIMIT {$start}, 3");
$articles->execute();

$articles = $articles->fetchAll(PDO::FETCH_ASSOC);
//var_dump($articles);

//Pages
$total = $pdo->query("SELECT FOUND_ROWS() as total")->fetch()['total'];
//var_dump($total->fetch());
$pages = ceil($total/3);

1 użytkowników online, w tym zalogowanych: 0, gości: 1