Кажется, у вас есть две проблемы.Сначала вы пытаетесь перебрать один и тот же набор результатов.Это невозможно.Как только вы это зациклите, то, как вы это делаете, результаты сбрасываются.Вы можете использовать этот метод для возврата всех результатов в виде массива ASSOC, а затем вы можете зациклить этот массив несколько раз.
$query = "SELECT product_id, product_name, product_price, image FROM product WHERE type = ? ORDER BY product_id ASC";
$stmt = mysqli_prepare($conn, $query);
$stmt->bind_param('i', $cat_id);
$stmt->execute();
$result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $key => $value) {
...
}
foreach ($rows as $key => $value) {
...
}
Во-вторых, кажется, что вы хотите разбить результаты своих продуктов на страницы.Для этого вы можете использовать LIMIT .Я бы передал параметр с именем page , а затем использовал его для фильтрации ограниченных результатов.Если вы хотите получить 20 результатов на страницу, лимитный запрос будет выглядеть следующим образом.
$numPerPage = 20;
$pageNum = isset($_GET['p']) ? preg_replace('/[^0-9]/', '', $_GET['p']) : 1;
# Get Count
$query = "SELECT product_id, product_name, product_price, image FROM product WHERE type = ? ORDER BY product_id ASC";
$stmt = mysqli_prepare($conn, $query);
$stmt->bind_param('i', $cat_id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_row();
$count = array_shift($row);
$lastPage = ceil($count/$numPerPage);
if ($lastPage < 1) {
$lastPage = 1;
}
# Check to make sure user isn't higher than set pages
if ($pageNum < 1) {
$pageNum = 1;
} else if ($pageNum > $lastPage) {
$pageNum = $lastPage;
}
# Get Results
$query = "SELECT product_id, product_name, product_price, image FROM product WHERE type = ? ORDER BY product_id ASC";
$limit = ' LIMIT ' .($pageNum - 1) * $numPerPage .',' .$numPerPage;
$stmt = mysqli_prepare($conn, $query . $limit);
$stmt->bind_param('i', $cat_id);
$stmt->execute();
$result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $key => $value) {
...
}
foreach ($rows as $key => $value) {
...
}
Надеюсь, это поможет решить возникающие проблемы.