Salut la communauté en espérant que vous aller tous bien...
J'ai un soucis au niveau d'un projet je sais pas ou est le soucis.
je voulais refactoring la page category de
mon projet un peux histoir d'alleger le projet un peux
Voila le code
$id = (int)$params['id'];
$slug = $params['slug'];
/* --- CATEGORY --- */
$pdo = Db::getPDO();
$query = $pdo->prepare('SELECT * FROM category WHERE id = :id');
$query->execute(['id' => $id]);
$query->setFetchMode(PDO::FETCH_CLASS, Category::class);
$category = $query->fetch();
/** @var Category |false */
if($category === false){
throw new \Exception("Aucun article ne correspond pas");
}
if($category->getSlug() !== $slug){
$url = $router->url('category', ['slug' => $category->getSlug(), 'id' => $id]);
http_response_code(301);
header('Location: ' . $url);
}
/* --- LISTE ---*/
$query = $pdo->prepare('
SELECT *
FROM sous_categorys s
JOIN category c ON s.cates_id = c.category_prod
WHERE s.cates_id = c.category_prod
');
$query->execute(['id' => $category->getId()]);
$query->setFetchMode(PDO::FETCH_CLASS, Categories_link::class);
$categories_link = $query->fetchAll();
/* --- NAME CAT --- */
$title = "{$category->getName()}";
/* --- PAGINATION --- */
$paginatedQuery = new PaginatedQuery(
"SELECT p.*
FROM product p
JOIN product_category pc ON pc.product_id = p.id
WHERE pc.category_id = {$category->getID()}
ORDER BY created_at DESC",
"SELECT COUNT(category_id) FROM product_category WHERE category_id = {$category->getID()}"
);
$products = $paginatedQuery->getItems(Product::class);
dd($products);
La page des parametre et les methodes
namespace App;
use \PDO;
class PaginatedQuery{
private $query;
private $queryCount;
private $classMapping;
private $pdo;
private $perPage;
public function construct(
string $query,
string $queryCount,
string $classMapping,
?\PDO $pdo = null,
int $perPage = 12
)
{
$this->query = $query;
$this->queryCount = $queryCount;
$this->classMapping = $classMapping;
$this->pdo = $pdo ?: Db::getPDO();
$this->perPage = $perPage;
}
public function getItems(): array
{
$currentPage = URL::getPositiveInt('page', 1);
$count = (int)$this->pdo
->query($this->queryCount)
->fetch(PDO::FETCH_NUM)[0];
$pages = ceil($count / $this->perPage);
if($currentPage > $pages){
throw new \Exception('Cette page n\'existe pas');
}
$offset = $this->perPage * ($currentPage - 1);
return $this->pdo->query(
$this->query .
" LIMIT {$this->perPage} OFFSET $offset")
->fetchAll(PDO::FETCH_CLASS, $this->classMapping);
}
}
Voila l'erreur que je reçois, je comprends pas du tout le probeme
Call to a member function query() on null
Veuillez m'aider a comprendre svp
Merci
Bonjour,
Un titre très explique qui aide a comprendre le problème du post....
Si tu as que cela comme erreur, difficile de t'aider plus.
Active les erreurs PDO
Un coup tu fais "$category->getId()" et après tu fais "$category->getID()", surement de la que viens le problème
Merci de m'avoir répondu,
Désolé pour le titre sa fait 4 jours que j'ai pas dormis a cause de ce projet 😂
Non je crois pas que l'erreur viens de la, j'ai tout modifier