Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Programmez en orienté objet en PHP

    30 mars 2018 à 11:40:29

    Je pense que tu dois pouvoir gérer cela en utilisant une table intermédiairedans ta base de données qui fait le lien entre tes tables produit et photo.

    Cette table intermédiaire (relation de type 1,n - 1,n) contiendrait donc les clés primaires des deux tables mentionnées.

    • Partager sur Facebook
    • Partager sur Twitter

    Christophe Vallot

      1 avril 2018 à 16:31:15

      Bonjour,

      Je suis actuellement en train de faire le tuto pour apprendre la POO en PHP afin d'organiser mon code de manière plus intelligente dans le cadre de 2 projets de site webs que je souhaite réaliser. J'ai assez bien compris les 2 premières parties du cours mais je dois avouer que je suis totalement perdu sur la dernière partie. Je ne comprends pas d'où vient cette architecture, pourquoi on raisonne de telle ou telle sorte. Je crois que cette dernière partie n'est pas suffisament détaillée pour moi. Pouvez-vous me rediriger vers des ressources qui pourraient m'aider à appréhender cette partie plus facilement ?
      Je suis convaincu que la maîtrise de cette partie me permettra d'avoir l'essentiel des compétences nécessaires dans le cadre de mes projets.

      Merci de votre aide!

      • Partager sur Facebook
      • Partager sur Twitter
      Believe in yourself my friends !!! :)
        3 avril 2018 à 10:04:52

        Salut Si tu veux organisé TON code de manière le : +plus +plus +plus et encore + plus  intelligente  

         LA PLUS SIMPLE POSSIBLE


        Je m'explique, Bonne lecture


        La simplicité consiste à soustraire et retenir uniquement ce qui est évident
        Ajouté serait alourdir ce qui a déjà du sens


        1 - Optimisation
        Pour atteindre la simplicité, le mieux est la réduction méthodique des éléments.

        2 - Organisation
        Cordonnées l'ensemble d'éléments réduits, bien ordonnés.
        Toute la difficulté de schéma d'organisation basé sur la simplicité.

        3 - Minima
        Tout paraît plus simple si on fait économiser du temps.
        Accès aux résultats complexe tout en minimisés des étapes intermédiaires.

        4 - Apprentissage & Utilisation
        Simple vue, doit dégage une impression de familiarité,
        La connaissance simplifie tout, plutôt de proposer un mode d'emploi décourageant,
        une compréhension quasi immédiate du fonctionnement, qui évite à l'apprendre.

        5- La différence

        Simplicité sera traduire par un code claire, maintenable, facile d'utilisation
        Ensemble des éléments offre une confiance donc crée la différence.


        Ps: Extrait l'introduction de mes conventions rédactionnel.
        Exemple un site documentaire - C'est bien fait je trouve
        http://php.net/manual/fr/language.variables.superglobals.php 

        -
        Edité par LEPaul 3 avril 2018 à 21:03:20

        • Partager sur Facebook
        • Partager sur Twitter
        Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
          6 avril 2018 à 14:00:06

          SALUT  svp je suis cette formation et j'ai un pti probleme au niveaux d'une ligne de code sur les transferts d'informations 

          comme vous le voyer juste en bas se con mes lignes de code qui sons sensé transféré le comtenus des variable "non" et "prenoms";

          <!doctype :html>
          <html>
             <head>
              <meta-charset :"utf-8"/>
              <title>test supergloles </title>
             </head> 
          <body>
              <h1>BONJOUR LE JOUR</h1>
              <a href="recep.php?nom=patrick&amp;prenoms=ben_sira"> bonjour le jour  </a>
          
          
          </body>
          
          </html>
          

          et voici le fichez recepteur de ses variables ;

          <!Doctype :html>
          <html>
             <head>
              <meta-charset :"utf-8"/>
              <title>teste super globalle</title>
             </head> 
          <body>
             <?php
             echo("BONJOUR LE JOURS <br>contant de vous compte parmis nous "._$GET['nom']." "._$GET['prenoms'] );
          
             ?>
          
          
          </body>
          
          </html>

          svp aider a trouve l'erreur 




          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2018 à 22:26:34

            ++


            Spartak a écrit:

            Sans vouloir manquer de respect à l’auteur, je trouve ce module ridiculement complexe pour un débutant, notamment l’activité finale qui en plus d’être très absconse, n’apporte pratiquement aucun d’intérêt à l’apprentissage d’un débutant.

            La POO demande un certain effort d’abstraction, et ce n’est pas évident si l’on n’a pas déjà une bonne expérience en programmation. Quand on apprend de la POO, on commence en général avec des classes plus concrètes comme cela était le cas en début de cours avec les personnages. Les design patterns et surtout le framework fait maison est totalement hors sujet pour moi. Ces notions appartiennent à un autre cours, et sûrement pas à un cours de POO pour débutant.

            L’activité finale demande de bien comprendre le Framework créé par l’auteur. Je soupçonne l’auteur d’avoir eu envie de se faire un kiff au détriment des apprenants. A quoi bon comprendre son Framework et sa façon de faire (dont certaines approches sont discutables). L’exercice final ne nécessite pas la grande partie de ce qui a été vu dans ce cours ! On s’entraîne juste à apprendre un Framework qui ne servira jamais (autant s’attaquer tout de suite à Symfony ou Zend Framework).

            Le risque de ce cours est d’affoler beaucoup de débutants qui n’arriveront pas à faire cet exercice, et à les décourager. Oui, il y a beaucoup à apprendre pour devenir bon développeur, mais il faut aussi beaucoup de pratique et d’expérience pour en arriver là. Le maître-mot est d’y aller progressivement, ce que ne fait pas ce cours.

            Si vous avez été découragés par ce cours, ne pensez pas que vous êtes nuls. Les premières parties sont intéressantes, ensuite le cours n’est plus vraiment pédagogique pour un débutant. Si vous faites un Parcours, laissez ce module de côté quand vous bloquez, et allez vous entraîner avec d’autres sources. Revenez valider votre certificat plus tard quand vous aurez déjà réalisé quelques projets concrets en POO autre qu’un Framework très abstrait aux concepts multiples qui vont bien au-delà d’un cours pour débutant. Ce cours pourrait facilement être divisé en trois cours différents.



            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2018 à 8:48:01

              Si tu essayais ainsi ?

              <!DOCTYPE html>
              	<html>
              		<head>
              			<meta charset="utf-8" />
              			<title>test supergloles </title>
              	   </head>
              		<body>
              			<h1>BONJOUR LE JOUR</h1>
              			<a href="recep.php?nom=patrick&prenoms=ben_sira"> bonjour le jour  </a>
              		 
              		 
              		</body>	 
              	</html>
              <!DOCTYPE html>
              	<html>
              		<head>
              			<meta charset="utf-8" />
              		<title>teste super globalle</title>
              	   </head>
              		<body>
              		   <?php
              		   echo("BONJOUR LE JOURS <br>contant de vous compte parmis nous ".$_GET['nom']." ".$_GET['prenoms'] );?>
              		</body>	 
              	</html>

              Prends le temps de te relire, de vérifier la syntaxe et indente ton code, ça aide toujours.




              PatrickDagouaga a écrit:

              SALUT  svp je suis cette formation et j'ai un pti probleme au niveaux d'une ligne de code sur les transferts d'informations 

              comme vous le voyer juste en bas se con mes lignes de code qui sons sensé transféré le comtenus des variable "non" et "prenoms";

              <!doctype :html>
              <html>
                 <head>
                  <meta-charset :"utf-8"/>
                  <title>test supergloles </title>
                 </head> 
              <body>
                  <h1>BONJOUR LE JOUR</h1>
                  <a href="recep.php?nom=patrick&amp;prenoms=ben_sira"> bonjour le jour  </a>
              
              
              </body>
              
              </html>
              

              et voici le fichez recepteur de ses variables ;

              <!Doctype :html>
              <html>
                 <head>
                  <meta-charset :"utf-8"/>
                  <title>teste super globalle</title>
                 </head> 
              <body>
                 <?php
                 echo("BONJOUR LE JOURS <br>contant de vous compte parmis nous "._$GET['nom']." "._$GET['prenoms'] );
              
                 ?>
              
              
              </body>
              
              </html>

              svp aider a trouve l'erreur 






              • Partager sur Facebook
              • Partager sur Twitter

              Christophe Vallot

                7 avril 2018 à 10:58:40

                PatrickDagouaga a écrit:

                (...)

                <!Doctype :html>
                <html>
                   <head>
                    <meta-charset :"utf-8"/>
                    <title>teste super globalle</title>
                   </head> 
                <body>
                   <?php
                   echo("BONJOUR LE JOURS <br>contant de vous compte parmis nous "._$GET['nom']." "._$GET['prenoms'] );
                
                   ?>
                
                
                </body>
                
                </html>

                svp aider a trouve l'erreur 



                Salut vue l'erreur {"._$GET['nom']."} je pense que tu devrai confondre avec les supers variables

                J'ai pris la liberté de partagé ce lien

                http://php.net/manual/fr/language.variables.superglobals.php



                -
                Edité par LEPaul 7 avril 2018 à 10:59:40

                • Partager sur Facebook
                • Partager sur Twitter
                Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                  10 avril 2018 à 13:46:06

                  chris79 a écrit:

                  Bonjour,

                  Il est écrit dans le chapitre "Développement de la bibliothèque"

                  dans la partie intitulé L'Application :

                  Pensez donc à ajouter le lien de parenté aux classes HTTPRequest et HTTPResponse.
                  Et n'oubliez donc pas de passer l'instance de l'application lors de l'instanciation de ces deux classes dans le constructeur de Application.

                  Or je ne vois pas d'extends au niveau des classes déclarées dans cette partie du cours ni sur le shéma UML d'ailleurs...

                  Ne devrait-il pas y a voir la déclaration suivante pour la classe HTTPrequest : class HTTPRequest extends ApplicationComponent ?

                  Merci beaucoup pour votre aide...

                  Rebonjour,

                  Je me réponds à moi même... Car je viens de voir que le code est conforme plus bas dans le tuto. En effet il y a bien des extends dans la déclaration des classes concernées par un héritage. Autant pour moi. Encore toutes mes excuses... Problème résolu donc ! A propos existe t-il un bouton résolu quelque part que je n'aurais pas vu ?

                  -
                  Edité par chris79 il y a moins de 5s



                  -
                  Edité par chris79 10 avril 2018 à 14:35:44

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 avril 2018 à 17:13:09

                    Bonjour,

                    Je suis actuellement sur la dernière partie du tutoriel que je trouve très avancée et que je m'efforce de comprendre en détails.

                    Je ne comprends pas vraiment ce paragraphe. Pourquoi ne peut-on pas instancier le DAO directement au sein des méthodes du Controller ?

                    Je ne comprends pas pourquoi il faut passer par la classe Managers et stocker une instance de cette dernière au sein de l'objet BackController.

                    Pouvez-vous m'apporter des clarifications ?

                    Merci beaucoup !

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Believe in yourself my friends !!! :)
                      24 avril 2018 à 13:06:51

                      Bonjour, 

                      j'aurai besoin d'aide s'il vous plait, 

                      j'utilise actuellement le framework "yiiFramework" ( il n'y a pas de de tutoriel pour ce framework ) il s'agit d'un langage php objet, depuis 2 ou 3 jours je suis sur le coups pour créer un systéme de Like ou Dislike mais aucune documentation, ni aucune aide quelqu'un pourrai m'éclaircir sur le sujet s'il vous plait une documentation ou un truc du genre ?

                      merci à vous 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 avril 2018 à 16:24:49

                        Bonjour,

                        J'attaque le dernier exercice de ce cours, la mise en cache.

                        Pour l'instant j'arrive bien à cacher mes données, mais je me pose une question qui me semble importante avant de continuer pour faire au mieux.

                        Je me demande où je dois, pour faire au mieux, travailler avec mes infos de dossier de cache, de durée de cache, et de vérification si oui ou non tout ça existe et n'a pas expiré. À priori, je peux faire ça aussi bien dans ma classe lib/OCFram/Classe.php que dans App/Frontend/Modules/News/NewsController.php.. Ou peut-être encore ailleurs.

                        Je me dis que je devrais mettre le moins d'infos possible dans lib/OCFram/Classe.php étant donné qu'il s'agit d'un fichier du "core" qui doit pouvoir être utilisable pour d'autres modules.. ?

                        Il me semble que je devrais aussi plutôt mettre les chemins de dossiers et la durée de cache dans App/Frontend/Config/app.xml.. ?

                        Enfin, étant donné qu'il y a plusieurs façons de faire, ça n'a peut-être pas d'impact concret sur la note.. ?

                        Merci d'avance à vous pour votre retour.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 avril 2018 à 12:34:36

                          Bonjour,
                          J'ai une question de débutant en POO.

                          je ne comprends pas bien la fonction suivante:

                          public function count(*){ return $this->_db->query('SELECT COUNT(*) FROM personne')->fetchColumn(); }

                          COUNT(*) donne le nombre de lignes. int
                          et fetchColumn le contenu de la première ligne.
                          Pourquoi doit-on ajouter fetchColumn?

                          Merci ;)




                          • Partager sur Facebook
                          • Partager sur Twitter
                          Jaime Sastre
                            30 avril 2018 à 10:59:04

                            Fetch column c'estpour récupérer les donées de la requete 'executer'

                            -
                            Edité par ESPRITClubEnglishCafé" 30 avril 2018 à 11:02:39

                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 mai 2018 à 1:01:30

                              merci ;) 

                              je connaissais fetch et fetchall, mais n'avais pas encore utilisé fetch column. J'ai trouvé que quand il n'y a pas de chiffre colonne ça prend automatiquement la colonne 0. Ca peut servir quand il n'y a qu'une info à récupérer. dans mon cas c'était count, donc un chiffre.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Jaime Sastre
                                2 mai 2018 à 13:24:38

                                Bonjour malgré avoir le code corriger du minichat le header ne marche pas.Tout marche super bien y compris la bdd.

                                https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/tp-un-mini-chat#/id/r-2175742 

                                Un message d'erreur s'inscrit à la ligne ou se trouve mon header:

                                 Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/projet-Openclassroom/phpNew/minichat_post.php:1) in /Applications/MAMP/htdocs/projet-Openclassroom/phpNew/minichat_post.php on line 20.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 mai 2018 à 20:44:29

                                  mjorissen a écrit:

                                  Juste pour signaler, dans la partie 4 "Manipulation de données stockées", il n'est pas précisé qu'il faut rajouter le constructeur dans la classe "Personnage", donc l'hydratation n'est pas appelée lors de la création d'un objet => objets vides lors de récupération des données dans la BDD !

                                  class Personnage{
                                  	private	$_id,...;
                                  	
                                  	public function __construct(array $donnees)
                                  	{
                                  		$this->hydrate($donnees);
                                  	}
                                  
                                  ...


                                  Voilà sinon super tuto qui m'a bien éclairé, merci ! :D



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 mai 2018 à 23:06:07

                                    Bonsoir a tous . j ai un souci de validation de mon formulaire.

                                    pour faciliter le test j ai mis le formulaire sur meme page que la validation.

                                    NB : je suis nouveau en POO.

                                    <!DOCTYPE html>
                                    <html>
                                    <head>
                                          <meta charset="utf-8">
                                             <link rel="stylesheet" type="text/css" href="../CSS/style_register.css">
                                             <title> </title>
                                            

                                    </head>
                                      <body>

                                      <form  action="to_register.php" method="POST">

                                       <fieldset class="account-info">
                                          <label>
                                                 <legend id="legend"></legend>
                                          </label>
                                          <label class="register-group">
                                             Nom
                                                 <input type="text" class="register-group" name="nom" value="<?php echo $_POST['nom']; ?>" placeholder="Nom de l'employer" required>
                                          </label>
                                          <label class="register-group">
                                            Prénoms
                                                 <input type="text" class="register-group" name="prenoms" value="<?php echo $_POST['prenoms']; ?>"  placeholder="Prénoms" required>
                                          </label>
                                          <label class="register-group">
                                            Matricule
                                                 <input type="text" class="register-group" name="matricule" value="<?php echo $_POST['matricule']; ?>"  placeholder="Matricule" required>
                                          </label>

                                          <label class="register-group">
                                             Email
                                               <input type="email" class="register-group" name="email" value="<?php echo $_POST['email']; ?>"   placeholder="Email address" required>
                                          </label>
                                       
                                          <label class="register-group">
                                              Sexe
                                           <select class="register-group"  name="sexe"  value="<?php echo $_POST['sexe']; ?>"  required>
                                          
                                                <option value="M" selected>M</option>
                                                <option value="F">F</option>
                                          
                                           </select>
                                          </label>
                                          <label class="register-group">
                                              Téléphone
                                              <input type="text" class="register-group" name="tel" value="<?php echo $_POST['tel']; ?>"   placeholder="numero de téléphone" required>
                                       
                                          </label>
                                       

                                          <label class="register-group">

                                               Adresse Géographique
                                              <textarea  class="register-group"  name="adresse" value="<?php echo $_POST['adresse']; ?>"  ></textarea>
                                          </label>
                                               <input class="btn-default" type="submit" name="submit" value="ENREGISTRER">
                                        </fieldset>
                                      </form>

                                        <?php
                                     
                                        require_once('../fonctions/classes/gestion_class.php');
                                        $gestionCompte = new GestionCompte();

                                          if(isset($_POST['nom']) && !empty($_POST['nom'])) {

                                           $nom=htmlspecialchars(trim($_POST['nom']));
                                         
                                               }
                                                if(isset($_POST['prenoms']) && !empty($_POST['prenoms'])) {

                                           $prenoms=htmlspecialchars(trim($_POST['prenoms']));
                                         
                                               }
                                                if(isset($_POST['matricule']) && !empty($_POST['matricule'])) {

                                           $matricule=htmlspecialchars(trim($_POST['matricule']));
                                         
                                               }
                                               if(isset($_POST['email']) && !empty($_POST['email'])) {

                                           $email=htmlspecialchars(trim($_POST['email']));
                                         
                                               }
                                               if(isset($_POST['sexe']) && !empty($_POST['sexe'])) {

                                           $sexe=htmlspecialchars(trim($_POST['sexe']));
                                         
                                               }
                                               if(isset($_POST['tel']) &&  preg_match("#^(0{2}|\+)[1-9]{3,4}[ ]?[0-9][^0][0-9]{5,10}$#",$_POST['tel'])) {

                                           $tel=htmlspecialchars(trim($_POST['tel']));
                                           
                                               }
                                               $motdepassehache = hash('ripemd256', $tel);
                                               if(isset($_POST['adresse']) && !empty($_POST['adresse'])) {

                                           $adresse=htmlspecialchars(trim($_POST['adresse']));
                                         
                                               }

                                        if(isset($_POST['ENREGISTRER']) && !empty($_POST['ENREGISTRER']))
                                         {

                                              $gestionCompte->inscrireEmployer($nom,$prenoms,$matricule,$tel,$adresse,$sexe,$motdepassehache,$email);
                                     
                                     
                                     
                                           header("Location: to_connect.php");

                                        }

                                     
                                        ?>
                                     </body>
                                    </html>

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      9 mai 2018 à 11:44:18

                                      Bonjour EmmanuelWinner,

                                      tu auras plus de réponses si tu crées un nouveau sujet dédié à ton problème. Pense également à colorer ton code via le bouton </>.

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Pas d'aide concernant le code par MP, le forum est là pour ça :)

                                        18 mai 2018 à 21:43:22

                                        Bonsoir à tous !

                                        j'ai un petit souci :( , comment est ce qu'on enregistre un fichier dans MAMP server

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          22 mai 2018 à 13:27:50

                                          Bonjour,

                                          Je suis actuellement le chapitre 2 'Les exceptions' de la partie 2. J'ai un problème avec la dernière partie de ce chapitre avec la fonction set_error_handler(fonction) :

                                          <?php
                                          class MonException extends ErrorException
                                          {
                                            public function __toString()
                                            {
                                              switch ($this->severity)
                                              {
                                                case E_USER_ERROR : // Si l'utilisateur émet une erreur fatale;
                                                  $type = 'Erreur fatale';
                                                  break;
                                                
                                                case E_WARNING : // Si PHP émet une alerte.
                                                case E_USER_WARNING : // Si l'utilisateur émet une alerte.
                                                  $type = 'Attention';
                                                  break;
                                                
                                                case E_NOTICE : // Si PHP émet une notice.
                                                case E_USER_NOTICE : // Si l'utilisateur émet une notice.
                                                  $type = 'Note';
                                                  break;
                                                
                                                default : // Erreur inconnue.
                                                  $type = 'Erreur inconnue';
                                                  break;
                                              }
                                              
                                              return '<strong>' . $type . '</strong> : [' . $this->code . '] ' . $this->message . '<br /><strong>' . $this->file . '</strong> à la ligne <strong>' . $this->line . '</strong>';
                                            }
                                          }
                                          
                                          function error2exception($code, $message, $fichier, $ligne)
                                          {
                                            // Le code fait office de sévérité.
                                            // Reportez-vous aux constantes prédéfinies pour en savoir plus.
                                            // http://fr2.php.net/manual/fr/errorfunc.constants.php
                                            throw new MonException($message, 0, $code, $fichier, $ligne);
                                          }
                                          
                                          set_error_handler('error2exception');

                                          J’essaie de générer une erreur qui sera attrapée par ce code, du genre 'erreur fatale' mais à chaque fois l'erreur est retournée par l'analyseur (carré orange tout moche).

                                           Si quelqu'un aurait une idée SVP.

                                          -
                                          Edité par Melron14 22 mai 2018 à 13:36:45

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            24 mai 2018 à 2:50:14

                                            Bonjour à tout le monde!!!

                                            Aidez-moi s'il vous plait!!!

                                            Je suis ici pour poser un problème que j'ai rencontré en suivant le cours Programmer en Orienté Objet en PHP et poser à la fin mes questions.

                                            Je suis actuellement au niveau du chapitre " L'héritage" précisément sur Résolution statique à la volée.

                                            En lisant le cours j'exécute les exemples pour voir ce que ça donne et j'ai remarqué que le code suivant génère une erreur.

                                            <?php
                                            class Mere
                                            {
                                              public static function lancerLeTest()
                                              {
                                                static::quiEstCe();
                                              }
                                              
                                              public function quiEstCe()
                                              {
                                                echo 'Je suis la classe <strong>Mere</strong> !';
                                              }
                                            }
                                            
                                            class Enfant extends Mere
                                            {
                                              public static function quiEstCe()
                                              {
                                                echo 'Je suis la classe <strong>Enfant</strong> !';
                                              }
                                            }
                                            
                                            Enfant::lancerLeTest();

                                            En lisant l'erreur générée, j'ai constaté que c'est parce que la méthode quiEstCe() de la classe Meren'est plus static (puisque qu'elle l'était un peu plus haut dans le chapitre). Alors je l'ai changé en static et tout a bien marché.

                                            Dans la suite du chapitre j'ai rencontré également les même problèmes dans plusieurs autres exemples. Et comme j'ai compris un peu le principe de la Résolution statique à la volée, je change à chaque fois les méthodes en static lorsqu'elles sont appelées dans un contexte statique et en non-statique dans un contexte non-statique par exemple en instanciant la classe (Voir code qui suit).

                                            <?php
                                            class Mere
                                            {
                                              public function lancerLeTest()
                                              {
                                                static::quiEstCe();
                                              }
                                              
                                              public function quiEstCe()
                                              {
                                                echo 'Je suis la classe « Mere » !';
                                              }
                                            }
                                            
                                            class Enfant extends Mere
                                            {
                                              public function quiEstCe()
                                              {
                                                echo 'Je suis la classe « Enfant » !';
                                              }
                                            }
                                            
                                            $e = new Enfant;
                                            $e->lancerLeTest();

                                            En faisant aussi quelques autres tests sur self:: et parent::, j'en suis arrivé à ces conclusions :

                                            Début conclusion

                                            Dans un contexte statique :

                                            Les méthodes appelées sur self:: , parent:: et static:: doivent être static alors que

                                            Dans un contexte non-statique : (Lorsqu'on crée une instance de classe).

                                            Les méthodes appelées sur self::,  parent:: et static:: peuvent être static comme ne pas l'être,puisque le code suivant marche très bien.

                                            <?php
                                            class Mere
                                            {
                                              public static function lancerLeTest()
                                              {
                                                static::quiEstCe();
                                              }
                                              
                                              public static function quiEstCe()
                                              {
                                                echo 'Je suis la classe « Mere » !';
                                              }
                                            }
                                            
                                            class Enfant extends Mere
                                            {
                                              public static function quiEstCe()
                                              {
                                                echo 'Je suis la classe « Enfant » !';
                                              }
                                            }
                                            
                                            $e = new Enfant;
                                            $e->lancerLeTest();



                                            Fin conclusion.

                                            Alors mes questions sont les suivantes :

                                            -> Est-ce que j'ai raison concernant certains codes d'exemples qui génèrent des erreurs dans le

                                            chapitre "L'héritage->Résolution statique à la volée" ?

                                            -> Si oui, mes conclusions sont-elles vrai ? Si non pourquoi  ça marche quand même?

                                            -> Si à la fin j'ai raison pour tout ça, alors pouvez-vous demander à Victor T. de me décerner un trophée ?Puisque j'ai certainement contribué à une mise à jour prochaine ? :p:p:p 

                                            Merci beaucoup à tous !!!

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              24 mai 2018 à 21:14:10

                                              Salut RolandKetekleKoffi,

                                              J'ai dû faire les mêmes modifications pour que ça fonctionne, il y a pas mal d'erreurs dans ce cours, peut-être qu'elles sont volontaires pour nous faire bosser sur la résolution d'erreurs.

                                              @+

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                24 mai 2018 à 21:46:26

                                                Bonjour à tous,

                                                Je dois actuellement passé d'une base de donnée Access a une base sur libre office, j'ai pour le moment récupéré les données des tables dans un fichiers CSV, et je les ai importé dans des tables sur Base sur Libre office, cependant il y'a des formulaires aussi à récupérer et des macros, mais je ne sais pas vraiment comment faire pour récupérer tout ça, je pense qu'il va falloir que je refasse les formulaires et les macros. Je suis chez quelqu'un qui a un serveur Synology (serveur WEB), je pensais donc faire un page en HTML qui viendrait alimenter la base de données, j'ai installé donc myadminPHP, apache et compagnie mais je ne suis pas très bon en développement, ni en base de données quelqu'un peut-il me dire comment alimenter les bases via une page WEB, est-ce qu'il faut envoyer du PHP ou des requêtes SQL......


                                                Merci beaucoup pour votre réponse.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  26 mai 2018 à 15:06:49

                                                  Salut

                                                  BenoitMartin16 a écrit:

                                                  Bonjour à tous,

                                                  Je dois actuellement passé d'une base de donnée Access a une base sur libre office, j'ai pour le moment récupéré les données des tables dans un fichiers CSV, et je les ai importé dans des tables sur Base sur Libre office, cependant il y'a des formulaires aussi à récupérer et des macros, mais je ne sais pas vraiment comment faire pour récupérer tout ça, je pense qu'il va falloir que je refasse les formulaires et les macros. Je suis chez quelqu'un qui a un serveur Synology (serveur WEB), je pensais donc faire un page en HTML qui viendrait alimenter la base de données, j'ai installé donc myadminPHP, apache et compagnie mais je ne suis pas très bon en développement, ni en base de données quelqu'un peut-il me dire comment alimenter les bases via une page WEB, est-ce qu'il faut envoyer du PHP ou des requêtes SQL......

                                                  Merci beaucoup pour votre réponse.

                                                  Voilà Je te donne un aperçu HTML-JS-CSS-PHP-SQL

                                                   qui viendrait alimenter la base de données

                                                  C'est un calendrier  Multiple utilisateurs - taches -

                                                  Cal (heures trv par / mois / semaine / jour tranche date Saison par exemple)

                                                  Attention c'est une class complet non terminé

                                                  Hors base de donée

                                                  <?php
                                                  class Calendar{
                                                  	var $date;
                                                  	var $year;
                                                  	var $month;
                                                  	var $day;
                                                  	
                                                  	var $week_start_on = FALSE;
                                                  	var $week_start = 1; // 2 CLN week-end defaut place sur LUNDI 
                                                  	var $JoursFeries = 2; // Multiplicateur
                                                  	var $Interval_Evnt = 5; // Minutes
                                                  	
                                                  	var $Link_Service = TRUE; 
                                                  	var $link_to;
                                                  	var $formatted_link_to;
                                                  	
                                                  	var $mark_Css_Today = TRUE;
                                                  	var $Css_Today_date_class = 'Css_Today';
                                                  	var $Css_Lst_Semaine;
                                                  	var $ThisWeekend;
                                                  	var $ThisFeries;
                                                  	
                                                  	var $mark_Css_Selected = TRUE;
                                                  	var $Css_Selected_date_class = 'Css_Selected';
                                                  	
                                                  	var $mark_passed = TRUE;
                                                  	var $passed_date_class = 'passed';
                                                  	
                                                  	var $Date_Activite;
                                                  	var $Class_Dflt_Actv_Dt = 'Date_Activite'; 
                                                  	
                                                  	var $Code_Bar_Jour; 
                                                  	var $Ln_Xday; 
                                                  	var $Ln_XNav;
                                                  //--------------------------Nomination a deplace dans la construct avoir avec le fichier traduction
                                                  	private $XMois = array ( '01' => "Janvier", '02' => "Fevrier", '03' => "Mars", '04' => "Avril", '05' => "Mai", '06' => "Juin", '07' => "Juillet", '08' => "Aout", '09' => "Septembre", 10 => "Octobre", 11 => "Novembre", 12 => "Decembre", );
                                                  	private $Xjour = array ( 'monday' => "lundi", 'tuesday' => "mardi", 'wednesday' => "mercredi", 'thursday' => "jeudi", 'friday' => "vendredi", 'saturday' => "samedi", 'sunday' => "dimanche", );
                                                  	private $XNom_Semaine = array ( 0 => "Lundi", 1 => "Mardi", 2 => "Mercredi", 3 => "Jeudi", 4 => "Vendredi", 5 => "Samedi", 6 => "Dimanche", );
                                                  
                                                  	function __construct($date = NULL, $year = NULL, $month = NULL)
                                                  	{ list($Ans, $Ms, $Jrs) = explode("-", $_GET[Xday]); 
                                                  	$this->Ln_Xday = (strlen($_GET[Xday])>1) ? "Xday=$_GET[Xday]"	: '';
                                                  	$this->Ln_XNav = (strlen($_GET[XNav])>1) ? "&XNav=$Ms"	: '';
                                                  	$self = htmlspecialchars($_SERVER['PHP_SELF']);
                                                  	$this->link_to = $self;
                                                  		
                                                  			list($Expl_A, $Expl_M, $Expl_J) = explode("-",$_GET[Xday]); 
                                                  			$XValeur=date("w", mktime(0,0,0,$Expl_M,$Expl_J,$Expl_A));
                                                  			$this->ThisWeekend = ($XValeur=='0' OR $XValeur=='6') ?'oui':'non';
                                                  			$this->ThisFeries = (Get_Feries($this->year,"$_GET[Xday]",'NOM_FERIE')=='') ?'non':'oui';
                                                  			
                                                  		if( is_null($year) || is_null($month) )
                                                  		{
                                                  			if( !is_null($date) ){
                                                  				//-------- format correct
                                                  				$this->date = date("Y-m-d", strtotime($date));
                                                  			} else {
                                                  				//--------------------------  utilisez la date de Css_Today
                                                  				$this->date = date("Y-m-d");
                                                  			}
                                                  			$this->set_date_parts_from_date($this->date);
                                                  		} else {
                                                  			$this->year		= $year;
                                                  			$this->month	= str_pad($month, 2, '0', STR_PAD_LEFT);
                                                  		}
                                                  		$this->Mktime_Jour = mktime(0,0,0,date("m")  ,date("d") ,date("Y") );
                                                  		$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd)); 
                                                  	if($_GET[Act]==Del_All )
                                                  		{
                                                  			echo"<h1>Patientez je traite votre demande</h1>";
                                                  			$NetoyageCalendier ="DELETE FROM e_1_calendier_base WHERE e_fk_clndr = '".self:: Cd_Br_Jour($_GET[Xday])."' LIMIT 1 ;";
                                                  			$NetoyageActivite ="DELETE FROM e_2_activite WHERE e_fk_clndr = '".self:: Cd_Br_Jour($_GET[Xday])."' ;";
                                                  			$Base[Prexife]->query($NetoyageCalendier ); 
                                                  			$Base[Prexife]->query($NetoyageActivite ); 
                                                  			echo"<script language='javascript'> document.location.href=\"?".$this->Ln_Xday."&".$this->Ln_XNav."\" </script>";
                                                  		}
                                                  		unset($DB_CX);
                                                  $this->Amplitude[JOURNALIER]= "".self::Amplitude_Trv($Demande='JOURNALIER' ,$Pers=$_SESSION[Id_A_traiter],$MyDate="$_GET[Xday]")."";
                                                  $this->Amplitude[SEMAINE]= "".self::Amplitude_Trv($Demande='SEMAINE' ,$Pers=$_SESSION[Id_A_traiter],$MyDate="$_GET[Xday]")."";
                                                  $this->Amplitude[MOIS]= "".self::Amplitude_Trv($Demande='MOIS' ,$Pers=$_SESSION[Id_A_traiter],$MyDate="$_GET[Xday]")."";
                                                  
                                                  	}
                                                  	
                                                  	
                                                  	function set_date_parts_from_date($date){
                                                  		$this->year		= date("Y", strtotime($date));
                                                  		$this->month	= date("m", strtotime($date));
                                                  		$this->day		= date("d", strtotime($date));
                                                  	}
                                                  
                                                  	function Output_calendar($year = NULL, $month = NULL, $calendar_class = 'calendar' ,$Out='Data-Form')
                                                  	{
                                                  		//--------------------- remplacer les méthodes de classe si les valeurs sont passées 
                                                  		$year = ( is_null($year) )? $this->year : $year;
                                                  		$month = ( is_null($month) )? $this->month : str_pad($month, 2, '0', STR_PAD_LEFT);
                                                  	
                                                  		//------------------------------------------- première du mois
                                                  		$month_start_date = strtotime($year . "-" . $month . "-01");
                                                  		//------------------------- le premier jour du mois tombe sur Week-end ou semaine
                                                  		$first_day_falls_on = date("N", $month_start_date);
                                                  		//----------------------------------------- nombre de jours dans le mois
                                                  		$days_in_month = date("t", $month_start_date);
                                                  		//-------------------------------------------- la dernière date du mois
                                                  		$month_end_date = strtotime($year . "-" . $month . "-" . $days_in_month);
                                                  		//----------------------- trouver le nombre de cellules pour préfixer
                                                  		$start_week_offset = $first_day_falls_on - $this->week_start;
                                                  		$prepend = ( $start_week_offset < 0 )? 7 - abs($start_week_offset) : $first_day_falls_on - $this->week_start;
                                                  		//-------------------------- le premier jour du mois tombe sur Week-end ou semaine
                                                  		$last_day_falls_on = date("N", $month_end_date);
                                                  
                                                  		$Lec_Mode= ( isset($_GET['Xday']) ) ? $_GET['Xday'] : date("Y-m-d");
                                                  		list($a, $m, $j) = explode("-", $Lec_Mode);
                                                  				$NumSemaineSelect = date("W", @mktime(0, 0, 0, $m, $j, $a));
                                                  				$XMoisSelect = ($_GET[XNav]=='') ? date("m", @mktime(0, 0, 0, $m, $j, $a)): $_GET[XNav];
                                                  				
                                                  				$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd)); 
                                                  				$COLUMNS="
                                                  			SELECT id_clndr,e_fk_persone,e_clndr_dt_j,e_clndr_dt_num_j,e_clndr_dt_smn,count( e_srvc_pntg) AS Activation
                                                  			FROM e_1_calendier_base AS a 
                                                  			WHERE 
                                                  			 e_fk_persone='$_SESSION[Id_A_traiter]' AND
                                                  			 e_clndr_dt_m='".sprintf("%'02d",$XMoisSelect)."'
                                                  			GROUP BY e_fk_clndr 
                                                  			"; 
                                                  			$XTABLES = $Base[Prexife]->query($COLUMNS); if (!$XTABLES){return "Eh bah, voila t'as tout casse : Aller voir ".__FILE__." Ligne : ".__LINE__." ?";} 
                                                  			
                                                  				while ($AffData = $XTABLES->fetch())
                                                  				{ 
                                                  			$ConversionA="$AffData[e_clndr_dt_num_j]";
                                                  			$ConversionB="$AffData[e_clndr_dt_j]";
                                                  			$this->Traitement_100[$ConversionA]="$AffData[e_clndr_dt_num_j]";
                                                  			$this->Ref_100[$ConversionA]="$AffData[id_clndr]";
                                                  				$XPingLs.="ConversionA $ConversionA <br>";
                                                  				}
                                                  		$XTABLES->closeCursor ();
                                                  		unset($DB_CX); 
                                                  		//------------------------------------------------- start table, caption 
                                                  		$Output  = "
                                                  	<div class='ME-col m12 ME-row-padding ME-clear'> 
                                                  	<h6 class='ME-theme-d5 ME-row-padding'> 
                                                  	Amplitude SEMAINE <span class='ME-right'>".$this->Amplitude[SEMAINE]."</span> <br> 
                                                  	Amplitude MOIS <span class='ME-right'>". $this->Amplitude[MOIS]."</span> 
                                                  	</h6>
                                                  	</div>
                                                  	<table cellspacing='0' cellpadding='0' style='width:100%; padding: 10px 5px;' class=\"" . $calendar_class . "\">\n";
                                                  		
                                                  		$Dbt_A_1="".ucfirst(strftime("%m", $month_start_date))."";
                                                  		$Dbt_A_2="".ucfirst(strftime("%Y", $month_start_date))."";
                                                  		
                                                  		$Xvar= ($_GET[XNav]=='') ? date(m) : $_GET[XNav] ; 
                                                  		$Nvgtn_Dbt = ($Xvar=='' OR $Xvar =='0' ) ? 1 : $Xvar-1; 
                                                  		$Nvgtn_Fin = $Xvar <= '11' ? $Xvar+1 :1;
                                                  		
                                                  		$Lien_Nvgtn_Dbt = $Xvar > '1' ? "<a href='".$this->link_to."?".$this->Ln_Xday."&XNav=$Nvgtn_Dbt'> ".$this->XMois[sprintf("%'02d",$Nvgtn_Dbt)]." </a>" :'';
                                                  		$Lien_Nvgtn_Fin = $Xvar <= '11' ? "<a href='".$this->link_to."?".$this->Ln_Xday."&XNav=$Nvgtn_Fin'> ".$this->XMois[sprintf("%'02d",$Nvgtn_Fin)]." </a>":'';
                                                  
                                                  		$Output .= " <caption> $Lien_Nvgtn_Dbt <- ".$this->XMois[sprintf("%'02d",$Xvar)]." $Dbt_A_2  -> $Lien_Nvgtn_Fin</caption>\n";
                                                  
                                                  		$col = '';
                                                  		$th = '';
                                                  		for( $Cln_Df=1,$j=$this->week_start,$Cln=(3+$this->week_start)*86400; $Cln_Df<=7; $Cln_Df++,$j++,$Cln+=86400 ){
                                                  			$localized_day_name = gmstrftime('%A',$Cln);
                                                  
                                                  			$col .= "<col class=\"".strtolower($localized_day_name) ."\" />\n";
                                                  			$Conversion="".strtolower($localized_day_name)."";
                                                  			$Var_Nom_Semaine= "".strtoupper($this->Xjour[$Conversion])."";
                                                  			$Sort_Nom_Semaine= substr( $Var_Nom_Semaine ,0 , 3);
                                                  			$th .= "\t<th title=\"" . ucfirst(strtolower ($Var_Nom_Semaine)) ."\" style='padding:3px;'>".strtoupper($Sort_Nom_Semaine)."</th>\n";
                                                  			$j = ( $j == 7 )? 0 : $j;
                                                  		}
                                                  		
                                                  		//------------------------------------------------------- balisage colonnes 
                                                  		$Output .= $col; 
                                                  		//----------------------------------------------------------- table head
                                                  		$Output .= "<thead>\n";
                                                  		$Output .= "<tr>\n";
                                                  		
                                                  		$Output .= $th; 
                                                  		$Output .= "</tr>\n";
                                                  		$Output .= "</thead>\n"; 
                                                  		//---------------------------------------------------------- start tbody
                                                  		$Output .= "<tbody>\n";
                                                  		$Output .= "<tr>\n";
                                                  		
                                                  		//-------------------------------- initialiser le compteur de la semaine
                                                  		$weeks = 1; 
                                                  		
                                                  		//--------------------------------------- ajuster semaine le samedi vide
                                                  		for($i=1;$i<=$prepend;$i++){ $Output .= "\t<td class=\"pad\">&nbsp;</td>\n"; }
                                                  		
                                                  		//--------------------------------------------------- boucle jours du mois
                                                  
                                                  		for($day=1,$cell=$prepend+1; $day<=$days_in_month; $day++,$cell++)
                                                  		{ 
                                                  			$day = str_pad($day, 2, '0', STR_PAD_LEFT);
                                                  			$day_date = $year . "-" . $month . "-" . $day;  
                                                  				list($a, $m, $j) = explode("-", $_GET[Xday]); 
                                                  				$NumSemaineSelect = self::Num_Semaine($j ,$m ,$a );
                                                  			
                                                  			$NumSemaine = sprintf("%'02d",date("W", @mktime(0, 0, 0, $month, $day, $year)));
                                                  			$Num_Jour_Alors = sprintf("%'03d",self::Num_Jour($day ,$month ,$year )); 
                                                  			$this->Css_Lst_Semaine = $NumSemaineSelect==$NumSemaine ? "background: #fc9; font-weight:Bold;  padding:3px;":" padding:3px;";
                                                  			
                                                  			if( $cell == 1 && $day != 1 ){ $Output .= "<tr>\n"; }
                                                  			
                                                  			//-------------- zero pad day and create date string for comparisons		
                                                  			//-------------------------- compare day and add classes for matches
                                                  			if( $this->mark_Css_Today == TRUE && $day_date == date("Y-m-d") ){
                                                  				$classes[] = $this->Css_Today_date_class;
                                                  			}
                                                  			
                                                  			if( $this->mark_Css_Selected == TRUE && $day_date == $this->date ){
                                                  				$classes[] = $this->Css_Selected_date_class;
                                                  			}
                                                  			
                                                  			if( $this->mark_passed == TRUE && $day_date < date("Y-m-d") ){
                                                  				$classes[] = $this->passed_date_class;
                                                  			}
                                                  			
                                                  			if( is_array($this->Date_Activite) ){
                                                  				if( in_array($day_date, $this->Date_Activite ) ){ 
                                                  					$classes[] = $this->Class_Dflt_Actv_Dt;
                                                  				}
                                                  			}
                                                  			$Link_Nav= $_GET[XNav]=='' ? date(m): "$_GET[XNav]";
                                                  			//-----------------  Css class conditions,Css = Report le nom des jours, il faut definir dans fichier CSS
                                                  			
                                                  			$XStyle=( strlen($this->Traitement_100[$Num_Jour_Alors])>1 ) ? " style='color:red; font-weight:Bold;'":'';
                                                  			
                                                  			if( isset($classes) ){
                                                  				$day_class = ' class="';
                                                  				foreach( $classes AS $value ){ $day_class .= $value . " "; }
                                                  				$day_class = substr($day_class, 0, -1) . '"';
                                                  			} else { $day_class = ''; }
                                                  			
                                                  			$this->Mktime_Demande = mktime(0,0,0,date("$month")  ,date("$day") ,date("$year") );
                                                   
                                                  	
                                                  	if($day_date==$_GET[Xday]  ) {$XSouSel= "style='border: 1px solid black; font-weight:Bold; ".$this->Css_Lst_Semaine."'";} else 
                                                  	{$XSouSel= "style='".$this->Css_Lst_Semaine."'";}
                                                  
                                                  	$this->Cadre_Select=$XSouSel;
                                                  	
                                                  	if($this->Mktime_Demande >= $this->Mktime_Jour )
                                                  	{
                                                  	$Xxx[$Num_Jour_Alors]= ( strlen($this->Traitement_100[$Num_Jour_Alors] )>1 ) ?
                                                  	"<a href='?Xday=$year-$month-$day&XNav=$month&Act=Del_All&Ref=".$this->Ref_100[$Num_Jour_Alors]."'>
                                                  	<i class='fa fa-remove' style='color:red; font-size: small;'> Sup. S.$NumSemaine </i></a> ":
                                                  	"<label for='$day'><i class='fa fa-plus-square-o' style='color:#0040ff; font-size: small;'> Ajt. S.$NumSemaine </i></label>";	
                                                  	}
                                                  else{
                                                  	$Xxx[$Num_Jour_Alors]= ( strlen($this->Traitement_100[$Num_Jour_Alors] )>1 ) ? 
                                                  	"<a href='?Xday=$year-$month-$day&XNav=$month' $XStyle> <i class='fa fa-check' style='color:red;'> S.$NumSemaine </i> </a>" : 
                                                  	"<span style='color:#0040ff; font-size: small;'>Semaine $NumSemaine</span>"; 
                                                  	} 
                                                  	$Output .= "\t<td".$day_class." valign='top' title=\"$day_date Semaine : $NumSemaine | No Jour : $Num_Jour_Alors ".self::Cd_Br_Jour($day_date)."\" ".$this->Cadre_Select."> 
                                                  	$Xxx[$Num_Jour_Alors]<br>";
                                                  
                                                  			//----------------------------------------- unset to keep loop clean
                                                  			unset($day_class, $classes);
                                                  			//-------------------------------------- conditional, start link tag  
                                                  
                                                  			switch( $this->Link_Service )
                                                  			{
                                                  				case 0 : // Pas de lien du tout
                                                  					$Output .= "$day";
                                                  				break; 
                                                  				case 1 : // Full lien
                                                  				
                                                  					if( empty($this->formatted_link_to) ){
                                                  						$Output .= "<a href=\"" . $this->link_to . "?Xday=" . $day_date . "&XNav=$Link_Nav\" $XStyle>" . $day . "  </a> ";
                                                  					} else {
                                                  						$Output .= "<a href=\"" . strftime($this->formatted_link_to, strtotime($day_date)) . "\">" . $day . " </a>";
                                                  					} 
                                                  				break;
                                                  				case 2 : // Uniquement sur les dates valides
                                                  					if( is_array($this->Date_Activite) ){	}
                                                  						if(  strlen($this->Traitement_100[$Num_Jour_Alors] )>1  )
                                                  						{
                                                  						$Output .= "<a href='".$this->link_to."?Xday=".$day_date."&XNav=$Link_Nav' style='color:red;'> <i class='fa fa-save' style='color:bleu;'></i> ";
                                                  						}
                                                  						$Output .= "$day";
                                                  				break;
                                                  				case 3 : // Case coche sur les dates valides <i class='></i>
                                                  					if( is_array($this->Date_Activite) ) { 	}
                                                  	$Xchecked=( strlen($this->Traitement_100[$Num_Jour_Alors] )>1 )  ?'checked':'';
                                                  	$Css_Checked=( strlen($this->Traitement_100[$Num_Jour_Alors] )>1 )  ?"style='padding:5px;'":'';
                                                  	$XCode_Bar="".self::Cd_Br_Jour($day_date).""; 
                                                  	
                                                  	if($this->Mktime_Demande >= $this->Mktime_Jour )
                                                  	{
                                                  	$Supression[$day] = ( strlen($this->Traitement_100[$Num_Jour_Alors] )>1 ) ?
                                                  	"<a href='".$this->link_to."?Xday=".$day_date."&XNav=$Link_Nav' $XStyle> <i class='fa fa-save' style='color:red;'></i> "
                                                  	:
                                                  	"<input type='checkbox' name='$day' id='$day' value='$XCode_Bar' $Xchecked> ";	
                                                  	}
                                                  	else{$Supression[$day]="<a href='".$this->link_to."?Xday=".$day_date."&XNav=$Link_Nav' $XStyle> <i class='fa fa-info' style='color:#0040ff;'></i> ";}
                                                  	
                                                  		if (!$_SESSION[Id_A_traiter]){$Alert_Traitement_218= "<h3>Vous devez sélectionnez une personne</h3>"; }
                                                  		else
                                                  		{
                                                  		$x = sprintf("%'02d",$day); 
                                                  		if(strlen($_POST[$x])>1){self::Sql_Gestion($XId_Jour, $_SESSION[Id_A_traiter] ); $XPOST++;}
                                                  		$Output .= "<label for='$day' $XStyle $Css_Checked>$Supression[$day]"; 
                                                  		}
                                                  
                                                  					$Output .= "$day<br>  <span style='color:red; font-size:small;'> ".Get_Feries($this->year,"$day_date",'NOM_FERIE')." </span></label> ";
                                                  			if( is_array($this->Date_Activite OR strlen($this->Date_Activite[$day_date])>1 ) ){
                                                  						if( in_array($day_date, $this->Date_Activite) ){
                                                  							if( empty($this->formatted_link_to) ){
                                                  								$Output .= "</a>";
                                                  							} else {
                                                  								$Output .= "</a>";
                                                  							}
                                                  						}
                                                  					}			
                                                  				break;
                                                  			}
                                                  			//------------------------------------------------- Fin close table cell
                                                  			
                                                  			$Output .= "</td>\n"; 
                                                  			//------- if this is the last cell, end the row and reset cell count
                                                  			if( $cell == 7 ){ $Output .= "</tr>\n"; $cell = 0; }
                                                  			
                                                  		}
                                                  
                                                  		//----------------------------------------------------- dt mois vide
                                                  		if( $cell > 1 ){ for($i=$cell;$i<=7;$i++){ $Output .= "\t<td class=\"pad\">&nbsp;</td>\n"; } $Output .= "</tr>\n"; }
                                                  
                                                  		//--------------------------------------------- Fin colonnes et table
                                                  		$Output .= "</tbody>\n";
                                                  		$Output .= "</table>\n"; 
                                                  		$Alert_Traitement_218 =(strlen($XPOST)>=1) ? "<script language='javascript'> document.location.href=\"index.php?".$this->Ln_Xday."&XNav=$month\" </script>" : "$Alert_Traitement_218"; 
                                                  		return "$Alert_Traitement_218 $Output  ";
                                                  	}
                                                  
                                                  		function Output_Semaine_Par_Num($Demande='' ,$XNumS='',$XAnne='',$Persone='') 
                                                  		{
                                                  		$this->Persone=$Persone;
                                                  		list($Ans, $Ms, $Jrs) = explode("-", $_GET[Xday]); 
                                                  		 if (!$Demande){$Controle="oui"; return"";}
                                                  			 if($Ans == false ||$Ms == false || $Jrs == false AND $NumJour<=52 ){$NumJour = "$XNumS"; $Ans = "$XAnne"; if (!$NumJour>52){$Controle="oui"; return"";} } 
                                                  			 elseif(checkdate($Ms, $Jrs, $Ans)==false ) {$NumJour = "$XNumS"; $Ans = "$XAnne";}
                                                  			 else {$NumJour = date("W", @mktime(0, 0, 0, $Ms, $Jrs, $Ans)); if (!$Demande){return"";}$Controle="oui"; }
                                                  $MaSemaine = date("W", @mktime(0, 0, 0, $Ms, $Jrs, $Ans)) ; 
                                                  
                                                  $Description[1]="Tout les liens actives";
                                                  		$Description[2]="Seulement les liens déclarés";
                                                  		$Description[3]="Case à coché"; 
                                                   		$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd));
                                                  					
                                                  			$COLUMNS=" 
                                                  			SELECT DISTINCT e_fk_strategie_tache, a.e_srvc_pntg AS e_srvc_pntg, e_avc_tache, e_clndri_chrono_dbt, e_clndri_chrono_fin, e_clndri_amplitude , 
                                                  			TIMEDIFF(e_clndri_chrono_fin,e_clndri_chrono_dbt) AS DIFF_TEMPS,	
                                                  			(SELECT c.Calendier_tache  FROM a_elements_strategie AS c WHERE c.id_strategie = a.e_fk_strategie_tache ) AS Tache_REC,
                                                  			b.e_clndr_dt_complet, b.e_clndr_dt_smn, a.id_clndr AS Id_Actv, a.e_fk_clndr AS Cbr_Actv
                                                  			FROM e_2_activite AS a  
                                                  			INNER JOIN e_1_calendier_base AS b ON (a.e_fk_clndr = b.e_fk_clndr )
                                                  
                                                  			WHERE
                                                  			a.e_fk_clndr=		'".self::Cd_Br_Jour($_GET[Xday])."' AND
                                                  			a.e_fk_persone =	'$_SESSION[Id_A_traiter]' 
                                                  			";
                                                  		$XTABLES = $Base[Prexife]->query($COLUMNS); if (!$XTABLES){return "Eh bah, voila t'as tout casse : Aller voir ".__FILE__." Ligne : ".__LINE__." ?";} 
                                                  
                                                  			/*Lecture et Preparation des posts*/
                                                  			while ($AffData = $XTABLES->fetch())
                                                  				{ 
                                                  		$TotalActivation++;
                                                  		$Option_[Del_All]="Act=Del_All&Ref=$AffData[e_clndr_dt_smn]";
                                                  		$Option_[Del_Unite]="Act=Del_Unite&Ref=$AffData[Id_Actv]";
                                                  		$Option_[Correction]="Act=Update&Ref=$AffData[Id_Actv]";
                                                  
                                                  		if($_GET[Act]==Del_Unite AND $AffData[Id_Actv]=="$_GET[Ref]")
                                                  		{$NetoyageUnitaire ="DELETE FROM e_2_activite WHERE id_clndr = '".$AffData[Id_Actv]."' ;";
                                                  		$Base[Prexife]->query($NetoyageUnitaire ); 
                                                  		echo"<h1>Patientez je traite votre demande</h1> ";
                                                  		echo"<script language='javascript'> document.location.href=\"?".$this->Ln_Xday."&".$this->Ln_XNav."\" </script>";
                                                  		}
                                                  		elseif($_GET[Act]==Update AND $AffData[Id_Actv]=="$_GET[Ref]")
                                                  		{
                                                  			$Reporter[tache]="$AffData[e_fk_strategie_tache]";
                                                  			$Reporter[Serv_Pointage]="$AffData[e_srvc_pntg]";
                                                  			$Reporter[Chrono_dbt]="$AffData[e_clndri_chrono_dbt]";
                                                  			$Reporter[Chrono_fin]="$AffData[e_clndri_chrono_fin]";
                                                  			$XOp = 'Correction';
                                                  		}
                                                  
                                                  		$Bonne_Heure=substr($AffData[e_clndri_chrono_dbt], 0,2);
                                                  		$Css_Sel_Trv = ($AffData[Id_Actv]=="$_GET[Ref]") ?"ME-theme-d6":"";
                                                  		
                                                  		if($AffData[Id_Actv]=="$_GET[Ref]" )
                                                  		{
                                                  			$XNORMALTEMP="$AffData[e_clndri_amplitude]";
                                                  			$XDIFF_TEMPS="$AffData[DIFF_TEMPS]";
                                                  		}
                                                  		if($AffData[e_srvc_pntg]=='oui')
                                                  		{$TCmtpOui++;
                                                  			$Chaine[Pointage][$Bonne_Heure].="<div class='ME-clear $Css_Sel_Trv'> <h5>
                                                  			<div class='ME-col m5 ME-row-padding'> $AffData[e_clndri_chrono_dbt] à $AffData[e_clndri_chrono_fin] </div> 
                                                  			<div class='ME-col m5 ME-row-padding'> <b>$AffData[Tache_REC]</b></div>
                                                  			<div class='ME-col m5 ME-row-padding'> Amplitude $AffData[e_clndri_amplitude]</div> 
                                                  			<div class='Me-right ME-col m5 ME-row-padding'>
                                                  			<a href='?".$this->Ln_Xday."&".$this->Ln_XNav."&$Option_[Correction]' class='ME-right ME-hover-deep-purple ME-row-padding'> Correction </a> 
                                                  			<a href='?".$this->Ln_Xday."&".$this->Ln_XNav."&$Option_[Del_Unite]' class='ME-left ME-hover-deep-purple ME-row-padding'> Effacer </a>
                                                  			</div>
                                                  			</h5></div>
                                                  			";
                                                  		}
                                                  		else
                                                  		{$TCmtpNon++;
                                                  			$Chaine[Normal][$Bonne_Heure].="
                                                  			<div class='ME-clear $Css_Sel_Trv'> <h5>
                                                  			<div class='ME-col m5 ME-row-padding'> $AffData[e_clndri_chrono_dbt] à $AffData[e_clndri_chrono_fin] </div> 
                                                  			<div class='ME-col m5 ME-row-padding'>  <b>$AffData[Tache_REC]</b> </div> 			 
                                                  			<div class='Me-right ME-col m5 ME-row-padding'> 
                                                  			<a href='?".$this->Ln_Xday."&".$this->Ln_XNav."&$Option_[Correction]' class='ME-right ME-hover-deep-purple ME-row-padding'> Correction </a> 
                                                  			<a href='?".$this->Ln_Xday."&".$this->Ln_XNav."&$Option_[Del_Unite]' class='ME-left ME-hover-deep-purple ME-row-padding'> Effacer </a>
                                                  			</div>
                                                  			</h5></div>
                                                  			";
                                                  		}
                                                  	
                                                  	if($AffData[e_clndr_dt_complet]==$_GET[Xday]) {$SouSel= "background: #fc9; color:red;"; } else{$SouSel= "background: #fff; color:#000;";$Indic="";} 
                                                  				}
                                                  				$XTABLES->closeCursor ();
                                                  		unset($DB_CX);
                                                  			if($_POST[Action]==Injection OR $_POST[Action]==Correction )
                                                  			{
                                                  			$XMarquage=$_POST[Marquage]; 
                                                  			$CNVRS[FK_CLNDR]="e_fk_clndr_".$XMarquage."";
                                                  			$CNVRS[SOURCE_DT]="s_date".$XMarquage."";
                                                  				
                                                  			$CNVRS[PNTG]="e_srvc_pntg_".$XMarquage."";
                                                  			$CNVRS[TACHE]="e_fk_strategie_tache_".$XMarquage."";
                                                  			$CNVRS[SUIVI]="e_avc_tache_".$XMarquage."";
                                                  			
                                                  			$CNVRS[DBT_H]="pntg_dbt_h_".$XMarquage."";
                                                  			$CNVRS[DBT_M]="pntg_dbt_m_".$XMarquage."";
                                                  			$EXPORT_H_[DBT]="".$_POST[$CNVRS[DBT_H]].":".$_POST[$CNVRS[DBT_M]].":00";
                                                  			
                                                  			$CNVRS[FIN_H]="pntg_fin_h_".$XMarquage."";
                                                  			$CNVRS[FIN_M]="pntg_fin_m_".$XMarquage."";
                                                  			$EXPORT_H_[FIN]="".$_POST[$CNVRS[FIN_H]].":".$_POST[$CNVRS[FIN_M]].":00";
                                                  			
                                                  			$Dt_Debut        = mktime ($_POST[$CNVRS[DBT_H]],$_POST[$CNVRS[DBT_M]],0,$Ms,$Jrs,$Ans); 
                                                  			$Dt_Fin          = mktime ($_POST[$CNVRS[FIN_H]],$_POST[$CNVRS[FIN_M]],0,$Ms,$Jrs,$Ans); 
                                                  			$Test=$Dt_Fin-$Dt_Debut;  
                                                  			
                                                  			if($Test>$this->Interval_Evnt*60)
                                                  			{
                                                  	if($_POST[SelectFerie]=='oui' )
                                                  	{$Special_Feries= "SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF('".$EXPORT_H_[FIN]."','".$EXPORT_H_[DBT]."'))*".$this->JoursFeries.")";}
                                                  	elseif($_POST[SelectFerie]=='oui' AND  $this->ThisWeekend=='oui' )
                                                  	{$Special_Feries= "SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF('".$EXPORT_H_[FIN]."','".$EXPORT_H_[DBT]."'))*".$this->JoursFeries.")";}
                                                  	else
                                                  	{$Special_Feries= "SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF('".$EXPORT_H_[FIN]."','".$EXPORT_H_[DBT]."')))";}
                                                  			}
                                                  			else
                                                  			{
                                                  	return"<div class='ME-col m12 ME-row-padding ME-clear'>
                                                  	<h1 class='ME-theme-d5 ME-row-padding'>Err heure événement<br>Début <span class='Me-right'> $EXPORT_H_[DBT]</span><br>Fin <span class='Me-right'> $EXPORT_H_[FIN] </span> </h1> 
                                                  	<h3 style='color:red;'>Interval minimum doit être supérrieur de ".$this->Interval_Evnt." minutes</h3> 
                                                  	</div>";
                                                  			}
                                                  			//return"vvvvvvvvvv ".$_POST[$CNVRS[PNTG]]." ";
                                                  		if($_POST[Action]==Correction )
                                                  		{ 
                                                  	$CHAINE_UPDATE= " UPDATE `e_2_activite` SET `e_srvc_pntg`='".$_POST[$CNVRS[PNTG]]."', `e_fk_strategie_tache`='".$_POST[$CNVRS[TACHE]]."', `e_clndri_chrono_dbt`='".$EXPORT_H_[DBT]."', `e_clndri_chrono_fin`='".$EXPORT_H_[FIN]."', 
                                                  	`e_clndri_amplitude`= ".$Special_Feries." WHERE id_clndr= '$_GET[Ref]' LIMIT 1 ; ";
                                                  			$Base[Prexife]->query($CHAINE_UPDATE ); 
                                                  			return"<script language='javascript'> document.location.href=\"?Xday=$_GET[Xday]&XNav=".$_GET[XNav]."\" </script> "; 
                                                  		}
                                                  		
                                                  		if($_POST[Action]==Injection )
                                                  		{
                                                  	$CHAINE_INSERT="INSERT INTO e_2_activite VALUES ( '','".$_POST[$CNVRS[FK_CLNDR]]."', '$_SESSION[Id_A_traiter]','".$_POST[$CNVRS[TACHE]]."', '".$_POST[$CNVRS[PNTG]]."', '".$_POST[$CNVRS[SUIVI]]."', '".$EXPORT_H_[DBT]."', '".$EXPORT_H_[FIN]."', ".$Special_Feries." )";
                                                  			$Base[Prexife]->query($CHAINE_INSERT ); 
                                                  			echo"<h1>Patientez je traite votre demande</h1> ";
                                                  			return"<script language='javascript'> document.location.href=\"?Xday=$_GET[Xday]&XNav=".$_GET[XNav]."\" </script> "; 
                                                  		} 
                                                  			}
                                                  
                                                  $JoliMot = $TotalActivation==1 ?"$TotalActivation Activité programmée":"$TotalActivation Activités programmées";
                                                  $JoliMot = $TotalActivation=='' ? '' :"$JoliMot";
                                                  
                                                  	for($i=1;$i<=24;$i++)
                                                  	{
                                                  	$Uniforme = sprintf("%'02d",$i); 
                                                  	$Belle_Ls[Pointage].=($Chaine[Pointage][$Uniforme]=='')? "" : "<div class='ME-left ME-theme-d5 ME-row-padding'> $Uniforme heure</div><div class=' ME-row-padding'> ".$Chaine[Pointage][$Uniforme]." </div>";
                                                  	$Belle_Ls[Normal].=($Chaine[Normal][$Uniforme]=='')? "" : "<div class='ME-left ME-theme-d5 ME-row-padding'> $Uniforme heure</div><div class='ME-row-padding'> ".$Chaine[Normal][$Uniforme]." </div>";
                                                  	}
                                                  	
                                                  	if($TotalActivation==''){$Eml_Sav = "";}
                                                  	else
                                                  	{
                                                  $En_tete_Non= $TCmtpNon==''?'':"<h4 class='ME-theme-d1 ME-row-padding'>Evenement".plrlrebel($TCmtpNon)." non comptablisé".plrlrebel($TCmtpNon)." <span class='Me-right'>$TCmtpNon Evenement".plrlrebel($TCmtpNon)."</span></h4>";
                                                  $En_tete_Oui= $TCmtpOui==''?'':"<h4 class='ME-theme-d5 ME-row-padding'>$TCmtpOui Evenement".plrlrebel($TCmtpOui)." comptablisé".plrlrebel($TCmtpOui)." <span class='Me-right'>Amplitude horraire jounalier 
                                                  ".$this->Amplitude[JOURNALIER]." </span></h4>";
                                                  	$Eml_Sav = " 
                                                  <div style=' '><div class='ME-clear'></div>
                                                  	<div class=' ME-row-padding'><h3><a href='?".$this->Ln_Xday."&".$this->Ln_XNav."&$Option_[Del_All]' style='color:red;'> Effacer tout mes événement</a></h3></div>
                                                  	<div class='ME-clear'> $En_tete_Oui ".$Belle_Ls[Pointage]."</div>
                                                  	<div class='ME-clear'>$En_tete_Non ".$Belle_Ls[Normal]."</div>
                                                  	</div> 
                                                  </div>
                                                  	";
                                                  	}
                                                   $Opperation = $XOp=='' ? 'Injection' :"$XOp";
                                                   $Annulation = $XOp=='Correction' ? "<h3><a href='?".$this->Ln_Xday."&".$this->Ln_XNav."' style='padding:8px 16px; float:left;' class='ME-hover-deep-purple'>Annulation</a></h3>" :'';
                                                   
                                                    $Frm_Nv = "
                                                   <h3 class='ME-row-padding ME-theme-d1'>Nouveau activité $DateActivite semaine $MaSemaine <span class='Me-right'> $JoliMot </span> </h3> 
                                                  	<form action='' method='post'> 
                                                  	<input type='hidden' name='Marquage' value='$TotalActivation'>
                                                  	<input type='hidden' name='e_fk_clndr_".$TotalActivation."' value='".self:: Cd_Br_Jour($_GET[Xday])."'>
                                                  	<input type='hidden' name='s_date".$TotalActivation."' value='$AffData[e_clndr_dt_complet]'>
                                                  	<input type='hidden' name='Action' value='$Opperation'> 
                                                  <div style='padding:8px 16px; float:left; width:100%;'> 
                                                  ".self::Form_Inject_Evnt($Total=$TotalActivation ,$Data=array( "e_fk_strategie_tache_"=>"".$Reporter[tache]."", "e_srvc_pntg_"=>"".$Reporter[Serv_Pointage]."", "pntg_dbt_h_"=>"".$Reporter[Chrono_dbt]."" , 
                                                  "pntg_fin_h_"=>"".$Reporter[Chrono_fin]."" , "pntg_amplitude_normal"=>"$XNORMALTEMP" ,"pntg_amplitude_dif"=>"$XDIFF_TEMPS" , ) )."	
                                                  </div>
                                                  
                                                  	<div class='ME-right'><input type='submit' value='$Opperation' style='padding:8px 16px; float:left;' class='ME-hover-deep-purple'> </div>
                                                  	<div class='ME-left'>$Annulation</div>
                                                  	</form>   ";
                                                  			return" $Frm_Nv  $Eml_Sav ";
                                                  		}
                                                  	
                                                  	function Amplitude_Trv($Demande='' , $Pers='SESSION[Id_A_traiter]', $MyDate="Sous_Fome =2018-07-14") 
                                                  		{ 			/*Tres important Contrain résultat limité 838 
                                                  					le résultat est limité de -838:59:59 à 838:59:59
                                                  					AU DELÀ, IL FAUT TROUVER UNE AUTRE SOLUTION
                                                  					*/
                                                  		$Demande=strtoupper($Demande);
                                                  		list($Ans, $Ms, $Jrs) = explode("-",$MyDate);
                                                  		$Num_S = self::Num_Semaine($Jrs ,$Ms ,$Ans );
                                                  		
                                                  		$Chercher[JOURNALIER]="SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(a.e_clndri_amplitude))) AS JOURNALIER FROM e_2_activite AS a WHERE a.e_fk_clndr= '".self::Cd_Br_Jour($MyDate)."' AND a.e_fk_persone = '$_SESSION[Id_A_traiter]' AND a.e_srvc_pntg = 'oui'";
                                                  		$Chercher[SEMAINE]=" SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(b.e_clndri_amplitude))) AS $Demande FROM e_1_calendier_base AS a INNER JOIN e_2_activite AS b ON (b.e_fk_clndr = a.e_fk_clndr) WHERE a.e_fk_persone = '$Pers' AND a.e_clndr_dt_a = '$Ans' AND a.e_clndr_dt_smn = '$Num_S' AND a.e_srvc_pntg = 'oui' ";
                                                  		
                                                  		$Jour_Un =date("j", mktime(0,0,0,$Ms,$Jrs,$Ans));
                                                  		
                                                  		$Chercher[MOIS]=" SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(b.e_clndri_amplitude))) AS $Demande 
                                                  		FROM e_1_calendier_base AS a 
                                                  		INNER JOIN e_2_activite AS b ON (b.e_fk_clndr = a.e_fk_clndr) 
                                                  		WHERE a.e_fk_persone = '$Pers' AND 
                                                  		a.e_clndr_dt_a = '$Ans' AND 
                                                  		a.e_clndr_dt_m = '$Ms' AND 
                                                  		a.e_srvc_pntg = 'oui' 
                                                  		";
                                                  //if($Demande=='MOIS' ){return "$Chercher[MOIS]";}
                                                  		$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd)); 
                                                  			$AMPLITUDE[$Demande]=" $Chercher[$Demande]";
                                                  
                                                  			$XAMPLITUDE[$Demande] = $Base[Prexife]->query($AMPLITUDE[$Demande]); 
                                                  			if (!$XAMPLITUDE[$Demande]){return "Eh bah, voila t'as tout casse : Aller voir ".__FILE__." Ligne : ".__LINE__." ?";} 
                                                  			$this->total_amplitude[$Demande]  = $Combien=$XAMPLITUDE[$Demande]->fetch();
                                                  			$XAMPLITUDE[$Demande]->closeCursor (); unset($DB_CX);
                                                  			return"$Combien[0]";
                                                  		}
                                                  		
                                                  	function Form_Inject_Evnt($Total='' ,$Data="Sous_Fome_Tbl = array()") 
                                                  		{
                                                  			$XCss="padding:5px;";
                                                  			$XFeries="".Get_Feries($this->year,"$_GET[Xday]",'NOM_FERIE')."";
                                                  			$AffXFeries = $XFeries=='' ? '' :"<div class='ME-clear'><h3 class='ME-right'>".ucfirst(strtolower( "Jour ferié $XFeries"))."</h3></div>";
                                                  			if ( strlen($AffXFeries)>1 OR $this->ThisWeekend=='oui' ) 
                                                  			{  
                                                  $SelecXFeries = ($Data[pntg_amplitude_normal]==$Data[pntg_amplitude_dif])? "non":"oui";
                                                  $XSelectFeries = "<select name='SelectFerie' style='$XCss color:red;'><optgroup label='Amplitude horraire special'></optgroup> ".Selec_XEnum($Aide='',$SelecXFeries , array('oui','non'))." </select>";
                                                  $XTxtFeries[e_srvc_pntg_] ="<br>Special jours feriés et Week-end amplitude horraire (X".$this->JoursFeries.")"; 
                                                  			}
                                                  			
                                                  $e_fk_strategie_tache_[$Total]="  
                                                  <select name='e_fk_strategie_tache_".$Total."' style='$XCss'><optgroup label='Tache'></optgroup> ".Selec_Constant($Aide='#OPT SELECT #ID->NOM #NOM->ID',$Nom_Colone='Calendier_tache',$Data[e_fk_strategie_tache_],$Lec_Mode='SELECT')." </select>
                                                  ";
                                                  $e_srvc_pntg_[$Total]=" $XSelectFeries
                                                  <select name='e_srvc_pntg_".$Total."' style='$XCss'><optgroup label='Service pointage'></optgroup> ".Selec_XEnum($Aide='',$Data[e_srvc_pntg_] , array('non','oui'))." </select>
                                                  ";
                                                  
                                                  list($Dbt_H, $Dbt_M, $Dbt_S) = explode(":", $Data[pntg_dbt_h_]); 
                                                  $pntg_dbt_h_[$Total]="
                                                  <div class='ME-left'>
                                                  <select name='pntg_dbt_h_".$Total."' style='$XCss'><optgroup label='Heure'></optgroup> ".Selec_Heure($Aide='',$Dbt_H)." </select>
                                                  :
                                                  <select name='pntg_dbt_m_".$Total."' style='$XCss'><optgroup label='Minute'></optgroup> ".Selec_Minute($Aide='', $Dbt_M)." </select>
                                                  </div>
                                                  ";
                                                  
                                                  list($Fin_H, $Fin_M, $Fin_S) = explode(":", $Data[pntg_fin_h_]); 
                                                  $pntg_fin_h_[$Total]="
                                                  <div class='ME-left'> 
                                                  <select name='pntg_fin_h_".$Total."' style='$XCss'><optgroup label='Heure'></optgroup> ".Selec_Heure($Aide='',$Fin_H )." </select>
                                                  :
                                                  <select name='pntg_fin_m_".$Total."' style='$XCss'><optgroup label='Minute'></optgroup> ".Selec_Minute($Aide='',$Fin_M )." </select>
                                                  </div>
                                                  ";
                                                  			foreach($Data AS $XNom=>$XDone)
                                                  			{
                                                  	$XTbl.=( $XNom=='pntg_amplitude_normal' OR  $XNom=='pntg_amplitude_dif' ) ? "": 
                                                  	"<div class='ME-col m6 ME-row-padding' style='display: block; position: relative; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;'>
                                                  trad::".$XNom." $XTxtFeries[$XNom]	</div> <div class='ME-right'> ".$$XNom[$Total]." </div> <div class='ME-clear'></div>\n";
                                                  			} 
                                                  	return" $AffXFeries $XTbl";
                                                  		}
                                                  		
                                                  		
                                                  		function Sql_Gestion($XCode_Bar='',$XPersonne='') 
                                                  		{
                                                  			$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd)); 
                                                  	for($i=1; $i<=31; $i++)
                                                  	{$x = sprintf("%'02d",$i);
                                                  	$Xfk_Key= (strlen($_POST[$x])>1) ? "$_POST[$x]" :"$XCode_Bar" ;
                                                  
                                                  $COLUMNS="SELECT DISTINCT  count(a.e_srvc_pntg) AS Activation
                                                  			FROM e_1_calendier_base AS a 
                                                  			WHERE 
                                                  			a.e_fk_clndr='$Xfk_Key' AND
                                                  			a.e_fk_persone='$XPersonne' AND
                                                  			a.e_srvc_pntg='oui'
                                                  			GROUP BY a.e_srvc_pntg
                                                  			";
                                                  
                                                  			$XTABLES = $Base[Prexife]->query($COLUMNS);
                                                  			if (!$XTABLES){return "Eh bah, voila t'as tout casse : Aller voir ".__FILE__." Ligne : ".__LINE__." ?";}
                                                  			
                                                  		if(strlen($_POST[$x])>1 AND strlen($_SESSION[Id_A_traiter])>1)
                                                  		{
                                                  	$Donne = $XTABLES->fetch();
                                                  	$An="".self::ConversionCode($_POST[$x],$Data='Anne')."";
                                                  	$Mo="".self::ConversionCode($_POST[$x],$Data='Mois')."";
                                                  	$Jo="".self::ConversionCode($_POST[$x],$Data='Jour')."";
                                                  	$Nj="".self::ConversionCode($_POST[$x],$Data='NJour')."";
                                                  	$Ns="".self::ConversionCode($_POST[$x],$Data='Semaine')."";
                                                  	
                                                  	$PreparationExport[$i]=" '', '$_POST[$x]', '$XPersonne', 'oui', '$An', '$Mo', '$Jo', '$Ns', '$Nj', '$An-$Mo-$Jo' ";
                                                  	$TableExc[$i].="INSERT INTO `e_1_calendier_base` VALUES ($PreparationExport[$i]) ; "; 
                                                  	$Insert[$i] = ($Donne[0]==0 OR $Donne[0]=='' ) ? $Base[Prexife]->query($TableExc[$i]) : $XTABLES->closeCursor (); 
                                                  		} 
                                                  	}
                                                  unset($DB_CX);
                                                  		return"";
                                                  		}
                                                  		
                                                  		function Num_Jour($XJour='',$XMois='',$XAne='')
                                                  		{$XJour=sprintf("%'02d",$XJour); $XMois=sprintf("%'02d",$XMois);
                                                  		$Alors= date("z", @mktime(0,0,0,$XMois,$XJour,$XAne));
                                                  		return "".sprintf("%'03d",$Alors)."";
                                                  		}
                                                  
                                                  		function ConversionCode($CodeJour='',$Data='') 
                                                  		{
                                                  		$E[Anne]= substr($CodeJour ,0, 4) ;		// 2018
                                                  		$E[Mois]= substr($CodeJour ,4, 2) ;		// 01-12
                                                  		$E[Jour]= substr($CodeJour ,6, 2) ;		// 01-31
                                                  		$E[Semaine]= substr($CodeJour ,8, 2) ;	// 01-52
                                                  		$E[NJour]= substr($CodeJour ,10, 3) ; 	// 001-365
                                                  		return "$E[$Data]"; 
                                                  		}
                                                  	
                                                  		function Cd_Br_Jour($Quand='$a-$m-$j') 
                                                  		{
                                                  			list($a, $m, $j) = explode("-", $Quand );
                                                  			$NumSemaineSelect = date("W", @mktime(0, 0, 0, $m, $j, $a)); 
                                                  			$Num_Semaine = sprintf("%'02d",date("W", @mktime(0, 0, 0, $m, $j, $a)));
                                                  			$Num_Jour = sprintf("%'03d",self::Num_Jour($j, $m, $a));
                                                  			$a = sprintf("%'04d",$a);
                                                  			$m = sprintf("%'02d",$m);
                                                  			$j = sprintf("%'02d",$j);
                                                  			$XCode_Bar="$a$m$day$j$Num_Semaine$Num_Jour";
                                                  			return $this->Code_Bar_Jour= "$XCode_Bar";
                                                  		}
                                                  
                                                  		function Num_Semaine($XJour='',$XMois='',$XAne='')
                                                  		{$XSemaine = date("W", @mktime(0, 0, 0, $XMois, $XJour, $XAne));
                                                  		return "".sprintf("%'02d",$XSemaine)."";
                                                  		}
                                                  		
                                                  		function Bissextile($annee)
                                                  		{/*$bissextile = date("L", mktime(0,0,0,0,0,$annee)) ? '366':'365'; complique $bissextile = date("L", mktime(0,0,0,0,0,$annee)) ? '366':'365';*/ 
                                                  		$Bissextile = ( (is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400))?"366":"365";
                                                  		return "$Bissextile";
                                                  		}
                                                  		
                                                  		
                                                  		
                                                  		
                                                  		
                                                  		
                                                  }
                                                  
                                                   
                                                  ?>



                                                   

                                                  -
                                                  Edité par LEPaul 26 mai 2018 à 15:20:18

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                                    28 mai 2018 à 15:33:19

                                                    Hello!

                                                    Mon problème concerne le chapitre 6 de la partie 2 (l'API de réflexivité) au niveau de la récupération des annotations des attributs et méthodes. jusque là tout allait bien sur la récupération des annotations des classes, mais impossible de récupérer celles des attributs et méthodes:

                                                    Ma classe Personnage:

                                                    <?php
                                                    
                                                    class Personnage
                                                    {
                                                      /**
                                                       * @AttrInfos(description = 'Contient la force du personnage, de 0 à 100', type = 'int')
                                                      */
                                                      protected $force;
                                                      
                                                      /**
                                                       * @ParamInfo(name = 'destination', description = 'La destination du personnage')
                                                       * @ParamInfo(name = 'vitesse', description = 'La vitesse à laquelle se déplace le personnage')
                                                       * @MethodInfos(description = 'Déplace le personnage à un autre endroit', return = true, returnDescription = 'Retourne true si le personnage peut se déplacer')
                                                      */
                                                      public function deplacer($destination, $vitesse)
                                                      {
                                                        // ...
                                                      }
                                                    }

                                                    Mon fichier index:

                                                    <?php
                                                    
                                                    // On commence par inclure les fichiers nécessaires.
                                                    require 'addendum/annotations.php';
                                                    require 'MyAnnotations.php';
                                                    require 'Personnage.php';
                                                    
                                                    // Récupération des annotations des attributs et des méthodes présentent dans la classe 'Personnage'
                                                    $reflectedAttr = new ReflectionAnnotatedProperty('Personnage', 'force');
                                                    $reflectedMethod = new ReflectionAnnotatedMethod('Personnage', 'deplacer');
                                                    
                                                    echo 'Infos concernant l\'attribut :';
                                                    var_dump($reflectedAttr->getAnnotation('AttrInfos'));
                                                    
                                                    echo 'Infos concernant les paramètres de la méthode :';
                                                    var_dump($reflectedMethod->getAllAnnotations('ParamInfo'));
                                                    
                                                    echo 'Infos concernant la méthode :';
                                                    var_dump($reflectedMethod->getAnnotation('MethodInfos'));

                                                    mon résultat:

                                                    Infos concernant l'attribut :

                                                    <small>C:\wamp64\www\PHP_OCR\03_Programmez_en_oriente_objet_en_PHP\Partie2(techniques_avancees)\chapitre5(API_de_reflexivite)\annotations\index.php:39:</small><small>boolean</small>
                                                     false
                                                    

                                                    Infos concernant les paramètres de la méthode :

                                                    <small>C:\wamp64\www\PHP_OCR\03_Programmez_en_oriente_objet_en_PHP\Partie2(techniques_avancees)\chapitre5(API_de_reflexivite)\annotations\index.php:42:</small>
                                                    array (size=0)
                                                      empty
                                                    

                                                    Infos concernant la méthode :

                                                    <small>C:\wamp64\www\PHP_OCR\03_Programmez_en_oriente_objet_en_PHP\Partie2(techniques_avancees)\chapitre5(API_de_reflexivite)\annotations\index.php:45:</small><small>boolean</small>
                                                     false

                                                    Aucun retour de mes annotations. J'ai fais des recherche sur google et la documentattion, l'utilisation à l'air correcte. Si quelqu'un a réussi à obtenir le bon résultat je suis preneur!

                                                    Merci d'avance!

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      28 mai 2018 à 17:26:12

                                                      Melron14 a écrit:

                                                      Salut RolandKetekleKoffi,

                                                      J'ai dû faire les mêmes modifications pour que ça fonctionne, il y a pas mal d'erreurs dans ce cours, peut-être qu'elles sont volontaires pour nous faire bosser sur la résolution d'erreurs.

                                                      @+


                                                      Merci beaucoup Melron14 pour ta réponse. Maintenant je suis rassuré et je continuer sans inquiétude à cause de toi !!! Think...
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        30 mai 2018 à 2:34:29

                                                        Salut à tous et spéciale hip à LEPaul :) Franchement il faut du temps pour balancer tous ses fabuleux conseils. Hélas je n'ai vu la réponse que maintenant. Cela dit maintenant j'arrive même à deviner les problèmes d'intégrités dans mes tables. Donc je les règles assez facilement. En tout cas j'évite ce genre de problème désormais dans la construction même de mes entités. Cela dit j'ai un autre problème. Je n'arrive pas à terminer le dernier module de ma formation PHP/Symfony pour raison financière. C'est le module 8. Si quelqu'un peut fournir l’énoncé complet que je puisse le traiter avant de me réinscrire un jour...Merci à tous. Quoi qu'il en soit si vous avez des blocages pour convertir votre code en symfony 4 ou juste des blocages en symfony 4...je peux sans trop m'avancer peut être donner un coup de main.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          4 juin 2018 à 12:06:11

                                                          Salut a tous ,

                                                          j' ai suivi le cours "Programmez en orienté objet en PHP" mais je suis bloquer quand je met la page accueil j'ai une erreur 

                                                          Warning: require(C:\wamp\www\klashesport\Web/../lib/vendors\Model\News.php): failed to open stream: No such file or directory in C:\wamp\www\klashesport\lib\KeFram\SplClassLoader.php on line 151


                                                          merci d avance

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            4 juin 2018 à 16:10:22

                                                            reynald76140 a écrit:

                                                            Salut a tous ,

                                                            j' ai suivi le cours "Programmez en orienté objet en PHP" mais je suis bloquer quand je met la page accueil j'ai une erreur 

                                                            Warning: require(C:\wamp\www\klashesport\Web/../lib/vendors\Model\News.php): failed to open stream: No such file or directory in C:\wamp\www\klashesport\lib\KeFram\SplClassLoader.php on line 151


                                                            merci d avance

                                                            Tu essaies d'ouvrir un fichier qui n'existe pas dans ton arborescence.





                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              4 juin 2018 à 22:56:12

                                                              Philippe2463 a écrit:

                                                              Je n'ai pas la science infuse, j'en ai bavé comme vous, il y a déjà 2 ans. J'ai même tout arrêté lors de la dernière activité car pour moi aussi c'était difficile. J'ai suivi d'autres cours tout en me documentant sur les systèmes de cache: 6 mois après, je m'y suis remis et j'ai terminé l'exercice avec un beau 8/10 au final et une grande fierté. C'est vrai, il ne faut pas lâcher et, surtout, ce n'est jamais du tout cuit ! On fait un métier dans lequel il faut toujours se documenter et ce cours nous l'a bien montré.


                                                              Bonsoir, 

                                                              Le faire d'une traite ce n'est pas choses faciles comme Philippe2463 il faut ce documenté, et en premier lieu qui n'avait pas à l'époque c'est le cour Adoptez une architecture MVC en PHP, premièrement il montre l'architecture mvc et une petite partie sur la programmation orienter objet, mais ce cours est vraiment efficace, il y a beaucoup de cas pratique ce qui aide grandement l'apprentissage.

                                                              À bientôt sur le forum

                                                              -
                                                              Edité par webcode 4 juin 2018 à 22:56:48

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              Tester le code Premium Solo et gagner un mois gratuit sans engagement, Voici le code promotionnel : WEBCODE-9F7H

                                                              MOOC Programmez en orienté objet en PHP

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown