Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35

постраничная навигация

22.07.2013, 22:51. Показов 1695. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот страница которая выводится... жирным шрифтом показана постраничная навигация

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php defined('ISHOP') or die('Accessc denied'); ?>
 
<div class="catalog-index">
    <h1><img src="<?=TEMPLATE?>https://www.cyberforum.ru/images/sale-sale.png" alt="Распродажа" /></h1>
 
<?php if($eyestoppers): ?>
    <?php foreach($eyestoppers as $eyestopper): ?>
        <div class="product-index">                 
            <a href="?view=product&goods_id=<?=$eyestopper['goods_id']?>"><img class="product-img" src="<?=PRODUCTIMG?><?=$eyestopper['img']?>" alt="" /></a>
            <h2><a href="?view=product&goods_id=<?=$eyestopper['goods_id']?>"><?=$eyestopper['name']?></a></h2>
            <h6>Cоздана специально для крепких духом людей!<br /></h6>
            <h3>Артикул: <span><?=$eyestopper['articul']?></span> </h3>
            <p>Цена: <span><?=$eyestopper['price']?></span> руб.</p>
            <a href="?view=addtocard&goods_id=<?=$eyestopper['goods_id']?>"><img class="addtocard-index" src="<?=TEMPLATE?>https://www.cyberforum.ru/images/addcard-index.png" alt="Добавить в корзину" /></a>
        </div>
    <?php endforeach; ?>
 
 
 
<div class="clr"></div>
<?php if($pages_count > 1) pagination($page, $pages_count); ?>
    
 
 
<?php else: ?>
        <p>Здесь товаров пока нет!</p>
<?php endif; ?>
<a name="nav"></a>
                                                
</div>

Это model.php этой страницы для постраничной навигации
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*  === Получение кол-во товаров по категории SALE для навигации ===  */
function count_rows_sale($category){
    $query = "(SELECT COUNT(goods_id) as count_rows
                    FROM goods 
                        WHERE sale = 2)
                ";
    $res = mysql_query($query) or die (mysql_error());
    
    while($row = mysql_fetch_assoc($res)){
        if($row['count_rows']) $count_rows = $row['count_rows'];
    }
    return $count_rows;    
}
 
/*  === Получение кол-во товаров по категории SALE для навигации ===  */
Это model.php для продукции этой страницы

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
/*  === Айстопперы - новинки, лидеры продаж, распродажа ===  */
 
function eyestopper($eyestopper){
     $query = "SELECT goods_id, name, img, price, articul FROM goods 
                WHERE visible='1' AND $eyestopper='1'";
     $res = mysql_query($query) or die (mysql_error());
     $eyestoppers = array();
     while ($row = mysql_fetch_assoc($res)){
        $eyestoppers[] = $row;
     }
     return $eyestoppers;
}
/*  === Айстопперы - новинки, лидеры продаж, распродажа ===  */
Это controller.php для этой страницы
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
case('sale'):
        // Распродажа  
        $eyestoppers = eyestopper('sale');
        
        // параметры для навигации
         $perpage = 3; // кол-во товаров на страницу
         if(isset($_GET['page'])){
            $page = (int)$_GET['page'];
            if($page < 1) $page = 1;
         }else{
            $page = 1;
         }
         
         $count_rows = count_rows_sale($category);  //  общее кол-во товаров
         
         echo $count_rows;
         
         $pages_count = ceil($count_rows / $perpage);  // кол-во страниц
         if(!$pages_count) $pages_count = 1; // минимум 1 страница
         if($page > $pages_count) $page = $pages_count; // если запрошенная страница больше максимума
         $start_pos = ($page - 1) * $perpage; // начальная позиция для запроса
    break;
======================================== ======================================== ============
выводятся страницы как надо и подсчет товаров на каждую станицу показано верно.

- Товаров показано и выводятся с базы данных - 31.

- По функции должно выводится по 3 товара на 1 страницу, т.е. он подсчитал 11 страниц -это все верно показано, с базы считывается верное кол-во товаров.

- ПРОБЛЕМА В ТОМ что на каждой странице выводятся все 31 товар,какую бы страницу из 11 не выбрал там все время 31 товар

Я знаю что нужно прописать LIMIT в model.php но как это сделать чтобы все получилось?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2013, 22:51
Ответы с готовыми решениями:

Постраничная навигация
Нужно по нажатию на кнопку вывести песни определенного жанра. При нажатии на кнопку выводится то количество песен, которое было указано в...

Постраничная навигация
В общем есть таблица options где хранится число &quot;5&quot; для вывода 5 записей на странице, ошибку в коде не выводит а выводит все записи а не...

Постраничная навигация
Вечер добрый. В общем тема то изъезженная. Мой вопрос касается постраничной навигации при большом количестве записей в mysql. В...

1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.07.2013, 23:33

Не по теме:

Цитата Сообщение от devid134 Посмотреть сообщение
жирным шрифтом показана постраничная навигация
т.е., почти все, что между кода - это пагинация? :)


Если по-простому, то так.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
function queryLimit($table, array $values, $page=1, $limit=10)
{
    if(empty($table))
        return false;
 
    $where = NULL;
    if(!empty($values))
    {
        foreach($values as $k=>$v)
        {
            $where .= '`' . $k . '` = :' . $k . ' AND ';
            $values[':' . $k] = trim($v);
            unset($values[$k]);
        }
    }
    
    $page -= $page > 0 ? 1 : 0;
    $page *= $limit;
    
    $sql  = 'SELECT * FROM `' . $table . '` ';
    $sql .= !empty($where) ? ' WHERE ' . rtrim($where, ' AND') : '';
    $sql .= ' LIMIT ' . $page . ', ' . (int) $limit;
 
    return $sql;
}
 
$values = array('lorem'=>'foo', 'ipsum'=>'bar', 'dolor'=>'lol');
 
echo '<pre>';
for($i = 1; $i <= 10; $i++)
    echo queryLimit('foo', $values, $i, 10), PHP_EOL;
Результат:
SQL
1
2
3
4
5
6
7
8
9
10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 0, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 10, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 20, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 30, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 40, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 50, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 60, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 70, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 80, 10
SELECT * FROM `foo`  WHERE `lorem` = :lorem AND `ipsum` = :ipsum AND `dolor` = :dolor LIMIT 90, 10
Добавлено через 5 минут
а, забыл про сами ссылки.
PHP
1
2
3
4
5
for($i = 1; $i <= $pages; $i++)
{
    echo '<a href="?page=', $i, '"', ($i === $page ? 'class="current"' : ''), '>', $i, '</a>';
    echo $i % 20 === 0 ? '<br>' : '';
}
$page = значение $_GET['page'] (текущая страница),
$pages - число всех страниц ( round(COUNT / LIMIT) )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2013, 23:33
Помогаю со студенческими работами здесь

постраничная навигация
Уважаемые форумчане.. не магу разобраться, почему выдает ошибку, раньше всё работало, щас вываливает ошибку Warning: Division...

постраничная навигация
Всем привет, кто знает как грамотно записать запрос постраничной навигации стены, на странице друга? чтобы выглядело примерно так...

Постраничная навигация
Добрый день. У меня задача такая. Данные выводятся ид БД в таблицу, которая включена в форму... в самой таблице есть поля которые...

постраничная навигация
&lt;? сдесь вместо стрелок я вставил ссылки на картинки ,а как...

Постраничная навигация
Привет, мир! Знатоки SQL + PHP, подскажите принцип работы постраничной навигации. Т.е. Мне не нужны готовые решения, я хочу сам написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru