La table "Builder"
| buc_id - buc_alimentation - buc_ram
1 - 1 - 2
La table "equipment_item"
ei_id --- ei_name --- ei_category
| 1 --- Intel Core i7 --- 2 |
La table "equipment_category"
ec_id --- ec_name
1 --- Processeur
2 --- Carte mère
Requête utilisé dans le Model :
public function select_item_for_user($bs_id){
$this->db->select('*');
$this->db->from("builder AS build");
$this->db->where('buc_builder',$bs_id);
$this->db->join('equipment AS alimentation', 'build.buc_alimentation = alimentation.ei_id');
$this->db->join('equipment AS ram', 'build.buc_ram = ram.ei_id');
return $this->db->get()->result();
}
Contrôlleur :
$data['item_category'] = $this->builder_model->select_category_item();
$data['equipment_items'] = $this->builder_model->select_item();
$data['items_config'] = $this->builder_model->select_item_for_user($bs_id);
View :
<?php foreach($item_category as $category): ?>
<div class="computer-assembly">
<div class="computer-assembly__header">
<?= $category->ec_img ?>
<div class="computer-assembly__title">
<?= $category->ec_name ?>
</div>
<a href="#" type="button" class="computer-assembly__add stretched-link" data-bs-toggle="modal"
data-bs-target="#modal_category<?= $category->ec_id ?>"><i class="fas fa-plus"></i></a>
</div>
<div class="computer-assembly__body">
<?php foreach($items_config as $builder): ?>
<div class="computer-assembly__item">
<img src="<?= img_url('components/'.$builder->ei_img) ?>">
<div class="computer-assembly__info">
<div class="computer-assembly__title-item">
<?= $builder->ei_name ?>
</div>
<a href="" class="computer-assembly__more">Fiche technique</a>
</div>
<ul class="computer-assembly__menu">
<?php if(!empty($builder->ei_info)): ?>
<li>
<button data-bs-toggle="modal" data-bs-target="#modal_info_item<?= $builder->ei_id ?>" class="computer-assembly__info-btn"><i class="fas fa-info-circle"></i></button>
</li>
<?php endif; ?>
<li>
<button class="computer-assembly__edit" data-bs-toggle="modal" data-bs-target="#modal_category<?= $category->ec_id ?>"><i class="fas fa-pen"></i></button>
</li>
<li>
<button class="computer-assembly__delete"><i class="fas fa-times"></i></button>
</li>
</ul>
</div>
<?php endforeach; ?>
</div>
</div>
Ce que je veux
Je voudrais que pour chaque catégorie, l'équipement y soit associé.
Exemple : l'équipement "Intel Core i7" dans la catégorie Carte mère.
Le problème, c'est que je n'arrive pas à différencier la RAM avec l'alimentation dans mon foreach.
Je voudrais savoir si je m'y prends de la bonne manière ? Comment obtenir une jointure de chaque élément sur une même table et de tout afficher dans un foreach ?
Ce que j'obtiens
Hors, avec mes requêtes, j'obtiens une seule ligne identique sur chaque catégorie.
N'hésitez pas à me poser des questions si je n'ai pas été assez claire
Merci d'avance pour votre aide.
Bonjour GeoffreyB,
Je ne suis pas sûr de comprendre, mais je pense qu'il faut faire une requête par caractéristique.
Attention à ton type de jointure : est-ce Inner, left ou right ?