0
votes

Catégories et produits de boucle de foresach imbriqués

J'ai les tables suivantes:

Catégories: catégorie_id, catégorie_name p>

 Entrez la description de l'image ici p>

Produits: ID, catégorie_id, produit_name p>

 Entrez la description de l'image ici 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>


5 commentaires

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


3 Réponses :


0
votes

D'abord, j'appelle deux fonctions pour aller chercher des catégories et des produits comme ci-dessous. XXX

Puis j'utilise récursivement ces tableaux à l'intérieur TRANCH 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. xxx


1 commentaires

S'il vous plaît laissez-moi savoir s'il y a autre chose



1
votes

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 Catégorie Joindre intérieur Produits sur catégorie.Category_id = Produits. Catégorie_id Group par catégorie.Catégorie 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
Ensuite, tout ce que vous avez à faire est le foreach dans le tableau tableau sur Split / explosion les données et l'affiche. Premier Split / EXPLODE par virgule , , puis chaque résultat divisé / explosion par le tuyau | . Vous allez toujours 2 foreach mais avec une requête SQL.


0 commentaires

0
votes

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();


0 commentaires