8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je débute avec codeigniter et je dois faire deux boucles imbriquées dans la vue. Jusque là rien de bien compliqué, mais le problème vient du fait que la deuxième boucle doit récupérer chaque id de 1ere et afficher les résultats correspondant.
exemple : j'ai une table auteur qui contient plusieurs articles, chaque auteur peut avoir plusieurs articles.
J'ai besoin d'afficher la liste de tous auteurs et la liste des articles correspondant à chaque auteur :
Auteur 1 : -article1 -article 2 - article 3
Auteur 2 : -article 1 -article 2 -article 3 .....

En procédurale c'est facile mais je ne sais pas comment procéder dans codeigniter pour avoir ce résultat, est-ce possible de faire une boucle dans le controller ou dans le modèle ?

J'espère avoir été clair, en tout cas merci d'avance.
Salut,

comme c'est du MVC, il faut bien dissocier les éléments : quelles sont mes données ? comment les afficher ? Comment faire le lien entre mes données et la vue ?
Il faut raisonner par modules (dans ton cas par fonctions) qui ne doivent réaliser qu'une seule action. Une fois que toutes ces actions sont définies, tu peux les classes dans le modèle, la vue ou le contrôleur. Après avoir fait ça, tu peux alors penser à l'algo en lui même, et au type de données à utiliser...

voici une piste de réflexion:

Class Model{

//Attributs et méthodes de ta classe modèle

function RecupererArticlesParAuteur($auteur);
function RecupererAuteurs();

function RecupererAuteursArticles(){
  
 $tableau_final = array();
 $mes_auteurs = $this->RecupererAuteurs();
 $nb_auteurs = sizeof($mes_auteurs);
 
 for($i = 0; $i < $nb_auteurs; $i++){
   $tableau_final [$i] ['auteur'] = $mes_auteurs[$i];
   $tableau_final [$i]['articles'] = $this->RecupererArticlesParAuteur($mes_auteurs[$i]);
 }
 
 return $tableau_final;
}

Class View{

 //Attributs et méthodes de ta classe vue

 function afficherTout($tableau_final){
  $s= sizeof($tableau_final);

  for($i = 0; $i < $nb_auteurs; $i++){
   $this->afficherArticlesParAuteur($tableau_final [$i]); 
  }
 }

 function afficherArticlesParAuteur($une_ligne_auteur_articles){
     //Traitement sur $tableau_final['auteur']
    //Appel à $this->afficherArticles($tableau_final['articles']);
 }

 function afficherArticles($une_ligne_articles);

}

Class Controller{
 
 $model = new Model();
 $view = new View();
 
 function lancerArticlesParAuteur(){
   $this->view->afficherTout($this->model->RecupererAuteursArticles());
 }

}