J'ai les tables suivantes:
Catégories: catégorie_id, catégorie_name p>
Produits: ID, catégorie_id, produit_name p>
J'utilise Bootstrap 4, je souhaite montrer à chaque catégorie sous forme de titre d'accordéon et liste produits qui appartiennent à cette catégorie dans le corps de l'accordéon. p>
Utilisation de PHP 7 P>
function getProducts(){
$db = new DB();
$rows = $db->db_select("SELECT category.category_id, category.category_name, products.id, products.category_id, products.product_name
FROM products
INNER JOIN category ON products.id = category.category_id
ORDER BY category.category_name
");
if($rows === false){
$error = db_error();
} else {
return $rows;
}
}
$data = new CORE();
$products = $data->getProducts();
<div class="accordion" id="accordionExample">
<? foreach($products as $p){ ?>
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<? echo $p['category_name'] ?>
</button>
</h5>
</div>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
<div class="card-body">
<? echo $p['product_name'] ?>
</div>
</div>
</div>
<? } ?>
</div>
3 Réponses :
D'abord, j'appelle deux fonctions pour aller chercher des catégories et des produits comme ci-dessous. Puis j'utilise récursivement ces tableaux à l'intérieur TRANCH code> Boucles .Le point est que dans Ici, j'utilise deux boucles de 1 FooSeach et la première boucle attend jusqu'à ce que la deuxième boucle (à l'intérieur) s'élève à un processus. p>
S'il vous plaît laissez-moi savoir s'il y a autre chose
Vous pouvez changer votre requête en quelque chose comme ceci:
Sélectionnez la catégorie.Category, Group_Concat (Produits.Id, '|', Produits.name) En tant que produit de Code> Catégorie Joindre intérieur Code> Produits sur catégorie.Category_id = Produits. Catégorie_id Group par catégorie.Catégorie Code> P>
Cela vous donnera un résultat comme:
Catégorie Produit
Chapeaux 8 | snapback, 9 | ajusté
Pantalon 6 | Jogging, 7 | Coupes
Chemises 1 | Polo, 2 | Manches longues, 3 | vneck
Chaussures 5 | Bottes, 4 | Converse Code> P>
Ensuite, tout ce que vous avez à faire est le foreach code> dans le tableau code> tableau sur Split / explosion code> les données et l'affiche. Premier Split / EXPLODE CODE> par virgule , code>, puis chaque résultat divisé / explosion code> par le tuyau | code>. Vous allez toujours 2 foreach code> mais avec une requête SQL. P>
Veuillez essayer cette requête si obtenir des produits liés aux catégories
$this->db->join('products','products.category_id = categories.category_id')
->order_by('categories.category_id')->get('categories')->result_array();
Pouvez-vous nous montrer votre code ou tout ce que vous avez essayé jusqu'à présent
Code ajouté mais je ne sais pas comment nichier ceci pour montrer chaque catégorie, puis les produits sous celui-ci
Veuillez afficher votre structure de base de données et des données factices pour fournir une meilleure réponse
Ajouté des images de base de données
Je peux voir que vous avez reçu de bonnes réponses pour la question. Alors pourriez-vous s'il vous plaît marquer une réponse comme la réponse et votre uppote aussi précieux pour les autres aussi