Bon voilà j'ai un soucis d'affichage et je me prend surement la tête pour rien XD.
Avant de mettre le soucis j'aimerais avoir vos avis sur la construction de mes tables parce que j'ai toujours des soucis avec elles xD.
Ce que je cherche à faire :
-J'ai des maps (instanciés), celle-ci contiennent des "zones" (ça a pas de nom je crois mais moi je les appellent ainsi pour les identifier), ces zones contiennent des instances (donjons).
-On a donc les zones qui appartiennent à une map et contiennent des instances.
-Et des instances qui appartiennent à des zones et donc à des maps.
Actuellement j'ai créer 3 tables : instances, maps et zones.
La table maps (id, nom_map) ;
la table zones à les champs (id, nom_zone, id_map) (je sais pu comment on note les clefs étrangères mais id_map en est une) ;
et la table instances (id, nom_instance, id_zone) (id_zone est une clef étrangère).
Note : Y'a d'autres champs dans instances mais ce sont simplement niveau infos et elles sont pas utile dans la construction.
----
Voilà pour la construction, mon problème c'est que je voudrais récupérer les infos des instances + des zones et des maps (en une ou plusieurs requêtes au besoin).
Actuellement je fais comme ceci :
{Controller}
{View}
avec la requête suivante (à cause du copier-coller et du forum ça décale les indentations mais tant pis x)) :
{Model}
le problème c'est que ça me donne ça :
Ce que je voudrais, c'est le même résultat mais sans que la ligne
Je suis sur de me prendre la tête pour rien et ça doit être tout con mais bon :x.
Merci d'avance pour vos réponses, suggestions, etc .
Edit de Sephi-Chan : Je renomme le sujet pour mieux présenter le problème (l'ancien titre était "BDD, affichage via php").
Avant de mettre le soucis j'aimerais avoir vos avis sur la construction de mes tables parce que j'ai toujours des soucis avec elles xD.
Ce que je cherche à faire :
-J'ai des maps (instanciés), celle-ci contiennent des "zones" (ça a pas de nom je crois mais moi je les appellent ainsi pour les identifier), ces zones contiennent des instances (donjons).
-On a donc les zones qui appartiennent à une map et contiennent des instances.
-Et des instances qui appartiennent à des zones et donc à des maps.
Actuellement j'ai créer 3 tables : instances, maps et zones.
La table maps (id, nom_map) ;
la table zones à les champs (id, nom_zone, id_map) (je sais pu comment on note les clefs étrangères mais id_map en est une) ;
et la table instances (id, nom_instance, id_zone) (id_zone est une clef étrangère).
Note : Y'a d'autres champs dans instances mais ce sont simplement niveau infos et elles sont pas utile dans la construction.
----
Voilà pour la construction, mon problème c'est que je voudrais récupérer les infos des instances + des zones et des maps (en une ou plusieurs requêtes au besoin).
Actuellement je fais comme ceci :
{Controller}
//récupère le résultat du modèle via le controller
$data['instances'] = $this->instancesManager->getInstances();
{View}
foreach ($instances as $listeInstances) :
echo '<h3>'. $listeInstances->nom_map .' - '. $listeInstances->nom_zone .'</h3>';
for($i = 0;$i < sizeof($instances); $i++)
{
if ($instances[$i]->nom_zone === $listeInstances->nom_zone) {
echo $instances[$i]->nom_instance .', '. $instances[$i]->nom_zone .'<br />';
}
}
endforeach;
avec la requête suivante (à cause du copier-coller et du forum ça décale les indentations mais tant pis x)) :
{Model}
public function getInstances()
{
$query = 'SELECT
instances.*,
maps.*,
zones.*
FROM
instances
LEFT JOIN zones ON instances.id_zone_instance = zones.id_zone
LEFT JOIN maps ON zones.id_map = maps.id_map
ORDER BY nom_zone ASC';
$listeInstances = $this->db->query($query);
return $listeInstances->result();
}
J'ai préférer ne pas utiliser le système de CodeIgniter niveau des fonctions pour les requêtes pour faire plus simple pour le moment, sinon là je sélectionnes tout de instances, maps, et zones.le problème c'est que ça me donne ça :
Ce que je voudrais, c'est le même résultat mais sans que la ligne
echo '<h3>'. $listeInstances->nom_map .' - '. $listeInstances->nom_zone .'</h3>';
ne se répète avec le reste du code (je sais que ça vient du foreach vu que mon array contient 7 entrées mais je ne vois pas comment éviter ce doublon, le mieux serait via la requête ou le code PHP ?).Je suis sur de me prendre la tête pour rien et ça doit être tout con mais bon :x.
Merci d'avance pour vos réponses, suggestions, etc .
Edit de Sephi-Chan : Je renomme le sujet pour mieux présenter le problème (l'ancien titre était "BDD, affichage via php").