Я пытаюсь отобразить 10 записей на страницу с помощью row_number функции SQL SERVER 2008.SQL Server 2008 Разбивка PHP
Я думаю, что есть что-то не так с моим запросом, потому что я только определить, где начать и где закончить отображение записей (от 1 до 10), но не количество записей, отображаемых на странице.
Как я перехожу на следующую страницу, я не получаю никаких результатов, потому что я не знаю, как правильно добавить переменную $ per_page в мой SQL-запрос.
Все, что я хочу быть в состоянии отображать первые 10 идентификаторов продуктов на странице 1, и один раз я нажимаю на кнопку «Далее», будет отображаться следующие 10 идентификаторы продуктов и т.д.
Это код, который я прямо сейчас:
$per_page = 10;
if(!isset($_GET['page']))
{
$page = 1;
}
else
{
$page = $_GET['page'];
}
if($page<=1)
{
$start = 0;
}
else
{
$start = $page * $per_page - $per_page;
}
$tsql = " SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, productID FROM products) AS products1
WHERE rownum >= $start AND rownum <= $per_page";
$num_rows = sqlsrv_num_rows(sqlsrv_query($conn,$tsql));
$num_pages = ceil($num_rows/$per_page);
$stmt = sqlsrv_query($conn,$tsql);
while($row = sqlsrv_fetch_array($stmt)){
echo $row['productID']. "<br/>";
}
$prev = $page - 1;
$next = $page + 1;
echo "<hr>";
//prev
if($prev > 0)
{
echo "<a href='?page=$prev'>prev</a> ";
}
//numbers
$number = 1;
for($number; $number <= $num_pages; $number +=1)
{
if($page==$number)
{
echo " <b>[$number]</b> ";
}
else
{
echo "<a href='?page=$number'>$number</a> ";
}
}
//next
echo "<a href='?page=$next'>next</a>";
Большое спасибо, jeroen! Теперь я могу просматривать все мои страницы с помощью кнопок «next» и «prev»! Единственная проблема, с которой я столкнулся сейчас, - это раздел «числа», который я также хотел бы реализовать. Мои номера страниц вообще не отображаются, и я думаю, что это имеет какое-то отношение к моим переменным $ num_pages и $ num_rows, особенно к этой строке: «$ num_rows = sqlsrv_num_rows (sqlsrv_query ($ conn, $ tsql)); mysql pagination tutorial и попытался преобразовать его на SQL-сервер, но я думаю, что я ошибся где-то в этих строках? – Alex
@Alex Как я уже сказал, я не famil'iar с sql-сервером, но я предполагаю, что '$ num_rows' возвращает только количество строк из вашего запроса (10), поэтому' $ num_pages' всегда будет 1 , – jeroen