IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compréhension avec requêtes SQL en MVC


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Wirbelwind
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 47
    Points : 109
    Points
    109
    Par défaut Compréhension avec requêtes SQL en MVC
    Bonjour à tous !

    Alors voilà, j'ai décidé de me lancer dans une archi MVC en utilisant mon propre "framework" si l'on peut dire
    Tout fonctionne à la perfection, mais je n'arrive pas à comprendre deux-trois détails, ce serait sympa de m'éclairer


    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 :

    Donc voilà comment je procédais avant :
    ( il y a volontairement des fautes afin d'aider à la compréhension )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

    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 ...

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

    .

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Travailles-tu avec un framework en particulier ?
    Si tu travailles en objet, le mieux (à mon goût) est de mettre les formations désirées dans une propriété (array) de ton objet, ainsi quand tu hydrateras ton instance de Client, tu récupéreras les FormationsDésirées dans cette propriété.
    En passant, j'espère que tu n'as pas mis FormationsDésirées avec un accent dans ta base de données

  3. #3
    Membre régulier Avatar de Wirbelwind
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 47
    Points : 109
    Points
    109
    Par défaut
    Merci pour votre réponse.

    Non, je n'utilise aucun Framework, tout est fait "à la main".

    En gros, j'aimerais simplement qu'une seule variable contienne les données de tous les clients ( avec un fetchAll en PDO ), ainsi que les formations de chaque client

    On pourrais procéder sous forme de tableau :

    Seulement le truc, c'est que je ne voit pas bien comment "fusionner" les résultats de ces deux requêtes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    $clients = array(
     
    	0 => array(
    		'nom' => 'toto',
    		'formations' => array(
    			0 => array(
    				'nom' => 'Formation truc'
    			),
    			1 => array(
    				'nom' => 'Formation truc'
    			)
    		)
    	),
     
    	1 => array(
    		'nom' => 'titi',
    		'formations' => array(
    			0 => array(
    				'nom' => 'Formation truc'
    			),
    			1 => array(
    				'nom' => 'Formation truc'
    			)
    		)
    	)
     
    	...
     
    );

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Est-ce que tu peux poster ta classe Client ?
    Il faudrait que tu fasses une méthode qui va chercher toutes les formations pour le client donné et qui les implémente dans un array. Je pourrais te guider un peu mieux en voyant comment tu a construis ta classe.

  5. #5
    Membre régulier Avatar de Wirbelwind
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 47
    Points : 109
    Points
    109
    Par défaut
    Je me suis peut-être mal exprimé, et je m'en excuse...

    "Client" n'est pas vraiment une classe mais une variable contenant le set des résultats d'une requête SQL faite
    à l'aide de PDO, comme j'ai le l'ai indiqué dans la partie "Donc voilà comment je procédais avant"

    Je te l'accorde, les flèches font penser à une classe, c'est simplement à cause du FETCH_OBJ activé

Discussions similaires

  1. probléme avec requête SQL
    Par richard60 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/03/2007, 18h18
  2. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41
  3. VBA avec requête SQL
    Par seba_stien dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/10/2006, 15h39
  4. [JDBC]probleme avec requête sql
    Par lkryss dans le forum JDBC
    Réponses: 16
    Dernier message: 10/06/2006, 01h44
  5. [MySQL] Problème de listes déroulantes liées avec requêtes sql
    Par richton95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/12/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo