Не работает переход по URL вида 'page-'

292
07 июня 2017, 05:07

Здравствуйте! Не работает URL для перехода по страницам. Сама пагинация рабочая, но почему-то URL вида "page-" не воспринимается базой данных. Она почему-то подставляет его в запрос.

Вот ошибка, которая появляется:

Fatal error: Uncaught Error: Call to a member function fetch() on boolean in D:\xampp\htdocs\models\Product.php:56 Stack trace: #0 D:\xampp\htdocs\controllers\CatalogController.php(29): Product::getProductsListByCategory('13', 0) #1 D:\xampp\htdocs\components\Router.php(68): CatalogController->actionCategory('13', 'page2') #2 D:\xampp\htdocs\index.php(18): Router->run() #3 {main} thrown in D:\xampp\htdocs\models\Product.php on line 56

Сам URL:

category/([0-9]+)/page-([0-9]+)' => 'catalog/category/$1/$2

Product.php где выдает ошибку

  public static function getProductsListByCategory($categoryId = false, $page = 1)
{
    if ($categoryId) {
        $page = intval($page);            
        $offset = ($page - 1) * self::SHOW_BY_DEFAULT;
        $db = Db::getConnection();            
        $products = array();
        $result = $db->query("SELECT id, name, price, is_new FROM product "
                . "WHERE status = '1' AND category_id = '$categoryId' "
                . "ORDER BY id ASC "                
                . "LIMIT ".self::SHOW_BY_DEFAULT
                . ' OFFSET '. $offset);
        $i = 0;
        while ($row = $result->fetch()) {
            $products[$i]['id'] = $row['id'];
            $products[$i]['name'] = $row['name'];
            //$products[$i]['image'] = $row['image'];
            $products[$i]['price'] = $row['price'];
            $products[$i]['is_new'] = $row['is_new'];
            $i++;
        }
        return $products;       
    }
}      

actionCategory в CatalogController.php

public function actionCategory($categoryId, $page = 1)
{
    $categories = array();
    $categories = Category::getCategoriesList();
    $categoryProducts = array();
    $categoryProducts = Product::getProductsListByCategory($categoryId, $page);
    $total = Product::getTotalProductsInCategory($categoryId);
    $pagination = new Pagination($total, $page, Product::SHOW_BY_DEFAULT, 'page-');
    require_once(ROOT . '/views/catalog/category.php');
    return true;
}
Answer 1

Напишите

$row = $result->fetch(PDO::FETCH_ASSOC)
READ ALSO
Angular и модульный backend

Angular и модульный backend

Буквально пару дней изучаю angular, вроде все логично, но задался вопросом - а как собственно это использовать совместно с backend частью ? К примеру...

285
Как отобразить меню компонента Joomla на всех view

Как отобразить меню компонента Joomla на всех view

Пишу для себя компонент Joomla с названием YpayФайловая структура как на скриншоте https://i

300
Автоматически добавляются объекты PHP

Автоматически добавляются объекты PHP

Есть несколько классов, которые взаимодействуют между собой

282