Compréhension avec requêtes SQL en MVC
Bonjour à tous ! :mrgreen:
Alors voilà, j'ai décidé de me lancer dans une archi MVC en utilisant mon propre "framework" si l'on peut dire :aie:
Tout fonctionne à la perfection, mais je n'arrive pas à comprendre deux-trois détails, ce serait sympa de m'éclairer :ptdr:
Voici donc ce que fait mon script :
( j'ai essayer d'expliquer le plus simplement possible )
Il liste chaque client et affichent les formations que ce dernier a sélectionné.
Par exemple un schéma basique : http://i.imgur.com/z0sERVS.gif
Donc voilà comment je procédais avant :
( il y a volontairement des fautes afin d'aider à la compréhension )
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <?php
$clients = query('
SELECT * FROM clients
');
$formations = prepare('
SELECT *
FROM Formations f, FormationsDesirées fd
WHERE fd.client_id = :client_id
AND fd.formation_id = f.id
');
?>
<!-- code html -->
<?php
foreach ($clients as $client)
{
echo 'Numéro: ' . $client->id . ' Nom: ' . $client->nom;
echo 'Formations désirées :';
$formations->execute(array(
':client_id' => $client->id
));
foreach ($formations as $formation)
{
echo 'Formation: ' . $formation->nom;
}
}
?> |
Maintenant, en MVC, je fait exactement la même chose mais en envoyant la variable "$clients" à la vue.
Mais là, c'est le drame ! :weird:
Comment faire pour effectuer tous les traitements dans le contrôleur sans être obligé de mettre le "$formations->execute" dans la vue ?
Car vous êtes conscient qu'un "execute" dans une vue, ça ne le fait pas du tout ... :zoubi:
J'ai d'abord pensé à faire un FetchAll avec PDO, ensuite bouclé et de rajouter les variables :
Voilà en gros ce que je pensait faire :
( il y a volontairement des fautes afin d'aider à la compréhension )
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php
foreach ($clients as $client)
{
$formations->execute(array(
':client_id' => $client->id
));
foreach ($formations as $formation)
{
$client->formations[] = \models\Formations::rechercheParID( $formation->id );
}
}
Vue::envoyerVariable( $client );
?> |
Mais cette méthode ne me semble pas très idéale, ni même adaptée.
Si vous avez des idées, j'en serait heureux ! :)
Merci beaucoup pour votre aide !
.