Тут удобно расписано как сделать
www.php.su/articles/?cat=examples&page=062
Доработал его для себя
$db = new mysqli('localhost', 'root', 'root', 'basename'); //подключение к базе
$pageformat = '/test.php?page={pagenum}'; //Формат ссылки вместо {pagenum} будет номер страницы
$page = $_GET['page']; //Номер страницы
$num = 10; //Количество записей
$sql = "FROM `test`"; //sql запрос без SELECT
$result = Pagination ($db, $sql, $num, $pageformat, $page);
print_r($result['pagination']); //Ссылки на страницы
print_r($result['result']); //Контент в массиве
function Pagination ($db, $sql, $num, $pageformat, $page){
$result = $db->query("SELECT COUNT(*) ". $sql)->fetch_row();
$total = intval(($result[0] - 1) / $num) + 1;
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$getinfo = $db->query("SELECT * " .$sql. " LIMIT $start, $num");
$info = $getinfo->fetch_all(MYSQLI_ASSOC);
preg_match('/(?<a>.*?){pagenum}(?<b>.*?)/', $pageformat, $pg);
if ($page != 1) $pervpage = "<a href={$pg['a']}1{$pg['b']}><<</a><a href={$pg['a']}".($page - 1)." {$pg['b']}><</a>";
if ($page != $total) $nextpage = ' <a href='.$pg['a']. ($page + 1) .$pg['b'].'>></a><a href='.$pg['a'] .$total. $pg['b'].'>>></a>';
if($page - 2 > 0) $page2left = ' <a href='.$pg['a']. ($page - 2).$pg['b'].'>'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = '<a href='.$pg['a']. ($page - 1).$pg['b'].'>'. ($page - 1) .'</a> ';
if($page + 2 <= $total) $page2right = ' <a href='.$pg['a']. ($page + 2).$pg['b'] .'>'. ($page + 2).'</a>';
if($page + 1 <= $total) $page1right = ' <a href='.$pg['a']. ($page + 1).$pg['b'].'>'. ($page + 1).'</a>';
$pagination = $pervpage.$page2left.$page1left.'<a class="active" href="#">'.$page.'</a>'.$page1right.$page2right.$nextpage;
$result = array('pagination' => $pagination,'result' => $info);
return $result;
}