J'ai un site PHP que je construis et je semble avoir quelques problèmes de rendu. J'ai mon site divisé en plusieurs parties, telles que Header.php, sidebar.php et footer.php. Toutes mes catégories rendent dans la barre latérale aucun problème, mais quand j'essaye de rendre les produits pour la catégorie choisie et la page ne rend pas la page complète. J'ai une base de données simple avec des catégories et des produits.La page PHP ne rend pas correctement
Voici le code de mes fichiers connect_db.php, categories_db.php et products_db.php, qui gèrent tous les éléments de la base de données.
REMARQUE: que je peux obtenir mon fichier product_list.php si je ne fais que l'affichage de tous les produits, mais que j'ai besoin de rendre les produits de la catégorie sélectionnée dans la barre latérale.
Ci-dessous mon index.php ou la vue principale
<?php
error_reporting(-1);
ini_set('display_errors', 1);
require('models/connect_db.php');
require('models/categories_db.php');
require('models/products_db.php');
$categories = get_categories();
if (!isset($category_id)) {
$category_id = 1;
}
else {
$category_id = $_GET['category_id'];
}
// get all products by category
$products = get_products_by_category($category_id);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php include('views/layout/head.php');?>
</head>
<body>
<!-- Wrapper -->
<div class="wrapper">
<!-- Header -->
<?php include('views/layout/header.php');?>
<!-- Main -->
<div id="main">
<div class="cl"> </div>
<!-- Content -->
<div id="content">
<?php include('views/product_list.php');?>
</div>
<!-- End Content -->
<!-- Sidebar -->
<?php include('views/layout/sidebar.php');?>
</div>
<!-- End Main -->
<!-- Footer -->
<?php include('views/layout/footer.php');?>
</div>
<!-- End Wrapper -->
</body>
</html>
Maintenant, la barre latérale rend correctement les catégories, mais quand je clique sur une catégorie, il ne rendra pas le product_list.php, comme prévu.
Ma barre latérale charge correctement toutes les catégories et le code est ci-dessous.
<?php
$categories;
$categories = get_categories();
$category_id = $_GET['category_id'];
if (!isset($category_id)) {
$category_id = 1;
}
?>
<div id="sidebar">
<!-- Categories -->
<div class="box categories">
<h2>Categories </h2>
<div class="box-content">
<ul>
<!-- get category menu items -->
<?php foreach($categories as $category) : ?>
<li><a href="?category_id=<?php echo $category['category_id'];?>">
<?php echo $category['name'];?>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<!-- End Categories -->
</div>
<!-- End Sidebar -->
<div class="cl"> </div>
Maintenant pour le fichier product_list.php qui ne s'affichera pas.
<?php
// get all products by category
$products = get_products_by_category($category_id);
// get category name
$category_name = get_category_name($category_id);
?>
<!-- Products -->
<div class="products">
<div class="cl"> </div>
<ul>
<?php foreach($products as $product) : ?>
<li>
<a href="#"><img src="css/images/big1.jpg" alt="" /></a>
<div class="product-info">
<h3><?php echo $product['name'];?></h3>
<div class="product-desc">
<h4><?php echo $category_name;?></h4>
<p><?php echo $product['description'];?></p>
<strong class="price"><?php echo $product['price'];?></strong>
</div>
</div>
</li>
<?php endforeach; ?>
</ul>
<div class="cl"> </div>
</div>
<!-- End Products -->
Je ne suis pas sûr que ce soit parce que le category_id $ ne se définir ou quoi, s'il vous plaît quelqu'un me aider à franchir ce problème.
ERREURS:
Indication: variable non définie: category_id en /var/www/WidgetCorp/views/product_list.php sur la ligne 4
Indication: Undefined variable: category_id dans/var/www/WidgetCorp/vues/product_list.php sur la ligne 7
erreur fatale: Appel à la méthode non définie PDO :: fetch() dans /var/www/WidgetCorp/models/categories_db.php en ligne 22
puh, c'est beaucoup de code ... –
Wayyyy trop de code là. Que voulez-vous dire par «ne rend pas»? Avez-vous des erreurs? Est-ce que ça ne s'affiche pas comme tu veux? – Mat
désolé ... Je voulais que ce soit complet .... Des idées? –