В PHP я пытаюсь реализовать нумерацию страниц, которая отображает разные результаты из базы данных SQL на основе LIMIT. Я знаю, как написать разбиение на страницы с несколькими параметрами, но я не уверен, как кодировать приложение, чтобы распознать второе условие для вставки SQL.
Если вы посмотрите на код, где он содержит foreach
иhref containing page_number and category_id
Мне нужно получить нумерацию страниц внизу, чтобы соответствовать категории, выбранной в foreach
для отображения правильных данных. Также я не мог понять, как реализовать страницы без жесткого кодирования в for loop
Это функция для страницы запроса SQL
function get_products_by_category($category_id, $pn)
{
global $db;
$arithmetic = 8*($pn -1);
$query = "SELECT * FROM products
WHERE products.categoryID = :category_id
ORDER BY productID LIMIT $arithmetic, 8";
$statement = $db->prepare($query);
$statement->bindValue(":category_id", $category_id);
$statement->execute();
$products = $statement->fetchAll();
$statement->closeCursor();
return $products;
}
Вот где она вызывается
if ($action == 'list_products')
{
$category_id = filter_input(INPUT_GET, 'category_id',
FILTER_VALIDATE_INT);
if ($category_id == NULL || $category_id == FALSE)
{
$category_id = 1;
}
$category_name = get_category_name($category_id);
$categories = get_categories();
$products = get_products_by_category($category_id, $pn);
$products_amount = get_products_total($category_id);
$total = count($products_amount);
include('product_list.php');
}
Вот foreach и нумерация страниц
<?php
$pn;
$current_category;
$total_page = $total/8;
$remain = $total % 8;
if($remain > 0)
{
$total_page = $total_page + 1;
}
?>
<aside>
<!-- display a list of categories -->
<h2>Categories</h2>
<nav>
<ul>
<?php foreach ($categories as $category) : ?>
<li>
<a href="?category_id=<?php echo $category['categoryID']; ?>">
<?php echo $category['categoryName'];?>
</a>
</li>
<?php endforeach; ?>
for($i = 1; $i <= $total_page; $i++)
{
?>
<a href="?page_number= <?php echo $i; ?> & ?category_id= <?php echo $i; ?>"><?php echo $i; ?> </a>
<?php
if($i == 1)
{
$pn = 1;
}
else if($i == 2)
{
$pn = 2;
}
else if($i == 3)
{
$pn = 3;
}
}
?>