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 :

Bonne pratique et philosophie MVC


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Points : 103
    Points
    103
    Par défaut Bonne pratique et philosophie MVC
    Amis développeurs.euses bonjour,

    Je suis actuellement en formation pro développeur et nous étudions en ce moment le MVC en php. Du coup je me suis lancé dans un petit excercice pour m’entraîner et essyer d'aller un peu plus loin. Seulement voila on se retrouve vite submergé de fichiers si on s'y prend mal c'est pourquoi je viens vers vous. Grosso modo j'ai un soucis de philosophie.

    1er exemple d'architecture qui me pose soucis :

    SOLUTION A :

    Controler : control.php
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <?php
     
    require_once "class/database.php";
     
    class component{
     
     
        public function recupCotes(){
            //appel de la base de donnée et des routes
            $connexion = new database();
            $routeComposant = new chemin_acces();
            //connexion à la base de donnée
            $numeroConnexion = $connexion->connect($routeComposant->connect("host"), $routeComposant->connect("login") , $routeComposant->connect("psw") , $routeComposant->connect("name"));
            //Chemin vers la base de donnée
            $spathSQL = $routeComposant->connect("sql")."/recup_blabla.sql";
            //Récupération des données sql
            $parieur = $connexion->getSelectDatas($numeroConnexion, $spathSQL, array());
     
            $recupCote = "";
            for($i=0;$i<count($parieur);$i++){ 
                $recupCote .= 
                    "<div class = \"resultatRecupCote\">
                        <div class = \"resultatDate\">"
                            .$parieur[$i]["date_match"].
                        "</div>
    
                        <div class = \"resultatMatch\">
                           <div class = \"resultatEquipe\">"
                                .$parieur[$i]["domicile"]. " - " .$parieur[$i]["exterieur"].
                           "</div>
                            <div class = \"resultatHeure\">"
                            .$parieur[$i]["heure_match"].
                            "</div>
                        </div>
    
                        <div class =\"resultatCote\">
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Victoire
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_victoire"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Nul
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_nul"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Defaite
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_defaite"].">
                                </div>
                            </div>
                        </div> 
                    </div>";
     
            };
     
            require_once $routeComposant->connect("html")."/module/blabla.html"; 
            $connexion->close($numeroConnexion);
     
        }
     
    }

    vue : blabla.htm
    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
     
    <div class = "headerRecupCote">
        <div class = "logoHeaderRecupCote">
            <img src="img/logo_blabla.png">
        </div>
        <div class = "emptyHeaderRecupCote">    
        </div>
    </div>
     
    <div class = "selectedRecupCote">
        <form class = "formselectedRecupCote" method="POST" action="">
            <div class = "containSelectRecupCote">
                <select class="choiceCote">
                    <option value = "1">V-N-D</option>
                </select>
            </div>
            <div class = "containSelectRecupCote">
                <select class="choiceMatch">
                    <option value = "1">TOUS</option>
                </select>
            </div>
        </form>
    </div>
    <div class = "allCote">
    <?php echo $recupCote?>
    </div>
    SOLUTION B :

    controler : control.php
    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
     
    <?php
     
    require_once "class/database.php";
     
    class component{
     
     
        public function recupCotes(){
            //appel de la base de donnée et des routes
            $connexion = new database();
            $routeComposant = new chemin_acces();
            //connexion à la base de donnée
            $numeroConnexion = $connexion->connect($routeComposant->connect("host"), $routeComposant->connect("login") , $routeComposant->connect("psw") , $routeComposant->connect("name"));
            //Chemin vers la base de donnée
            $spathSQL = $routeComposant->connect("sql")."/recup_blabla.sql";
            //Récupération des données sql
            $parieur = $connexion->getSelectDatas($numeroConnexion, $spathSQL, array());    
            require_once $routeComposant->connect("html")."/module/blabla.html"; 
            $connexion->close($numeroConnexion);
     
        }
     
    }
    vue : blabla.html
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    <div class = "headerRecupCote">
        <div class = "logoHeaderRecupCote">
            <img src="img/logo_blabla.png">
        </div>
        <div class = "emptyHeaderRecupCote">    
        </div>
    </div>
     
    <div class = "selectedRecupCote">
        <form class = "formselectedRecupCote" method="POST" action="">
            <div class = "containSelectRecupCote">
                <select class="choiceCote">
                    <option value = "1">V-N-D</option>
                </select>
            </div>
            <div class = "containSelectRecupCote">
                <select class="choiceMatch">
                    <option value = "1">TOUS</option>
                </select>
            </div>
        </form>
    </div>
    <div class = "allCote">
     
    <?php 
    for($i=0;$i<count($parieur);$i++){ 
     
                    "<div class = \"resultatRecupCote\">
                        <div class = \"resultatDate\">"
                            .$parieur[$i]["date_match"].
                        "</div>
    
                        <div class = \"resultatMatch\">
                           <div class = \"resultatEquipe\">"
                                .$parieur[$i]["domicile"]. " - " .$parieur[$i]["exterieur"].
                           "</div>
                            <div class = \"resultatHeure\">"
                            .$parieur[$i]["heure_match"].
                            "</div>
                        </div>
    
                        <div class =\"resultatCote\">
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Victoire
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_victoire"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Nul
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_nul"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Defaite
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_defaite"].">
                                </div>
                            </div>
                        </div> 
                    </div>";
     
            };
    ?>
    </div>
    Du coup je me demandais si il y'avait une pratique meilleure qu'une autre ou si aucune de ces deux solutions n'était bonne


    Ma deuxième question porte plus sur un aspect technique. En effet j'aimerais intégrer ma vue blabla.html dans une autre vue. Et c'est à partir de la que je sens comme un malaise dans l'architecture de mon code

    controler : main.php
    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
     
    <?php
     
    require_once "class/route.php";
    require_once "class/component.php";
     
    // initialise les différentes routes 
    $chemin = new chemin_acces();
     
    // initialise un object composant
    $composant = new component();
     
    // Affiche la vue de l'acueil
    require_once $chemin->connect("html")."/accueil.html";
     
    ?>
    vue : accueil.html
    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
     
    <html>
     
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Accueil </title>
        <meta name="Accueil" content="introduction">
        <link rel="stylesheet" href="css/main.css">
        <link rel="stylesheet" href="css/moduleRecupCote.css">
    </head>
     
    <body>
     
    <header>
     
    </header>
     
    <section id="sectionAccueil">
     
        <aside id="asideAccueil">
        </aside>
     
        <article id="articleAccueil">
     
            <div class="moduleRecupCote">
                <?php $composant->recupCotes(); ?> <!--appel de la méthode ->
            </div>
     
        </article>
     
    </section>
     
     
    </body>
    </html>
    Le seul moyen que j'ai trouvé pour ne pas faire comme ça et d'enregistrer toute ma vue blabla.html dans une variable retourner par la méthod $composant->recupCotes(). Çà donnerait ça du coup

    component.php
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <?php
     
    require_once "class/database.php";
     
    class component{
     
     
        public function recupCotes(){
            //appel de la base de donnée et des routes
            $connexion = new database();
            $routeComposant = new chemin_acces();
            //connexion à la base de donnée
            $numeroConnexion = $connexion->connect($routeComposant->connect("host"), $routeComposant->connect("login") , $routeComposant->connect("psw") , $routeComposant->connect("name"));
            //Chemin vers la base de donnée
            $spathSQL = $routeComposant->connect("sql")."/recup_cote_betclic.sql";
            //Récupération des données sql
            $parieur = $connexion->getSelectDatas($numeroConnexion, $spathSQL, array());
     
            $recupCote = "<div class = \"headerRecupCote\">
        <div class = \"logoHeaderRecupCote\">
            <img src=\"img/logo_blabla.png\">
        </div>
        <div class = \"emptyHeaderRecupCote\">    
        </div>
    </div>
    <div class = \"selectedRecupCote\">
        <form class = \"formselectedRecupCote\" method=\"POST\" action=\"\">
            <div class = \"containSelectRecupCote\">
                <select class=\"choiceCote\">
                    <option value = "1">V-N-D</option>
                </select>
            </div>
            <div class = \"containSelectRecupCote\">
                <select class=\"choiceMatch\">
                    <option value = \"1\">TOUS</option>
                </select>
            </div>
        </form>
    </div>
    <div class = \"allCote\">
    ;
            for($i=0;$i<count($parieur);$i++){ 
                $recupCote .= 
                    "<div class = \"resultatRecupCote\">
                        <div class = \"resultatDate\">"
                            .$parieur[$i]["date_match"].
                        "</div>
    
                        <div class = \"resultatMatch\">
                           <div class = \"resultatEquipe\">"
                                .$parieur[$i]["domicile"]. " - " .$parieur[$i]["exterieur"].
                           "</div>
                            <div class = \"resultatHeure\">"
                            .$parieur[$i]["heure_match"].
                            "</div>
                        </div>
    
                        <div class =\"resultatCote\">
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Victoire
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_victoire"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Nul
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_nul"].">
                                </div>
                            </div>
                            <div class =\"resultat\">
                                <div class= \"resultatType\">
                                    Defaite
                                </div>
                                <div class= \"resultatCoteContent\">
                                    <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_defaite"].">
                                </div>
                            </div>
                        </div> 
                    </div>";
     
            };
    $recupCote .= "</div>";
     
            $connexion->close($numeroConnexion);
    return $recupCote; // retourne tout le html généré
        }
     
    }
     
    ?>

    controler : main.php
    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
     
    <?php
     
    require_once "class/route.php";
    require_once "class/component.php";
     
    // initialise les différentes routes 
    $chemin = new chemin_acces();
     
    $composant = new component();
    $retourneCote =  $composant->recupCotes()
     
    // Affiche la vue de l'accueil
    require_once $chemin->connect("html")."/accueil.html";
     
    ?>
    Et du coup la vue accueil.html
    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
     
    <html>
     
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Accueil </title>
        <meta name="Accueil" content="introduction">
        <link rel="stylesheet" href="css/main.css">
        <link rel="stylesheet" href="css/moduleRecupCote.css">
    </head>
     
    <body>
     
    <header>
     
    </header>
     
    <section id="sectionAccueil">
     
        <aside id="asideAccueil">
        </aside>
     
        <article id="articleAccueil">
     
            <div class="moduleRecupCote">
                <?php echo $retourneCote  ?> // Recois la retour de la méthod $composant->recupCotes()
            </div>
     
        </article>
     
    </section>
     
     
    </body>
    </html>
    Du coup voila je me suis quand même bien tourné les méninges avant de venir vous voir et j’espère que vous aurez compris mes problèmes techniques et philosophiques. Je vous remercie d'avance pour les conseils et corrections

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Pour répondre à ta première question, ni l'une ni l'autre. Dans une architecture MVC (qui est juste une architecture parmi d'autres, il faut le savoir),

    - Il ne doit pas y avoir de code en relation directe avec la base de données dans le contrôleur, ce qui est le cas dans les 2 exemples. Tu dois déplacer ce code dans une autre classe et utiliser cette classe.

    - Il ne doit pas y avoir de code html, ce qui est le cas dans le 1er exemple. La boucle for doit aller soit dans une classe séparée, soit plus simplement dans la vue (donc la 2e version est meilleure).

    De manière générale, ne mélange pas le html et la base de données dans une seule classe/méthode/fonction, parce que tes classes ne seront plus réutilisables et tout l'intérêt de l'utilisation de classes.

    Pour ta 2e question, il n'y a pas de différence entre les deux. Bon, il est peut-être préférable d'utiliser uniquement des variables dans la vue, et dans ce cas utilise la 2e solution.

    Il y a de meilleures solutions, mais je ne sais pas si à ton niveau tu dois déjà commencer à aborder ça, ou à rester aux fondamentaux d'abord.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Points : 103
    Points
    103
    Par défaut
    Merci pour ta réponse

    Ce que tu m'as dit m'as beaucoup aidé du coup j'ai un résultat qui je le pense est convenable mais j'ai du faire une petite concession

    A la base je voulais créer une page générique et que des vues viennent s'y intégrer dedans, en gros je voyais ça comme un composant qui s’intègre. Je voyais pas ça trop hard c'est pour ça que je me suis lancé la dedans mais je me rend compte que j'ai clairement pas le niveau et que j'ai sauté quelques étapes que je n'avais pas forcément vues.

    Du coup j'ai trouvé le tuto sur dévellopez.net et je suis partis sur un truc plus simple en intégrant la notion de gabarit. Au final ça fonctionne et ça donne ça :
    Je vous mets quasi tout le code pour savoir si je suis sur la bonne route . C'est un peu long mais pour des personnes expérimentés je pense que les erreurs sautent vites aux yeux. Merci d'avance


    main.php => appelle la méthode accueil de la class page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    require_once "class/page.php";
     
    $accueil = new page();
    $accueil->accueil();
     
    ?>
    page.php => appel la method recupCote() et integre sa valeur de retour dans une variable de la class component(). Require de la page accueil.php et de gabarit.php
    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
     
     
    <?php
     
    require_once "routeConfig.php";
    require_once "component.php";
     
    class page{
     
        public function accueil(){
            $accueil = new routeConfig();
     
            $composant = new component();
     
            $parieur = $composant->recupCotes();
            require_once $accueil->connect("html")."/accueil.php";
            require_once $accueil->connect("html")."/gabarit.php";
     
        }
    }
     
    ?>
    component.php => méthode classique de récupération de donnée
    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
     
    <?php
     
    require_once "routeModel.php"; //connexion a la bdd
     
    class component{
     
        public function recupCotes(){
     
            $connectBDD = new routeModel();
            $parieur = $connectBDD->select_module_blabla();
            return $parieur;       
        }
    }
     
    ?>
    Et pour finir les vues

    accueil.php
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php ob_start(); ?>
      <?php  for($i=0;$i<count($parieur);$i++){
     
            echo "<div class = \"resultatRecupCote\">
                            <div class = \"resultatDate\">"
                                .$parieur[$i]["date_match"].
                            "</div>
    
                            <div class = \"resultatMatch\">
                                <div class = \"resultatEquipe\">"
                                    .$parieur[$i]["domicile"]. " - " .$parieur[$i]["exterieur"].
                                "</div>
    
                                <div class = \"resultatHeure\">"
                                    .$parieur[$i]["heure_match"].
                                "</div>
                            </div>
    
                            <div class =\"resultatCote\">
                                <div class =\"resultat\">
                                    <div class= \"resultatType\">
                                        Victoire
                                    </div>
                                    <div class= \"resultatCoteContent\">
                                        <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_victoire"].">
                                    </div>
                                </div>
    
                                <div class =\"resultat\">
                                    <div class= \"resultatType\">
                                        Nul
                                    </div>
                                    <div class= \"resultatCoteContent\">
                                        <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_nul"].">
                                    </div>
                                </div>
    
                                <div class =\"resultat\">
                                    <div class= \"resultatType\">
                                        Defaite
                                    </div>
                                    <div class= \"resultatCoteContent\">
                                        <input class=\"buttonCote\" type=\"button\" value=".$parieur[$i]["cote_defaite"].">
                                    </div>
                                </div>
                            </div>
                        </div>";                
                };
            ?>
    <?php $module = ob_get_clean(); ?>
    gabarit.php
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <html>
     
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Accueil </title>
        <meta name="Accueil" content="introduction">
        <link rel="stylesheet" href="css/main.css">
        <link rel="stylesheet" href="css/moduleRecupCote.css">
    </head>
     
    <body>
     
    <header>
     
    </header>
     
    <section id="sectionAccueil">
     
        <aside id="asideAccueil">
        </aside>
     
        <article id="articleAccueil">
     
            <div class="moduleRecupCote">
                <div class = "headerRecupCote">
            <div class = "logoHeaderRecupCote">
                <img src="img/logo_blabla.png">
            </div>
            <div class = "emptyHeaderRecupCote">    
            </div>
        </div>
     
        <div class = "selectedRecupCote">
            <form class = "formselectedRecupCote" method="POST" action="">
                <div class = "containSelectRecupCote">
                    <select class="choiceCote">
                        <option value = "1">V-N-D</option>
                    </select>
                </div>
                <div class = "containSelectRecupCote">
                    <select class="choiceMatch">
                        <option value = "1">TOUS</option>
                    </select>
                </div>
            </form>
        </div>
        <div class = "allCote">
            <?php echo $module ?>
        </div>
     
        </article>
     
    </section>
     
     
    </body>
    </html>

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    C'est difficile de lire beaucoup de code, mieux vaut choisir un bout représentatif et dire quel est le problème avec (s'il y en a).

    Il y a bien sûr beaucoup de choses à améliorer dans ce que tu as fait, mais l'essentiel c'est: est-ce que ça marche? Une fois que ça marche, tu pourras toujours améliorer le code.

    Et l'utilisation de la page générique est bien sûr la meilleure solution. Pour la mettre en oeuvre, le plus facile est de passer par des contrôleurs qui n'utilisent pas require ou include, mais qui retournent les valeurs à afficher, et par l'utilisation d'un contrôleur principal (appellé front controller).

    De manière très schématisée, tu auras:

    - un contrôleur principal qui reçoit toutes les requêtes et qui les redirige vers le contrôleur approprié. Tu n'as donc plus un fichier par url, toutes les urls seront traitées par le fichier du contrôleur principal

    - le contrôleur approprié utilise les modèles et les autres classes pour générer le contenu à afficher, et retourne ce contenu au contrôleur principal

    - le contrôleur principal stocke ce contenu dans une ou plusieurs variables, et passe cette/ces variables à la page générique (par exemple en utilisant un simple include)

    - la page générique comprend une partie fixe (qui ne change pas, par exemple la déclaration html/head/body, les inclusions de css et de javascript) et une partie non-fixe dans laquelle est affichée la ou les variables qui vient du contrôleur principal.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Points : 103
    Points
    103
    Par défaut
    Merci beaucoup pour tes réponses ça m'a beaucoup aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quand passer au MVC ? Bonnes pratiques selon la taille du projet
    Par narusite dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 13/06/2016, 15h56
  2. [Bonne Pratique] MVC / JAVA
    Par javan00b dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 13/05/2013, 03h48
  3. Bonne pratique MVC & POO
    Par discmat dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2012, 18h38
  4. Bonnes pratiques et feedback sur MVC
    Par SPKlls dans le forum MVC
    Réponses: 7
    Dernier message: 23/06/2009, 16h25
  5. Réponses: 5
    Dernier message: 09/06/2009, 00h21

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