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 :

MVC comment ça marche?


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut MVC comment ça marche?
    j'ai lu plusieurs tuto sur le MVC et je ne comprends pas tout.
    Mon post contient plusieurs questions mais elles sont liées les unes par rapport aux autres.

    d'avance, un IMMENSE merci à vous. Parlez moi avec des mots hyper simples je suis novice et autodidacte.

    PRIMO: est-ce que tous les fichiers doivent avoir l'extention .php? ou peut-on avoir l'extention .html? si oui quelle différence? (html=vue php=contrôle?)

    pour l'instant j'ai un fichier où tout est mélangé le visuel est celui-ci

    Nom : form.JPG
Affichages : 208
Taille : 40,5 Ko

    le code de la page

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php
    session_start();
    ?><?php
     
    $nbresult=-1;
     
    if (isset($_POST['identifiant'])) 
    {
    	if ( ($_POST['identifiant']=="") || (!is_numeric($_POST['identifiant']))) {$identifiant=0;} else {
        	$identifiant=$_POST['identifiant'];}
    } else {
    		$identifiant=0;
    };
     
    if (isset($_POST['mdp']))
    {
            $mdp=$_POST['mdp'];
    } else {
    		$mdp="";
    };
     
     
    if (isset($_POST['form_ok']))
    {
            $form_ok=$_POST['form_ok'];
    } else {
    		$form_ok=false;
    };
     
     
     
    if ($form_ok) {
     
      	//connection au serveur:
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
        //requête SQL:
        $sql = "SELECT count(*) as compteur FROM mdp where matricule=".$identifiant." and mdp='".$mdp."'";
     
    	//exécution de la requête:
        $requete = odbc_do($cnx, $sql) ;
     
        //affichage des données:
    	$result = odbc_fetch_object($requete);
    	$nbresult=$result->compteur;
    //echo $nbresult;
     
    }
    ?>
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>formulaire d'identification</title>
    <style type="text/css">
    body,td,th {
    	font-size: 18px;
    }
    .couleurtext {
    	color: #00C;
    }
    .couleurtext {
    	color: #00C;
    }
    .tailletext {
    	font-size: 10px;
    }
    .taillemdp {
    	font-size: 12px;
    }
    </style>
    </head>
     
    <body>
    <p align="center"><img src="csp.jpg" width="434" height="71" alt="image" /></p>
    <p align="center">&nbsp;</p>
    <p align="center"><strong>Centre de Gestion de déclaration de disponibilité.</strong></p>
    <p align="center"><strong>   </strong></p>
    <form id="form1" name="form1" method="post" action="index.php">
    <p>&nbsp;</p>
     
    <div align="center">
      <?php 
    if (!$nbresult) {
    	echo'<b><font color="#FF0000">Mot de passe ou Identifiant incorrect !<br><br></font></b>';}
    else if ($nbresult==1) {
    	$_SESSION["cookie_matricule"] = $identifiant;
    	$_SESSION["cookie_mdp"]= $mdp;
    //	echo'<script>location.href="declaration_dispo.php";</script>';
    header('Location: declaration_dispo.php'); 
     
    }?></div>
    <p align="center"> <span class="couleurtext">Identifiant</span> :      
      <input name="identifiant" type="text" id="identifiant"  accesskey="1" tabindex="1" value="" size="20" maxlength="19" />
     </p>
    <p align="center"><span class="couleurtext">Mot de passe:</span>
      <input name="mdp" type="password" id="mdp" accesskey="2" tabindex="2" value="" size="20" maxlength="19" />
    </p>
    <p>&nbsp;</p>
     
      <div align="center">
        <p>
          <input type="submit" name="ok" id="ok" value="Valider" accesskey="3" tabindex="3" />
          <input type="submit" name="Annuler" id="Annuler" value="Annuler" accesskey="4" tabindex="4" />
          <input name="form_ok" type="hidden" id="form_ok" value="1">
        </p>
      </div>
    </form>
    <p align="left"><a href="mailto:hdupont@sdis28.fr" class="tailletext">webmaster</a></p>
    <p align="left"><a href="centre_liste.php" class="tailletext">*</a></p>
    <form id="form2" name="form2" method="post" action="centre_sdis.php">
      <p align="center"><input type="submit" name="codis" id="codis" value="Accès CODIS" accesskey="5" tabindex="5" /></p>
    </form>
    </body>
    </html>
    A l'heure actuelle j'ai un fichier config.php où il y a les critères de connection et une session suite à la validation d'un formulaire d'identification.

    Pour insérer de la donnée, il me faudra donc envoyer vers un fichier "insertion.php" avec contrôle des données, préparation de la requête et execution de la reqête. Je le ferai en PDO, il parait que c'est mieux contre les failles?

    Comment avoir accusé de récéption sur le même formulaire. (l'insertion a été effectuée.)



    Si je change la date,
    soit dans la case date soit par la liste des dates à droite du formulaire,
    il va falloir envoyer la valeur (Plutôt GET ou POST?) vers un fichier
    "selection date.php"
    -> requête pour savoir si l'agent a déclaré de la donnée et si oui,

    C'EST LA LE COEUR DE MON SOUCI

    comment je fais pour renvoyer sur mon formulaire de départ les valeurs des cases à cocher ($tranche1...) , pour effectuer l'affichage.
    Je ne vois dans aucun tuto décrit le chemin retour. C'est peut-être simple mais je suis autodidacte et je ne sais vraiment pas comment ça se passe.

    Enfin

    Concernant le script du calendrier qui prend beaucoup de lignes.
    Me conseillez-vous de faire un module "calendar.php"
    et de remplacer toute les lignes de code dans le formulaire principale par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("calendar.php")

  2. #2
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    bonjour,

    PRIMO: est-ce que tous les fichiers doivent avoir l'extention .php? ou peut-on avoir l'extention .html? si oui quelle différence? (html=vue php=contrôle?)
    si tu as du contenu php dans ta page,ton extension doit être .php sinon, si c'est que du HTML, tu peux mettre l'un ou l'autre sans problème.

    il va falloir envoyer la valeur (Plutôt GET ou POST?)
    si c'est des données longues ou sensibles ou s'il y en a beaucoup, utilise POST sinon, tu peux utiliser GET

    Concernant le script du calendrier qui prend beaucoup de lignes.
    Me conseillez-vous de faire un module "calendar.php"
    Pour les pages, la meilleure solution me sembl être de faire ta page principale contenant le squelette et de faire des include pour les divers modules. ça permet de séparer le code et de le rendre plus clair.
    de plus, si tu as besoin de cette même partie de code dans une autre page, tu n'auras pas à le réécrire, il te suffira de faire un include.


    après, pour les autres questions, je ne suis pas sur d'avoir tout compris...
    si j'ai bien compris, ce que tu veux faire c'est que l'utilisateur rentre la date, coche les cases souhaitées et valide le formulaire. ensuite, les valeurs envoyées doivent être enregistrées sur ta bdd, affichées sur la droite de la page de base et confirmer l'action en écrivant "l'insertion a été effectuée."
    n'oubliez pas de voter si le message vous a aidé


  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    J'étais comme toi au début, je lisais beaucoup de tuto sur du MVC maison, je comprenais à peu près, puis finalement pas tant que ça.

    Surtout que sur beaucoup de tuto c'est pas vraiment du MVC. Du moins ce sont des versions très très simplifiées.

    Comme tu le sais le principe est de séparer les couches. On pourrait donc voir ça comme 3 dossiers :
    - Le premier contient tes vues : on parle donc là que du HTML, ce qui s'affichera à l'écran. A partir d'ici, tous ces fichiers pourrait avoir l'extension .html
    - Le deuxième contient tes modèles : ces fichiers contiennent les traitements, on aura donc l'extension .php ici.
    - Le troisième contient les contrôleurs : c'est la logique de ton application, tout passe par lui, tout se décide ici.

    Sur ta page actuel, tu aurais ton modele.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
    <?php
    session_start();
    ?><?php
     
    $nbresult=-1;
     
    if (isset($_POST['identifiant'])) 
    {
    	if ( ($_POST['identifiant']=="") || (!is_numeric($_POST['identifiant']))) {$identifiant=0;} else {
        	$identifiant=$_POST['identifiant'];}
    } else {
    		$identifiant=0;
    };
     
    if (isset($_POST['mdp']))
    {
            $mdp=$_POST['mdp'];
    } else {
    		$mdp="";
    };
     
     
    if (isset($_POST['form_ok']))
    {
            $form_ok=$_POST['form_ok'];
    } else {
    		$form_ok=false;
    };
     
     
     
    if ($form_ok) {
     
      	//connection au serveur:
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
        //requête SQL:
        $sql = "SELECT count(*) as compteur FROM mdp where matricule=".$identifiant." and mdp='".$mdp."'";
     
    	//exécution de la requête:
        $requete = odbc_do($cnx, $sql) ;
     
        //affichage des données:
    	$result = odbc_fetch_object($requete);
    	$nbresult=$result->compteur;
    //echo $nbresult;
     
    }
    ?>
    ta vue.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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>formulaire d'identification</title>
    <style type="text/css">
    body,td,th {
    	font-size: 18px;
    }
    .couleurtext {
    	color: #00C;
    }
    .couleurtext {
    	color: #00C;
    }
    .tailletext {
    	font-size: 10px;
    }
    .taillemdp {
    	font-size: 12px;
    }
    </style>
    </head>
     
    <body>
    <p align="center"><img src="csp.jpg" width="434" height="71" alt="image" /></p>
    <p align="center">&nbsp;</p>
    <p align="center"><strong>Centre de Gestion de déclaration de disponibilité.</strong></p>
    <p align="center"><strong>   </strong></p>
    <form id="form1" name="form1" method="post" action="index.php">
    <p>&nbsp;</p>
     
    <div align="center">
      <?php 
    if (!$nbresult) {
    	echo'<b><font color="#FF0000">Mot de passe ou Identifiant incorrect !<br><br></font></b>';}
    else if ($nbresult==1) {
    	$_SESSION["cookie_matricule"] = $identifiant;
    	$_SESSION["cookie_mdp"]= $mdp;
    //	echo'<script>location.href="declaration_dispo.php";</script>';
    header('Location: declaration_dispo.php'); 
     
    }?></div>
    <p align="center"> <span class="couleurtext">Identifiant</span> :      
      <input name="identifiant" type="text" id="identifiant"  accesskey="1" tabindex="1" value="" size="20" maxlength="19" />
     </p>
    <p align="center"><span class="couleurtext">Mot de passe:</span>
      <input name="mdp" type="password" id="mdp" accesskey="2" tabindex="2" value="" size="20" maxlength="19" />
    </p>
    <p>&nbsp;</p>
     
      <div align="center">
        <p>
          <input type="submit" name="ok" id="ok" value="Valider" accesskey="3" tabindex="3" />
          <input type="submit" name="Annuler" id="Annuler" value="Annuler" accesskey="4" tabindex="4" />
          <input name="form_ok" type="hidden" id="form_ok" value="1">
        </p>
      </div>
    </form>
    <p align="left"><a href="mailto:hdupont@sdis28.fr" class="tailletext">webmaster</a></p>
    <p align="left"><a href="centre_liste.php" class="tailletext">*</a></p>
    <form id="form2" name="form2" method="post" action="centre_sdis.php">
      <p align="center"><input type="submit" name="codis" id="codis" value="Accès CODIS" accesskey="5" tabindex="5" /></p>
    </form>
    </body>
    </html>
    et ton controleur.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Controleur
    {
         public function __construct() { }
     
         public function action1controleur() { }
     
         public function action2controleur() { }
     
         ...
    }
    Dans ton fichier index.php à la racine de ton FTP, tu déclares ton controleurs et l'initialise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    Controleur = new Controleur(); // Oubli pas l'include du controleur.php pour pouvoir te servir du controleur
    ?>
    Ensuite pour appeler tes actions, il te faut des paramètres, pourquoi pas utiliser la méthode GET. Tu pourrais avoir une URL du genre :
    http://www.google.fr/?action=action1controleur

    A la suite de la déclaration de ton controleur, tu testes la valeur du GET (si jamais le paramètre n'est pas bon, s'il n'existe pas, ou même s'il y en a pas, tu définit une page par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(!empty($_GET['action']))
    {
        // Ici tu peux faire un petit traitement voir si ton action existe, avant d'utiliser la valeur
     
        // Ici tu appelles la bonne méthode de ton controleur
        // En PHP 5, ca se fait comme ceci :
        Controleur->$_GET['action'](); // On utilise l'objet Controleur, et on appelle la méthode adéquat (ici $_GET['action'] vaut action1controleur donc on appelle la méthode action1controleur()
    }
    Maintenant il te faut redéfinir ton controleur, qui lui contient la logique de ce qu'il faudra afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Controleur
    {
        ...
     
        public function action1controleur() 
        { 
              // Appel du modele
              include('modele.php');
     
              // Puis appel de la vue
              include('vue.html'); // En réalité, il faut mettre .php vu que tu affiches des données PHP dedans
     
         }
    }
    Biensûr cet exemple n'est pas sécurisé, mais c'était pour l'idée générale. Après il faut avoir un minimum de connaissance PHP 5 pour comprendre, mais dit moi si tu t'es perdu.

    Sinon, en MVC, il faut penser réutilisation. Cela veut dire que tu sépares au maximum tes informations, de façon que si tu as besoins de réutiliser, rien qu'un infime bout de code, tu puisses le faire, sans devoir recoder rien que 2 - 3 lignes.

    Si tu as un calendrier, tu fais un calendrier.php
    Si ce calendrier utilise des propriétés diverses, tu fais un fichier par propriété.

    N'est pas peur de créer plusieurs fichiers, même si ceux-ci ne contiennent que 4 - 5 lignes, c'est plus lisible par la suite.

    ps : Oublie pas non plus de séparer le CSS de la partie HTML

    ps 2 : Tu devrais regarder du côté de Twig, qui permet de faire de l'héritage de template (créer un design général, et l'utiliser sur n'importe quelle page), ainsi que d'autres propriétés utiles, que tu verras en t'y intéressant.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  4. #4
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    bonjour et merci à vous deux pour vos réponces

    je viens d'essayer de suivre le tuto sur ZEND F mais je n'arrive pas à configurer donc je laisse tombber et je vais (essayer) sur la solution de bob 633.

    déjà ce n'était pas le code lié à l'affichage.
    je le mettrai à la fin du post car il est très long du fait qu'il y ai le code du calendrier.

    je mets les formulaires que j'ai déjà et ceux que je vais créer pour voir si j'ai bien compris.

    déjà fait:

    -formulaire d'authentification "login.html" avec fonction de hashe via fichier"login.php" et création d'un token.
    -formulaire "configuration.php" connection à la base de donnée et fonction cryptage du mot de passe.
    -formulaire "check.php" pour vérifier l'existance du token (dans le livre que j'ai apparement, il faut que tous les fichiers aient l'extention .php pour que ça fonctionne).
    -formulaire "logout.php" pour destruction de la session.

    A faire:
    - formulaire "calendar.php" pour la fonction calendrier
    - formulaire "liste_date.php" pour créer la liste des dates où l'agent a déclaré de la disponibilité > date jour.
    - formulaire "controle_dispo.php" pour vérifier si l'agent à la date du calendrier sélectionné à déclaré de la disponibilité.
    -formulaire "donnees_utilisateur" pour déterminer les centres d'affectations et si droit administrateurs.
    -formulaire "gestion_double_engagement.php" prise en charge du numéro du centre de secours.
    -formulaire "datetime.php" permet de déterminer le créneau actuel.
    -formulaire "insert_dispo.php" pour déclarer de la disponibilité
    -formulaire"update_dispo.php"pour modifier de la disponibilité
    -formulaire"erase_dispo.php" pour supprimer de la disponibilité

    Pour les trois derniers formulaires, pour vérifier la donnée avant de faire la requête, peut-on utiliser un formulaire "controle_donnee.php" commun?

    faut-il créer un formulaire "CSS.php"??? où je peux le laisser dans la vue?

    j'ai pas trop compris le fichier controleur et ce qui suit bob633.

    Est-ce qu'il faut mettre tous ces fichiers directement dans www, ou faut-il les classer dans différents répertoires comme un MVC?
    Je vous demande celà car chez nous le responsable informatique est très exigeant sur la sécurisation.

    ATTENTION, voici le code du formulaire
    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
     
    <?php
    // a inserer vérification du token via "config.php"
    session_start();
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Déclaration dispo jour automatique</title>
    </head>
    <style type="text/css">
    a{ text-decoration:none;} 
    a:link{color: #006;}
    a:visited{color: #006;}
    a:active{color: red;}
    a:hover{color: red;}
     
    .ds_box {
    	background-color: #FFF;
    	border: 1px solid #000;
    	position: absolute;
    	z-index: 32767;
    }
     
    .ds_tbl {
    	background-color: #FFF;
    }
     
    .ds_head {
    	background-color: #333;
    	color: #FFF;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 13px;
    	font-weight: bold;
    	text-align: center;
    	letter-spacing: 2px;
    }
     
    .ds_subhead {
    	background-color: #CCC;
    	color: #000;
    	font-size: 12px;
    	font-weight: bold;
    	text-align: center;
    	font-family: Arial, Helvetica, sans-serif;
    	width: 32px;
    }
     
    .ds_cell {
    	background-color: #EEE;
    	color: #000;
    	font-size: 13px;
    	text-align: center;
    	font-family: Arial, Helvetica, sans-serif;
    	padding: 5px;
    	cursor: pointer;
    }
     
    .ds_cell:hover {
    	background-color: #F3F3F3;
    } /* This hover code won't work for IE */
     
    .Style1 {
    	color: #F60300;
    	font-weight: bold;
    }
    </style>
     
    <?php
    // "config.php"
    if (isset($_SESSION["cookie_matricule"])) 
     
    { 
     $cookie_matricule=$_SESSION["cookie_matricule"];
     $centre=0;
    //connection à la base de données:
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
    //Recuperation des valeurs des centres
     $sql = "SELECT * FROM Rcentre where matricule=".$cookie_matricule."";
        $requete = odbc_do($cnx, $sql) ;
    	$result = odbc_fetch_object($requete);
     
    	$centre1=$result->centre1;
    	$centre2=$result->centre2;
    	$ncentre1=$result->ncentre1;
    	$ncentre2=$result->ncentre2;
    	$centre=$centre1;
    $_SESSION['centre4']=$centre1;
    if (($centre1<>$centre2)AND($centre2<>"")){$_SESSION["centre2"]=$centre1;}else{$centre=$centre1;$_POST['radio']=$centre1 ;$_SESSION["centre2"]=$centre1;}
    if (  (isset($_POST['ok'])) || (isset($_POST['creer']))  || (isset($_POST['modifier'])) ||(isset($_POST['dateform'])) )  {$centre=$_POST['radio'];$_SESSION["centre"]=$_POST['radio'];$_SESSION["centre2"]=$_POST['radio'];} else {$centre=$centre1;}
    if (isset($_GET['dateurl'])){$centre=$_SESSION["centre"];;}
     
    //connection à la base de données:
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
     
    //Initiatisation des variables:
    $cookie_matricule=$_SESSION["cookie_matricule"];
    $tranche1=0;
    $tranche2=0;
    $tranche3=0;
    $tranche4=0;
    $tranche5=0;
    $tranche6=0;
    $tranche7=0;
    $tranche8=0;
    $tranche9=0;
    $tranche10=0;
    $requeteinsert=0;
    $requeteupdate=0;
    $requetesupp=0;
     
    // Création de la date du jour en fonction du passage par le lien, le calendrier, ou par rien du tout	
    if (isset($_POST['dateform'])) 	{
    	$jour = $_POST['dateform'];
    } else if (isset($_GET['dateurl'])) {
    	$jour=$_GET['dateurl'];
    } else 
    	$jour=date('d-m-Y');
    $jour2=date('d-m-Y');
    //Transformation de la date en date Access
    $dateEN = substr($jour,6,4)."-".substr($jour,3,2)."-".substr($jour,0,2);	
    $dateEN2 = substr($jour2,6,4)."-".substr($jour2,3,2)."-".substr($jour2,0,2);	
     
     	//Traitement de l'insertion des données (passage par bouton "Valider" ou "Modifier"
    	if ( (isset($_POST['creer'])) || (isset($_POST['modifier']))  ){
     
    		 for ($i = 1 ; $i<=10; $i++) {
    			if (isset($_POST['tranche'.$i])) { 
    				${'tranche'.$i}=$_POST['tranche'.$i]; 
    			} else {
    				${'tranche'.$i}="off";
    			}
    		} 
     
    		//recherche si agent double de doublon de déclaration de dispo
     
    	if (($centre1<>$centre2)AND($centre2<>"")){ 
    	//Si agent centre1->centre2
    	if ($centre==$centre1){ 
    		$centreX=$centre2;}
    	//Si agent centre2->centre1
    	if ($centre==$centre2){ 
    		$centreX=$centre1;}
     
    		//Recherche si déclaration pour $centreX
    	//Affichage des disponibilités pour le jour déterminé
    	$sqlX = "SELECT count(*) as compteur FROM dispo_journaliere where matricule=".$cookie_matricule." and jour=#".$dateEN."# AND centre=".$centreX."";
    	//echo $sqlX;
      	$requeteX = odbc_do($cnx, $sqlX) ;
    	$resultX = odbc_fetch_object($requeteX);
    	$nbresultX=$resultX->compteur;	
    	//echo $nbresultX;
    	     // si 2 centres et pas de double déclaration
    	if ($nbresultX==0){
    		//echo ('pas de déclaration de disponibilité sur le double engagement');
    		//Execution requete insert ou update
     
    		if (isset($_POST['creer'])) { $centre=$_POST['radio'];
    		//echo ('agent double - sans déclaration 2eme centre -insertion');
    		  $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
    		$sqlinsert ="INSERT  INTO dispo_journaliere ( matricule, jour, tranche1, tranche2, tranche3,tranche4 , tranche5, tranche6, tranche7, tranche8, tranche9, tranche10, centre) VALUES ( $cookie_matricule, #$dateEN#, $tranche1, $tranche2,  $tranche3 , $tranche4 , $tranche5 , $tranche6, $tranche7, $tranche8, $tranche9, $tranche10, $centre)";
    // echo $sqlinsert;
    		$requeteinsert = odbc_do($cnx, $sqlinsert)  ; }
    		if (isset($_POST['modifier'])) { $centre=$_POST['radio'];
    		//echo ('agent double - sans déclaration 2eme centre -modification');
    		$sqlupdate = "UPDATE dispo_journaliere SET matricule= $cookie_matricule, jour= #$dateEN#, tranche1   = $tranche1, tranche2= $tranche2, tranche3 = $tranche3, tranche4 = $tranche4, tranche5 = $tranche5, tranche6 = $tranche6, tranche7 = $tranche7, tranche8 = $tranche8, tranche9 = $tranche9, tranche10 = $tranche10 WHERE matricule = ".$cookie_matricule." and jour= #".$dateEN."# and centre=".$centre."" ;
    		//echo $sqlupdate;
    		$requeteupdate = odbc_do($cnx, $sqlupdate)  ;}}
    		if ($nbresultX==1){
    		//Comparaison
    		//Recupération des valeurs pour les tranches sur $centreX
    	$sqlTX = "SELECT matricule, jour, tranche1, tranche2, tranche3 ,tranche4 ,tranche5 ,tranche6, tranche7, tranche8, tranche9 ,tranche10 FROM dispo_journaliere where matricule=".$cookie_matricule." and jour=#".$dateEN."# AND centre=".$centreX."" ;
    	  	$requeteTX = odbc_do($cnx, $sqlTX) ;
    		$resultTX = odbc_fetch_object($requeteTX);
    		$tranche1X=$resultTX->tranche1;
    		$tranche2X=$resultTX->tranche2;
    		$tranche3X=$resultTX->tranche3;
    		$tranche4X=$resultTX->tranche4;
    		$tranche5X=$resultTX->tranche5;
    		$tranche6X=$resultTX->tranche6;
    		$tranche7X=$resultTX->tranche7;
    		$tranche8X=$resultTX->tranche8;
    		$tranche9X=$resultTX->tranche9;
    		$tranche10X=$resultTX->tranche10;	
     
    		//comparaison des tranches
    		if (($tranche1X==1)AND($tranche1=='on')) {$T1=1;} else {$T1=0;}
    		if (($tranche2X==1)AND($tranche2=='on')) {$T2=1;} else {$T2=0;}
    		if (($tranche3X==1)AND($tranche3=='on')) {$T3=1;} else {$T3=0;}
    		if (($tranche4X==1)AND($tranche4=='on')) {$T4=1;} else {$T4=0;}
    		if (($tranche5X==1)AND($tranche5=='on')) {$T5=1;} else {$T5=0;}
    		if (($tranche6X==1)AND($tranche6=='on')) {$T6=1;} else {$T6=0;}
    		if (($tranche7X==1)AND($tranche7=='on')) {$T7=1;} else {$T7=0;}
    		if (($tranche8X==1)AND($tranche8=='on')) {$T8=1;} else {$T8=0;}
    		if (($tranche9X==1)AND($tranche9=='on')) {$T9=1;} else {$T9=0;}
    		if (($tranche10X==1)AND($tranche10=='on')) {$T10=1;} else {$T10=0;}
    		//si déclaration sur tranche commune
    		if (($T1==1)OR($T2==1)OR($T3==1)OR($T4==1)OR($T5==1)OR($T6==1)OR($T7==1)OR($T8==1)OR($T9==1)OR($T10==1)){$centre=$_POST['radio'];?>
    <script language="javascript">
    alert("Attention, vous avez déjà déclaré de la disponibilité pour le(s) créneau(x)!<?php if($T1==1){?> 00h00-05h30 <?php }?><?php if($T2==1){?> 05h30-07h30 <?php }?><?php if($T3==1){?> 07h30-09h30 <?php }?><?php if($T4==1){?> 09h30-11h30 <?php }?><?php if($T5==1){?> 11h30-13h30 <?php }?><?php if($T6==1){?> 13h30-15h30 <?php }?><?php if($T7==1){?> 15h30-17h30 <?php }?><?php if($T8==1){?> 17h30-19h30 <?php }?><?php if($T9==1){?> 19h30-21h30 <?php }?><?php if($T10==1){?> 21h30-00h00 <?php }?>");
    </script>
    <meta http-equiv="refresh" content="0"; url="centre.php"/>
     
    <?php   //fin si déclaration sur tranche commune
    	//echo 'erreur';
    		} 	
    		//si aucune déclaration sur tranche commune
    		if (($T1==0)AND($T2==0)AND($T3==0)AND($T4==0)AND($T5==0)AND($T6==0)AND($T7==0)AND($T8==0)AND($T9==0)AND($T10==0))
    		{
    		if (isset($_POST['creer'])) { $centre=$_POST['radio'];
    		//echo ('agent double - avec déclaration 2eme centre -insertion');
    		 $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
    		$sqlinsert ="INSERT  INTO dispo_journaliere ( matricule, jour, tranche1, tranche2, tranche3,tranche4 , tranche5, tranche6, tranche7, tranche8, tranche9, tranche10, centre) VALUES ( $cookie_matricule, #$dateEN#, $tranche1, $tranche2,  $tranche3 , $tranche4 , $tranche5 , $tranche6, $tranche7, $tranche8, $tranche9, $tranche10, $centre)";
     //echo $sqlinsert;
    		$requeteinsert = odbc_do($cnx, $sqlinsert)  ; }
    		if (isset($_POST['modifier'])) { $centre=$_POST['radio'];
    		//echo ('agent double - avec déclaration 2eme centre -modification');
    		$sqlupdate = "UPDATE dispo_journaliere SET matricule= $cookie_matricule, jour= #$dateEN#, tranche1   = $tranche1, tranche2= $tranche2, tranche3 = $tranche3, tranche4 = $tranche4, tranche5 = $tranche5, tranche6 = $tranche6, tranche7 = $tranche7, tranche8 = $tranche8, tranche9 = $tranche9, tranche10 = $tranche10 WHERE matricule = ".$cookie_matricule." and jour= #".$dateEN."# and centre=".$centre."" ;
    		//echo $sqlupdate;
    		$requeteupdate = odbc_do($cnx, $sqlupdate)  ;}
    		}
    	}
    	}
    	if (($centre1==$centre2)or($centre2=="")){
    		 //echo('ici');
    	if (isset($_POST['creer'])) { $centre=$_POST['radio'];
    	//echo ('agent simple - insertion');
    		 $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
    		$sqlinsert ="INSERT  INTO dispo_journaliere ( matricule, jour, tranche1, tranche2, tranche3,tranche4 , tranche5, tranche6, tranche7, tranche8, tranche9, tranche10, centre) VALUES ( $cookie_matricule, #$dateEN#, $tranche1, $tranche2,  $tranche3 , $tranche4 , $tranche5 , $tranche6, $tranche7, $tranche8, $tranche9, $tranche10, $centre)";
    // echo $sqlinsert;
    		$requeteinsert = odbc_do($cnx, $sqlinsert)  ; }
    		if (isset($_POST['modifier'])) { $centre=$_POST['radio'];
    		//echo ('agent simple - modification');
    		$sqlupdate = "UPDATE dispo_journaliere SET matricule= $cookie_matricule, jour= #$dateEN#, tranche1   = $tranche1, tranche2= $tranche2, tranche3 = $tranche3, tranche4 = $tranche4, tranche5 = $tranche5, tranche6 = $tranche6, tranche7 = $tranche7, tranche8 = $tranche8, tranche9 = $tranche9, tranche10 = $tranche10 WHERE matricule = ".$cookie_matricule." and jour= #".$dateEN."# and centre=".$centre."" ;
    		//echo $sqlupdate;
    		$requeteupdate = odbc_do($cnx, $sqlupdate)  ;}
    		}
    	}
     
    	// Traitement de la suppression des disponibilités par le bouton "Supprimer"
    	if (isset($_POST['supprimer'])) {
    		if (  (isset($_POST['ok'])) || (isset($_POST['creer']))  || (isset($_POST['modifier'])) || (isset($_POST['supprimer'])) )  {$centre=$_POST['radio'];} else {$centre=$centre1;}
    		$sqlsupp = "DELETE * FROM dispo_journaliere WHERE matricule=".$cookie_matricule." and jour=#".$dateEN."# and centre=".$centre."";
    		$requetesupp = odbc_do($cnx, $sqlsupp)  ;
    		//echo $sqlsupp;
    	}
     
     
        // Affichage du nom/prénom de l'utilisateur (cookie)
        $sql = "SELECT nom, prenom FROM RH_personnel where matricule=".$cookie_matricule;
        $requete = odbc_do($cnx, $sql) ;
    	$result = odbc_fetch_object($requete);
    	$nom=$result->nom;
    	$prenom=$result->prenom;
     
     
    	//Affichage des disponibilités pour le jour déterminé
    	$sqltmp = "SELECT count(*) as compteur FROM dispo_journaliere where matricule=".$cookie_matricule." and jour=#".$dateEN."# AND centre=".$centre."";
      	$requetetmp = odbc_do($cnx, $sqltmp) ;
    	$resulttmp = odbc_fetch_object($requetetmp);
    	$nbresult=$resulttmp->compteur;
     
    	if ($nbresult) {
     		$sql2 = "SELECT matricule, jour, tranche1, tranche2, tranche3 ,tranche4 ,tranche5 ,tranche6, tranche7, tranche8, tranche9 ,tranche10 FROM dispo_journaliere where matricule=".$cookie_matricule." and jour=#".$dateEN."# AND centre=".$centre."" ;
    	  	$requete2 = odbc_do($cnx, $sql2) ;
    		$result2 = odbc_fetch_object($requete2);
    		$tranche1=$result2->tranche1;
    		$tranche2=$result2->tranche2;
    		$tranche3=$result2->tranche3;
    		$tranche4=$result2->tranche4;
    		$tranche5=$result2->tranche5;
    		$tranche6=$result2->tranche6;
    		$tranche7=$result2->tranche7;
    		$tranche8=$result2->tranche8;
    		$tranche9=$result2->tranche9;
    		$tranche10=$result2->tranche10;
    	} ?>
     
    <body> 
     
    <table class="ds_box" cellpadding="0" cellspacing="0" id="ds_conclass" style="display: none;">
    <tr><td id="ds_calclass">
    </td></tr>
    </table>
     
    <script type="text/javascript">
    //script du calendrier que j'ai retiré pour enlevé une centaine de lignes
     </script>
     
     
     <table border="2">
     <tr><td><div align="center"><img src="csp.jpg" width="640" height="72" /></div></td>
     <td><p align="center">Bonjour <?php echo $prenom;?> <?php echo $nom;?> / <a href="deconnexion.php">Déconnexion</a></p>
      <?php 
     
    $admi="SELECT * FROM mdp WHERE matricule=".$cookie_matricule."";
    $requeteadm = odbc_do($cnx, $admi)  ; 
    $resultadm = odbc_fetch_object($requeteadm);
    $cocheA=$resultadm->A;
    $cocheB=$resultadm->B;
    if (($centre1<>$centre2)AND($centre2<>"")){ 
    	//Si agent centre1->centre2
    	if ($centre==$centre1){$coche=$cocheA;
    		 }
    	//Si agent centre2->centre1
    	if ($centre==$centre2){$coche=$cocheB;
    		 }
    }else {$coche=$cocheA;}
     
    ?>
    <form  id="form2" name="form2" method="post" action="dispo_semaine.php">
     <?php
     if ($coche==1)
     {echo ("<a href=dispo_semaine.php> Semaine </a>");
      }
      ?>
     </form>
    <form  id="form3" name="form3" method="post" action="dispo_tranche.php">
    <?php
     if ($coche==1)
     {echo ("<a href=dispo_tranche.php> Jour </a>");
     }
     ?></form>
    <form  id="form4" name="form4" method="post" action="dispo_tranche.php">
    <?php
     if ($coche==1)
     {echo ("<a href=competance.php> Competence </a>");
     }
     ?>
     </form>
     
     
     
     
    </td></tr>
     <tr><td>
     
    <form id="form12" name="form12" method="post" action="declaration_dispo.php">
     
       <p>Veuillez entrez une date :
     
    <input onclick="ds_sh(this);" name="dateform" readonly="readonly" style="cursor: text" value="<?php echo $jour;?>" />
     
     
     <?php 	if (isset($_POST['creer'])) {
     			if ($requeteinsert) 
    			  echo(" (L'insertion a été correctement effectuée)") ;
    		 	else
    	          echo(" (L'insertion a échouée)");
    		}
     
     		if (isset($_POST['modifier'])) {
     				if ($requeteupdate)
    			  		echo(" (La mise à jour a correctement été effectuée)");
    				else 
    			  		echo(" (La mise à jour a échouée)");
    		}
     
    		if (isset($_POST['supprimer'])) {
     				if ($requetesupp)
    			  		echo(" (La suppression a correctement été effectuée)");	  
    				else 
    			  		echo(" (La suppressiona échouée)");
    		}
      ?>
     
     
     <?php if (!$nbresult) {?><p class="Style1">Aucune disponibilité renseignée à ce jour !!!</p><?php } ?>  <?php
    	if (($centre1<>$centre2)AND($centre2<>"")){ ?>
     
     
     
     
    <p>
    <?php
     if ($centre==$centre1){
    	 ?>
     
        <input type="radio" name="radio" id="centre" value="<?php echo $centre1; ?>"  checked="checked"   />
        <label for="centre"><?php echo $ncentre1; ?></label>
        <?php ;}
    	else {
    		 ?>
    		  <input type="radio" name="radio" id="centre" value="<?php echo $centre1; ?>"  />
        <label for="centre"><?php echo $ncentre1; ?></label>
    	<?php ;} ?>
     <br/>
    <?php
     if ($centre==$centre2){
    	 ?>
     
        <input type="radio" name="radio" id="centre2" value="<?php echo $centre2; ?>" checked="checked"  />
        <label for="centre2"><?php echo $ncentre2; ?></label>
         <?php ;}
    	else {
    		 ?>
             <input type="radio" name="radio" id="centre2" value="<?php echo $centre2; ?>"  />
        <label for="centre2"><?php echo $ncentre2; ?></label>
        <?php ;} ?>
      </p>
        <input type="submit" name="ok" id="ok" value="Selection centre" /> 
     
     <?php ;} else {  $_POST['radio']=$centre1; //echo $_POST['radio']
     ;}
     ?>
      <p>00h00 - 05h30
        <input type="checkbox" name="tranche1" accesskey="3" tabindex="3" <?php if ($tranche1) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>05h30 - 07h30
        <input type="checkbox" name="tranche2" accesskey="4" tabindex="4" <?php if ($tranche2) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>    07h30 - 09h30
        <input type="checkbox" name="tranche3" accesskey="5" tabindex="5" <?php if ($tranche3) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>09h30 - 11h30
        <input type="checkbox" name="tranche4" accesskey="6" tabindex="6" <?php if ($tranche4){?>checked="checked"?>
        <?php }?>
      </p>
      <p>11h30 - 13h30
        <input type="checkbox" name="tranche5" accesskey="7" tabindex="7" <?php if ($tranche5){?>checked="checked"?>
        <?php }?>
      </p>
      <p>13h30 - 15h30
        <input type="checkbox" name="tranche6" accesskey="8" tabindex="8" <?php if ($tranche6){?>checked="checked"?>
        <?php }?>
      </p>
      <p>15h30 - 17h30
        <input type="checkbox" name="tranche7" accesskey="9" tabindex="9" <?php if ($tranche7){?>checked="checked"?>
        <?php }?>
      </p>
      <p>17h30 - 19h30
        <input type="checkbox" name="tranche8" accesskey="10" tabindex="10" <?php if ($tranche8){?>checked="checked"?>
        <?php }?>
      </p>
      <p>19h30 - 21h30
        <input type="checkbox" name="tranche9" accesskey="11" tabindex="11" <?php if ($tranche9){?>checked="checked"?>
        <?php }?>
      </p>
      <p>21h30 - 24h00
        <input type="checkbox" name="tranche10" accesskey="12" tabindex="12" <?php if ($tranche10){?>checked="checked"?>
        <?php }?>   
      </p>
      <p align="center">
        <?php
    	 if ($dateEN<$dateEN2){
    	 echo ('Pour une date antérieur à la date du jour seule une visualisation est autorisée.');}else { if (!$nbresult) {?>
        <input type="submit" name="creer" id="OK" value="Valider" accesskey="13" tabindex="13" /> 
        <?php } else {?>
         <input type="submit" name="modifier" id="Modifier" value="Modifier" accesskey="14" tabindex="14" /> 
       <input type="submit" name="supprimer" id="Supprimer" value="Supprimer" accesskey="15" tabindex="15"  /> 
       <?php }} ?>
      </p>
      </form>
      </td>
     
     
     
     <td>  
     
    <form name="form1" method="post" action="declaration_dispo.php">
     
       <?php 
     
       //requête SQL ensemble des disponibilités déclarées (date()>= date déclarée):
        $dateD=date('d-m-Y');
        $dateEN = substr($dateD,6,4)."-".substr($dateD,3,2)."-".substr($dateD,0,2);
        $sqldecla = "SELECT * FROM dispo_journaliere where matricule=".$cookie_matricule." and jour>=#".$dateEN."# AND centre=".$centre." ORDER BY jour" ;
     
       // echo "".$sqldecla."";
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
        //exécution de la requête:
        $requetedecla = odbc_do($cnx, $sqldecla) ;
     
          $_SESSION["centre"]=$centre;
       echo ("<div align=\"center\">Disponibilité déclarée pour le:");
       while( $resultdecla = odbc_fetch_object( $requetedecla ) )
        { 
    	$date2=$resultdecla->jour;
    	$dateEN1 = date(substr($date2,8,2)."-".substr($date2,5,2)."-".substr($date2,0,4));
     
           ?> <div align="center"><a href="declaration_dispo.php?dateurl=<?php echo $dateEN1; ?>"><?php echo $dateEN1;?></a><br>
       <?php
     
        } ?>
        </form></td>
       </table>
     
    <p align="center">&nbsp;</p>
     
    </body>
    </html> 
     
    <?php
    } else header('Location:index.php');
    ?>

  5. #5
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Pour la clarté d'une appli c'est toujours mieux d'avoir des dossier différents.

    Je sais pas si j'ai une bonne approche du MVC mais part sur une base claire et simple, la quand je lis les postes je vous avoue que je suis un peu perdu.

    La vue, sert à afficher l'html, donc disons qu'elle a besoin d'afficher un formulaire avec des données contenus en base, la vue demande au controlleur de lui donné ce qu'elle doit affiché pour ce formulaire. Le controlleur lui va demandé au modèle les données qu'il doit mettre dans le formulaire, mettre en forme et renvoie à la vue ce qu'il doit affiché.

    Pour les trois derniers formulaires, pour vérifier la donnée avant de faire la requête, peut-on utiliser un formulaire "controle_donnee.php" commun?
    C'est vivement conseillé de regroupé ce que tu peux, ça évite de devoir aller chercher de partout et faire des modifications de partout si tu dois en faire.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Je pense que tu cherches trop compliquer.

    L'avantage d'un MVC maison, c'est d'avoir sa propre vision des choses, et de coder comme tu le sens.

    Le pattern MVC te donne juste une notion sur comment découper ton code pour t'y retrouver. A partir de là, tu fais comme tu veux/peux.

    Perso, quand j'ai débuté le MVC, je suis partit directement sur Symfony2, pour le côté sécurité derrière. C'est un peu dépaysant au début, car il faut s’imprégner totalement d'une nouvelle méthode de coder, mais quand tu piges la chose, ça devient beaucoup plus facile et logique.

    j'ai pas trop compris le fichier controleur et ce qui suit bob633.
    Le contrôleur te permet de choisir l'action qui doit être exécuté.

    Dans une application MVC, tu as un fichier principal, qu'on appelle souvent "front controller" car c'est lui qui appelle les autres contrôleurs. Qué zako

    Pour faire simple, ce front controller peut être ton index.php qui se trouve à la racine de ton site.

    Toutes les actions doivent se déclencher à partir de ce fichier index.php. C'est pour cela qu'on déclare le contrôleur précédent (dans mon précédent poste) en début de ce fichier, pour pouvoir accéder à toutes les méthodes de ce contrôleur. Ce sont ces méthodes qui appelleront les données et la vue adéquat, personne d'autres !

    Imaginons que tu as un menu sur le haut de ton site avec les actions suivantes (dans ton index.php tu appelles les vues header.html, menuhtml et footer.html de page) :
    - Accueil
    - Afficher voitures
    - Afficher motos
    - Contact

    Chacun de ces liens enverra sur une url de ce genre :
    - Accueil : www.nom_site.fr/?action=accueil
    - Afficher voitures : www.nom_site.fr/?action=voitures
    - Afficher motos : www.nom_site.fr/?action=motos
    - Contact : www.nom_site.fr/?action=contact

    Lorsque tu as déclaré ton contrôleur, tu appelles la méthode que tu veux.
    Pour t'éviter de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($_GET['action'] == 'voitures')
    {
        Controleur->action1();
    }
    else if(...){...}
    tu peux t'arranger pour que le nom de ton action soit identique au nom de la méthode dans le Controleur, que tu puisses l'appeler directement par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controleur->$_GET['action'];
    Exemple du index.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
    // index.php
     
    <?php
    include 'Controleur.php';
    include 'header.html';
    include 'menu.html';
     
    Controleur = new Controleur();
     
    if(!empty($_GET['action']))
    {
    	Controleur->$_GET['action']; // Où $_GET['action'] doit contenir la même valeur qu'une action
    }
    else
    {
    	// Si pas d'action, on renvoie vers l'action accueil
    	Controleur->Accueil();
    }
     
    include 'footer.php';
    Exemple du controleur :
    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
    // Controleur.php
    <?php
     
    class Controleur
    {
    	public function __construct()
    	{ }
     
    	public function accueil()
    	{
    		include 'modele_accueil.php';
    		include 'vue_accueil.html';
    	}
     
    	public function voitures()
    	{
    		include 'modele_voitures.php';
    		include 'vue_voitures.html';
    	}
     
    	// etc
    	// Chaque action (donc chaque bouton de ton menu) doit avoir une fonction ici
    }
    Bien sûr, c'est une version simplifiée, mais au début, commence simple. Quand tu maîtriseras, tu sécurisera le tout
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  7. #7
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    je viens de travailler par rapport à tout ce qui vient d'être dit.

    Est-ce que l'arborescence tient debout, ainsi que la répartition des fichiers?
    où placer le fichier htaccess?

    Nom : arbre.jpg
Affichages : 211
Taille : 38,3 Ko

    et voici le code a priori
    merci de me dire si je prends la bonne route ou si je me plante carrément

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    <?php
    //liaison base et controle token
    include ("check.php");
     
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Déclaration dispo jour automatique</title>
    </head>
     
    <?php
    //import du CSS
    include ("css.php");
     
    //Recuperation des valeurs des centres
     $sql = "SELECT * FROM Rcentre where matricule=".$cookie_matricule."";
        $requete = odbc_do($cnx, $sql) ;
    	$result = odbc_fetch_object($requete);
     
    	$centre1=$result->centre1;
    	$centre2=$result->centre2;
    	$ncentre1=$result->ncentre1;
    	$ncentre2=$result->ncentre2;
    	$centre=$centre1;
    $_SESSION['centre4']=$centre1;
    if (($centre1<>$centre2)AND($centre2<>"")){$_SESSION["centre2"]=$centre1;}else{$centre=$centre1;$_POST['radio']=$centre1 ;$_SESSION["centre2"]=$centre1;}
    if (  (isset($_POST['ok'])) || (isset($_POST['creer']))  || (isset($_POST['modifier'])) ||(isset($_POST['dateform'])) )  {$centre=$_POST['radio'];$_SESSION["centre"]=$_POST['radio'];$_SESSION["centre2"]=$_POST['radio'];} else {$centre=$centre1;}
    if (isset($_GET['dateurl'])){$centre=$_SESSION["centre"];;}
     
    //connection à la base de données:
        $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
     
    //Initiatisation des variables:
    include ("initialisation_donnees.php");
     
    // gestion date	
    include ("gestion_date");	
     
    include("recuperation_valeur_case_coche");
     
    include("controle_double_declaration");
     
    include ("erase_dispo.php");
     
    include("recuperation_valeur_tranche_date.php"); ?>
     
    <body> 
     
    <table class="ds_box" cellpadding="0" cellspacing="0" id="ds_conclass" style="display: none;">
    <tr><td id="ds_calclass">
    </td></tr>
    </table>
    <?php
    include("calendar.php");
    include("donnees_utilisateur.php");
    ?>
     
     <table border="2">
     <tr><td><div align="center"><img src="csp.jpg" width="640" height="72" /></div></td>
     <td><p align="center">Bonjour <?php echo $prenom;?> <?php echo $nom;?> / <a href="deconnexion.php">Déconnexion</a></p>
     
    <form  id="form2" name="form2" method="post" action="dispo_semaine.php">
     <?php
     if ($coche==1)
     {echo ("<a href=dispo_semaine.php> Semaine </a>");
      }
      ?>
     </form>
    <form  id="form3" name="form3" method="post" action="dispo_tranche.php">
    <?php
     if ($coche==1)
     {echo ("<a href=dispo_tranche.php> Jour </a>");
     }
     ?></form>
    <form  id="form4" name="form4" method="post" action="dispo_tranche.php">
    <?php
     if ($coche==1)
     {echo ("<a href=competance.php> Competence </a>");
     }
     ?>
     </form>
     
    </td></tr>
     <tr><td>
     
    <form id="form12" name="form12" method="post" action="declaration_dispo.php">
     
       <p>Veuillez entrez une date :
     
    <input onclick="ds_sh(this);" name="dateform" readonly="readonly" style="cursor: text" value="<?php echo $jour;?>" />
     
     
     <?php 	if (isset($_POST['creer'])) {
     			if ($requeteinsert) 
    			  echo(" (L'insertion a été correctement effectuée)") ;
    		 	else
    	          echo(" (L'insertion a échouée)");
    		}
     
     		if (isset($_POST['modifier'])) {
     				if ($requeteupdate)
    			  		echo(" (La mise à jour a correctement été effectuée)");
    				else 
    			  		echo(" (La mise à jour a échouée)");
    		}
     
    		if (isset($_POST['supprimer'])) {
     				if ($requetesupp)
    			  		echo(" (La suppression a correctement été effectuée)");	  
    				else 
    			  		echo(" (La suppressiona échouée)");
    		}
      ?>
     
     
     <?php if (!$nbresult) {?><p class="Style1">Aucune disponibilité renseignée à ce jour !!!</p><?php } ?>  <?php
    	if (($centre1<>$centre2)AND($centre2<>"")){ ?>
     
    <p>
    <?php
     if ($centre==$centre1){
    	 ?>
     
        <input type="radio" name="radio" id="centre" value="<?php echo $centre1; ?>"  checked="checked"   />
        <label for="centre"><?php echo $ncentre1; ?></label>
        <?php ;}
    	else {
    		 ?>
    		  <input type="radio" name="radio" id="centre" value="<?php echo $centre1; ?>"  />
        <label for="centre"><?php echo $ncentre1; ?></label>
    	<?php ;} ?>
     <br/>
    <?php
     if ($centre==$centre2){
    	 ?>
     
        <input type="radio" name="radio" id="centre2" value="<?php echo $centre2; ?>" checked="checked"  />
        <label for="centre2"><?php echo $ncentre2; ?></label>
         <?php ;}
    	else {
    		 ?>
             <input type="radio" name="radio" id="centre2" value="<?php echo $centre2; ?>"  />
        <label for="centre2"><?php echo $ncentre2; ?></label>
        <?php ;} ?>
      </p>
        <input type="submit" name="ok" id="ok" value="Selection centre" /> 
     
     <?php ;} else {  $_POST['radio']=$centre1; //echo $_POST['radio']
     ;}
     ?>
      <p>00h00 - 05h30
        <input type="checkbox" name="tranche1" accesskey="3" tabindex="3" <?php if ($tranche1) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>05h30 - 07h30
        <input type="checkbox" name="tranche2" accesskey="4" tabindex="4" <?php if ($tranche2) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>    07h30 - 09h30
        <input type="checkbox" name="tranche3" accesskey="5" tabindex="5" <?php if ($tranche3) {?>checked="checked"?>
        <?php }?>
      </p>
      <p>09h30 - 11h30
        <input type="checkbox" name="tranche4" accesskey="6" tabindex="6" <?php if ($tranche4){?>checked="checked"?>
        <?php }?>
      </p>
      <p>11h30 - 13h30
        <input type="checkbox" name="tranche5" accesskey="7" tabindex="7" <?php if ($tranche5){?>checked="checked"?>
        <?php }?>
      </p>
      <p>13h30 - 15h30
        <input type="checkbox" name="tranche6" accesskey="8" tabindex="8" <?php if ($tranche6){?>checked="checked"?>
        <?php }?>
      </p>
      <p>15h30 - 17h30
        <input type="checkbox" name="tranche7" accesskey="9" tabindex="9" <?php if ($tranche7){?>checked="checked"?>
        <?php }?>
      </p>
      <p>17h30 - 19h30
        <input type="checkbox" name="tranche8" accesskey="10" tabindex="10" <?php if ($tranche8){?>checked="checked"?>
        <?php }?>
      </p>
      <p>19h30 - 21h30
        <input type="checkbox" name="tranche9" accesskey="11" tabindex="11" <?php if ($tranche9){?>checked="checked"?>
        <?php }?>
      </p>
      <p>21h30 - 24h00
        <input type="checkbox" name="tranche10" accesskey="12" tabindex="12" <?php if ($tranche10){?>checked="checked"?>
        <?php }?>   
      </p>
      <p align="center">
        <?php
    	 if ($dateEN<$dateEN2){
    	 echo ('Pour une date antérieur à la date du jour seule une visualisation est autorisée.');}else { if (!$nbresult) {?>
        <input type="submit" name="creer" id="OK" value="Valider" accesskey="13" tabindex="13" /> 
        <?php } else {?>
         <input type="submit" name="modifier" id="Modifier" value="Modifier" accesskey="14" tabindex="14" /> 
       <input type="submit" name="supprimer" id="Supprimer" value="Supprimer" accesskey="15" tabindex="15"  /> 
       <?php }} ?>
      </p>
      </form>
      </td>
     
     
     
     <td>  
     
    <form name="form1" method="post" action="declaration_dispo.php">
     
       <?php 
      include ("liste_date_decla.php");
      ?>
        </form></td>
       </table>
     
    <p align="center">&nbsp;</p>
     
    </body>
    </html>

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Ton dossier "control" c'est le dossier contrôleur ? Car si oui, je pense que tu ne vois pas trop bien la notion de contrôleur encore.

    Il faut voir dans la notion de contrôleur quelque chose qui contrôle (non sans blague ). De ce pas, ce sont des fonctions qui sont appeler pour appeler d'autres éléments (modèles, vues, ...). Donc en gros, un seul contrôleur peut rassembler beaucoup d'actions.

    Sinon généralement, comme dans Symfony2, tu créés 2 dossiers en tête :
    - un dossier public : qui contient tes images, le css, ...
    - un dossier private : qui contient tes modèles, tes contrôleurs, tes scripts, ... tout ce qui ne doit pas être vu par un utilisateur. Et c'est là que tu mets ton htaccess pour bloquer ce répertoire et tout son contenu.

    Sinon est-ce normal que tu es un seul fichier ? Car je vois des includes de tous les côtés ... pour t'y retrouver ça va pas être évident :s C'est le rôle tu contrôleur d'appeler le modèle et la vue adéquates
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  9. #9
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    En fait je suis à la rue complet car je ne suis pas informaticien pour un sous, je "tripote" , en tout cas tes explications sont claires.

    En fait j'ai du mal à voir comment l'information circule.

    Formulaire de données (html) -> formulaire de contrôle (php) -> formulaire requête sql (php) -> formulaire de confirmation (html)

    le contrôleur si j'ai compris, est un formulaire qui dit:
    action1: formulaire de contrôle
    action2: formulaire de requête sql
    action3: formulaire de confirmation


  10. #10
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Salut hugodu28,

    Je ne me penche pas sur ta gestion d'arborescence qui à l'air pas mal. Par contre, au niveau de ton code, c'est un avis personnel que je donne, dans ta vue tu mélanges éléments de contrôle et modèle. La ligne 17 à 25 ne feraient-elle par parties d'un modèle ? Autre exemple les lignes 65 à 116 ne feraient-elles parties du contrôleur. J'ai pas cherché à comprendre ton script, c'est juste parcouru et vu des choses qui me sautaient aux yeux, d'après mon expérience.

    Le tutoriel de Julien Pauli permet de façon très simple de comprendre le MVC : MVC en php

    Dans l'introduction il propose une solution très simple et logique qui se décompose en 3 fichiers mymodel.php, myview.php et enfin mycontroller.php. J'émets juste quelques réserve sur son modèle, qui lui propose un fichier où il n'y a que des fonctions. Je proposerais la même chose, mais le modèle se transformerait en class avec tous les attributs et méthodes qui vont avec. De façon grossière, le modèle serait un abstraction d'une table de la base de données contenant les méthodes CRUD afin de pouvoir manipuler ton modèle dans le contrôleur.

    Bonne journée
    Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    En fait j'ai du mal à voir comment l'information circule.


    J'ai essayé de faire simple.

    En MVC, il faut que tu penses URL > Que faire > Qui appeler > Quoi afficher.

    L'URL, elle contient les informations à afficher (l'action).

    Que faire : Lorsque tu récupères l'action, tu sais quoi faire (si ton action c'est "Contact", tu dois afficher la page de contact). Mais à ce moment, c'est pas à toi d'inclure la page qui faut, c'est au contrôleur..

    Qui appeler : Tu as ton paramètre action. Tu appelles donc ta fonction du contrôleur qui faut.

    Quoi afficher : Tu es ici dans ta fonction du contrôleur. Ici par contre tu sais quoi inclure pour afficher la bonne page donc tu inclus d'abord ton modèle, qui va se charger de faire ce qui faut (appel BDD, lecture fichier, appels scripts, ...) puis ensuite ta vue. En gros dans ta page de vue, tu dois seulement avoir des echo $donners_PHP, que ton modèle te donnera

    Règle N° 1 : Si tout va bien, ne touchez à rien.

  12. #12
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    bob633 , je commence à comprendre, il m'aura fallut du temps.

    Pour être certain, pour 1 site, il y a 1 contrôleur avec autant de "function" qu'il peut y avoir d'actions.

    chaque "function" appel via des "include" différentes pages qui mises bout à bout forment un code qui ressemble à peu près à celui que j'ai mis au début de cette discussion?

    Dites moi que c'est ça S.V.P.


  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Oui ça ressemble à cela

    Après suivant tes applications, tu peux diviser aussi en module.

    Tu pourrais avoir dans une URL www.toto.fr??module=forum&action=afficher_postes

    Ainsi au lieu d'avoir un seul contrôleur qui aurait des dizaines et des dizaines d'actions, tu peux diviser.

    Sur ta page index.php, au lieu d'appeler toujours le même contrôleur, tu peux l'appeler en fonction du module.

    Ceci te permet de diviser tes actions par thème : controleur forum (avec des fonctions afficher_poste, afficher_un_poste, afficher_xxx), controleur site (afficher_contact, affichier_calendrier), controleur utilisateur (afficher_profil, ajouter_utilisateur, ...).

    Mais quand on débute, il faut voir simple, et pas trop complexifier la chose. Tu verras de toi même que quand tu seras un unique contrôleur, tu vas trouver bizarre de tout mettre dans le même alors que tu pourrais séparer pour bien faire les choses (et pas avoir un contrôleur de 5000 lignes ).
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  14. #14
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    Bon ba ça c'est limpide en tout cas merci pour ta patience.

    La der des der et après je mets "résolu"

    concernant l'arborescence:
    -dossier "public": toutes les images du site et les CSS
    -dossier "private": tout le reste,... y compris les vues??? le index.php???

    concernant le .htaccess pour bloquer la lecture du dossier private.
    Le plus simple, c'est de n'avoir que des XXX.php

    et le code du .htaccess serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <FilesMatch"\.php$">
    order allow,deny
    deny from all
    </FilesMatch>

  15. #15
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Oui tu peux y mettre les vues, les modèles etc

    Dans Symfony, les css se trouvent dans la partie public (surement parce qu'on peut mettre des liens d'images dans les css).

    Concernant le .htaccess, symfony2 prépare le .htaccess avec seulement ce bout de code :
    Peut-être une piste ... car si tu veux bloquer des scripts .js ou autre extensions, c'est pas forcément évident avec plusieurs lignes.

    Mais je passe mon chemin pour le côté sécurité et accès aux données à quelqu'un qui connait mieux Mais tu peux partir là dessus sans problème en attendant
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  16. #16
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    ok et bien je pars avec ça sous le bras. Merci

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

Discussions similaires

  1. ToAsciiEx, comment cela marche ?
    Par mikyfpc dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/02/2004, 21h39
  2. [MFC] list box : comment ça marche
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 28/01/2004, 12h36
  3. [SYNEDIT] -> Comment ça marche ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 19h11
  4. [TP][Turbo Vision] comment ça marche ??
    Par Costello dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 05/08/2003, 00h24
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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