За последние 24 часа нас посетил 18691 программист и 1605 роботов. Сейчас ищут 905 программистов ...

Как решить проблему с постраничной навигацией...

Тема в разделе "Прочие вопросы по PHP", создана пользователем devid134, 22 июл 2013.

  1. devid134

    devid134 Новичок

    С нами с:
    19 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    Вот страница которая выводится... жирным шрифтом показана постраничная навигация

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

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

    /* === Айстопперы - новинки, лидеры продаж, распродажа === */

    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 для этой страницы
    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 но как это сделать чтобы все получилось?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Сделать кнопку "Показать еще" столько, то =)
    Я уже забыл, что такое постраничная навигация.
    "JavaScript", поможет вам.