Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Programmez en orienté objet en PHP

    18 janvier 2018 à 8:03:02

    Bonjour,

    Ca serait bien de nous donner les chemins des fichiers pour chaque classe car ce n'est absolument pas évident, l'esprit étant dérouté par les nombreuses classes (on ne sait plus qui fait quoi, ni les liens entre les classes), fichiers et répertoires.

    Merci.

    -
    Edité par b0nj0urlem0nde 18 janvier 2018 à 8:30:53

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2018 à 14:39:41

      Bonjour à tous.

      Je suis dans la même situation que pas mal de personnes qui suivent ce cours apparemment...dépité.
      Je n'ai pas l'habitude de laisser tomber au premier obstacle sur tous les cours que j'ai fait, mais là, arrivé à la fin du cours péniblement, je suis incapable de faire l'activité finale, vraiment.
      J'ai pourtant réussi pas mal de choses et même développer quelques sites dont un site en php procéduriale avec plus de 700 membres actuellement, mais là j'ai l'impression que je n'ai pas le niveau pour devenir plus pro.
      Cela me met en grand doute pour la suite, à deux doigts de me dire que je ne suis peut être pas capable de continuer, car la poo est inévitable.


      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2018 à 16:09:31

        Ne baisse pas les bras, documente toi sur les caches, fait d'autres cours pour te changer les idées pendant que ton cerveau continue à calculer se qu'il faut faire. Quand tu te sens prêt, tu t'y remets. Cela a été difficile pour tout le monde, tu aurais été le seul, tu aurais pu te poser des questions, douter, mais pas là! Prends du recul (j'ai pris 4 mois de recul 🤨), sur le net il y a plein d'approches sur le sujet. Le but étant de sortir un truc qui fonctionne et tu en es capable!

        Parmi les 22 pages de ce forum, il y a quelques éléments de réponse.

        A+

        -
        Edité par Philippe2463 18 janvier 2018 à 16:13:42

        • Partager sur Facebook
        • Partager sur Twitter
        La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
          21 janvier 2018 à 0:23:34

          Hello,

          J'ai commencé le cours sur la POO il y a quelques jours, je suis "à peut prêt" à l'aise avec le PHP en procédurale. Bon, et par rapport à la POO c'est moi qui suit nul, ou qui comprend pas le cours ? Car je trouve ça vraiment compliqué...

          Je galère, mais j'en suis qu'au début, au base, et pourtant, y'a pleins de trucs que je n'arrive pas à bien cerner... Je m'amusais bien en procédural !

          Du coup, j'ai une question, faut-il OBLIGATOIREMENT connaître la POO, et ne plus jamais programmer en procédurale ? Quel est l’intérêt, car pour moi, c'est juste un truc super dur à apprendre, alors que je peux faire exactement la même chose en procédural, et ça, je sais le faire assez facilement. Je ne parle que pour la POO en PHP... J'ai mieux compris la POO en javascript que là. J'ai surtout l'impression qu'avec ce cours, la POO complique les choses et chamboule TOUT ce que j'ai appris en procédural, comme si ce que j'ai appris avant, je dois tout jeter et repartir de zéro. (bon, en gardant quelques connaissances de base du PHP, c'est sûr ^^)

          Si vous avez des conseils à me donner pour mieux comprendre la POO en PHP, je suis preneur, car je ne baisse pas les bras de toute façon merci bien !

          -
          Edité par LordHawk 21 janvier 2018 à 0:27:52

          • Partager sur Facebook
          • Partager sur Twitter
            22 janvier 2018 à 14:56:10

            @LordHawk

            J'ai eu exactement les mêmes questionnements que toi. Aujourd'hui, je gère bien la POO mais j'ai encore énormément de mal avec l'architecture MVC. Alors est-ce obligatoire ? Absolument pas. Tu peux tout-à-fait coder un site entier en procédurale, du moment que tu organises bien ton code il n'y a aucun souci. Tu auras des problèmes en revanche pour travailler en équipe, la POO sert surtout à produire des tonnes de code qui sera entièrement réutilisable sans qu'on cherche à comprendre ce qu'il y a dedans, grâce à l'injection de dépendances. Mais pour le programmeur lambda j'ai tendance à penser que cela complique énormément le code et que rien ne vaut du procédurale bien organisé si on veut coder un site pour soi-même, avec cependant quelques classes (par exemple pour une interface membre, une classe abstraite Utilisateur avec des classes filles Membre / Admin et un manager pour récupérer les données en BDD, très pratique). Pour résumer le fond de ma pensée si on code un site pour soi-même je pense qu'il faut les deux mais la POO dans une moindre mesure. En revanche, si on veut coder en équipe ou en faire son métier, la POO est indispensable.

            @laplumeaencre

            Je te rassure, on est tous dans cette situation. Le dernier TP est corsé et j'imagine qu'au moins 90% des gens s'arrêtent là. Pour ma part, je comprends les classes que je code, mais il y a tellement de classes, tellement de fichiers et dossiers que je suis incapable de créer les liens mentalement entre ces classes et lorsque j'y parviens, la classe suivante qui vient se rajouter me fait oublier ce que j'avais compris. D'autant plus que c'est très mal expliqué. Donc voilà comment je procède si ça peut t'aider : lorsque je code une classe et que je l'ai comprise, je passe à la suivante, peut importe si j'oublie 10 mn après. Je ferai le lien entre toutes ces classes à la fin du TP. Pas d'inquiétude donc, c'est normal d'être désespéré quand on arrive à ce niveau.

            -
            Edité par b0nj0urlem0nde 22 janvier 2018 à 15:08:09

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              22 janvier 2018 à 20:29:11

              Bonsoir tout le monde !

              Bon voilà je viens vous demander de l'aide car je suis un peu dépité... Je n'en suis qu'à la partie 1 / chapitre 4 et pourtant je commence déjà à galérer.

              J'arrivais à comprendre le cours. Je ne dis pas que je comprenais tout hyper facilement et hyper rapidement, mais en faisant des efforts et en me concentrant, j'arrivais à suivre.

              Mais là maintenant je bloque sur une erreur. Du coup j'ai copié/collé les classes qui sont fournies dans le cours, mais même avec la version du SdZ, ça ne fonctionne pas. Vraiment je ne vois pas d'où viens cette erreur, j'ai beau chercher et fouiller dans le code fourni, je ne trouve pas...

              Voici l'erreur que j'ai : " Catchable fatal error: Argument 1 passed to PersonnagesManager::__construct() must be of the type array, object given, called in C:\wamp64\www\poo\sdz\appels.php on line 15 and defined in C:\wamp64\www\poo\sdz\personnagesManager.php on line 7"

              Et puis il faut ajouter à ça le fait que suis complètement paumé avec les fichiers. Doit-on en faire plusieurs ou tout mettre dans un seul ? Quels fichiers inclus quels fichiers ?...

              Edit : CA Y EST j'ai trouvé !

              C'était un pb avec la bdd, le code fourni dans le cours marche, mais le miens, lui, ne fonctionne toujours pas, pourtant je pensais avoir tout corrigé. Quelqu'un peu quand même tenter de m'expliquer à quoi correspond l'erreur plus haut ? :euh:

              -
              Edité par Anonyme 22 janvier 2018 à 21:17:01

              • Partager sur Facebook
              • Partager sur Twitter
                23 janvier 2018 à 0:11:26

                @lilianozor affiche nous la capture d'écran de ton code source s'il vous plait.

                • Partager sur Facebook
                • Partager sur Twitter
                  23 janvier 2018 à 10:07:53

                  @lilianozor

                  L'erreur est pourtant claire, le constructeur de ton Manager attend un tableau et il reçoit un objet. Un manager est sensé recevoir un DAO en paramètre. Tu t'es certainement trompé en ajoutant "array" devant $db dans le constructeur de ta classe.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    23 janvier 2018 à 13:16:25

                    Merci pour les réponses !

                    Mohamed -> Trop tard, j'ai sup mon code. Je l'ai remplacé par celui du sdz et j'ai retapé ce que je souhaitais. Je vais quand même essayé de le récupéré.

                    Bonjour -> Je me doutais bien que ça concernait un tableau mais malgrés les lignes qui sont affichées je n'arrivais vraiment à savoir où se trouvais le problème. Merci pour l'explication et pour la piste que tu m'as donné.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 janvier 2018 à 10:54:45

                      Bonjour, à tous pour ma part je suis pas tellement d'accord avec vos critiques quand vous dites que c'est trop dure pas idéale pour les débutant au contraire en rencontrant des difficultés on apprend énormément c'est pas très basique comme tuto, et c'est ce qui est intéressant. Sauf la phase d'analyse et conception que j'accroche pas vraiment. Mais bon super c'est un cours de bonne qualité. Trop facile c'est pas bon. Merci à vous.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Le but est d’être meilleur que hier, en apprenant chaque jour quelque chose de nouveau.
                        28 janvier 2018 à 15:08:55

                        Tout à fait d'accord avec toi Stephanete.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                          30 janvier 2018 à 16:43:50

                          Personne n'a dit qu'on voulait du facile, ne venez pas déformer nos propos. Là c'est juste qu'entre le cours dans son ensemble et ce dernier TP il y a un gouffre infranchissable pour celui qui a suivi ce cours avec un niveau moyen. La difficulté n'est pas moyenne comme c'est écrit dans la description du cours, là on tape dans le très difficile. Cela décourage forcément quand tu suis le cours et que tu tombes la dessus. Il aurait fallu faire quelque chose de moins compliqué pour nous introduire au MVC, quitte à faire un cours entier pour ce TP (qui se justifierait compte tenu de sa difficulté) en tout cas pas mettre ça à la suite d'un cours qui concerne des néophytes.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 janvier 2018 à 21:42:05

                            b0nj0urlem0nde, bonsoir au lieu de vous plaindre cherchez une solution, je suis dans le même cas que vous la progression c'est dépasser ses limites. Merci.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Le but est d’être meilleur que hier, en apprenant chaque jour quelque chose de nouveau.
                              1 février 2018 à 17:58:38

                              Problème Résolu :) merci

                              Bonjour a tous, j'ai un problème je n'arrive pas à mettre à jour mes tables dès lors qu'il y'a des clées étrangères. ça dure depuis des mois.

                              Pouvez vous m'aider ? Voici mon github https://github.com/momilc/opcr5_interminable.

                              En vous remerciant par avance.

                              Mo

                              -
                              Edité par MomoMoMo35 5 février 2018 à 14:25:52

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                1 février 2018 à 21:05:25

                                Bonjour je suis un débutant en PHP orienté alors j'ai besoins de quelque astuces. s'il vous plait.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 février 2018 à 15:10:21

                                  (...)

                                  -
                                  Edité par LEPaul 4 février 2018 à 15:27:02

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                    5 février 2018 à 10:29:31

                                    @StéphaneteAnguilet

                                    Je vois que mes propos sont mal interprétés ou que vous faites semblant de ne pas comprendre, la deuxième option me semble la bonne sinon je ne vois pas comment vous êtes parvenue à ce stade du cours. Je n'aurai pour ma part pas de problème majeur pour achever ce TP, si vous m'aviez lu, vous auriez compris que j'ai le niveau pour le faire. C'est en constatant le nombre de personnes découragées, qui se sentent nulles alors que c'est juste le TP qui est trop dur, que j'ai décidé d'intervenir. Après, si vous, vous pensez pouvoir y arriver et comprendre, mais tant mieux pour vous ! En fait, on s'en tape j'ai envie de dire. La seule chose qui compte est que ce cours doit pouvoir être assimilé par tous, de A à Z, et je suis là pour dénoncer que non, il ne l'est pas, cette partie doit être modifiée pour être adaptée au niveau du reste du cours. Maintenant je vais arrêter de vous répondre car je sens que vous n'êtes là que pour chercher l'embrouille.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      5 février 2018 à 18:34:07

                                      Merci pour ce que tu faire sur le forum pour tous codeur et apprenti a Openclassrooms.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        6 février 2018 à 12:09:12

                                        MomoMoMo35 a écrit:

                                        Problème Résolu :) merci

                                        Bonjour a tous, j'ai un problème je n'arrive pas à mettre à jour mes tables dès lors qu'il y'a des clées étrangères. ça dure depuis des mois.

                                        Pouvez vous m'aider ? Voici mon github https://github.com/momilc/opcr5_interminable.

                                        En vous remerciant par avance.

                                        Mo

                                        -
                                        Edité par MomoMoMo35 il y a environ 20 heures

                                        Désoler pour (...) 
                                        Je devait copier mes codes mais ce Pt internet dans mon trou a rat bref quoi en soit je suis content t'as réussit, et je reprends mon 
                                        Donc pour les clés étrangères : 

                                        J'espère ne pas faire de l'erreurs, bonne lecture 

                                        Après moi une clé étrangère sert au découpe une base de donnée,
                                        donc au lieu de mets Exemple 195 infos ... en une seule {TABLE} on le mets sur plusieurs {TABLE}
                                        ET {clé étrangère} permets de faire une assemblage des {TABLE}.

                                        Une assemblage des éléments {TABLE} on utilisé une {TABLE} + {CHAMPS DE RÉFÉRENCE}
                                        Alors si on sait ça lors de la création de la base on fait de suite {CHAMPS DE RÉFÉRENCE}
                                        ça nous facilite la tache plus tard, si non on doit retrouvés les {CHAMPS DE RÉFÉRENCE} manuellement

                                        Je vais présenter ici ma méthode pour assemblage de clé étrangère :

                                        PRÉPARATION : Tableau php

                                        1 - Je commence par faire une déclaration de tout les tables /!\ Tableau php à un niveau

                                        private $Tbl_Sql_Fonctionnel = array( b_1_contct_base ,b_2_connexion_base ,b_3_contct_adresse ,b_4_contct_com ,b_5_contct_social,b_6_identification_admin,b_7_fournisseur);

                                        2 - Je décidé des champs à ne pas utilisés :  /!\  Tableau php à deux niveau
                                        en générale les {CHAMPS}  à ne pas modifier comme {auto_increment} ma propre {CHAMPS DE RÉFÉRENCE} ou les réservé pour les traitement spéciale {CHAMPS DATE CORRECTION}...

                                        private $Ne_Pas_Traiter=array( id_identification=>id_identification , b_conception_idntfctn=>b_conception_idntfctn , b_badge_acces=>b_badge_acces,b_date_creation=>b_date_creation, b_date_correction=>b_date_correction,);
                                        			

                                        3 - La même chose pour les tables
                                        Pour cette exemple je ne mets pas c'est un peu plus complexe dans les boucles

                                        private $Table_Interdit=array();


                                        CONSIGNES UTILISATION :
                                        PHP {foreach} {substr} {strlen}
                                        SQL  {SHOW COLUMNS} {LEFT JOIN}

                                        En gros je commence par assemblé mon tableau PHP {Tbl_Sql_Fonctionnel} avec méthode {foreach}
                                        - Lister mes tables
                                        - Préparer 2 éléments, formulations des requêtes SQL
                                        (à ce stade c'est pas une LA FORMULE COMPLET mais juste la partie de {FROM} & {JOIN})

                                        	if($Num==0)
                                        {$XFROM.="FROM $Donne Num_0\n";}
                                        	else
                                        {$XFROM.="LEFT JOIN $Donne AS Num_$Num ON (Num_$Num.b_conception_idntfctn = Num_0.b_conception_idntfctn)\n";}

                                        - On prépare la liste de {SHOW COLUMNS} et {FROM} {$Donne sont les élément de foreach}

                                        $COLUMNS="SHOW COLUMNS FROM $Donne";

                                        Résumé:  On n'est toujours dans {foreach} mais là on n'as tout les éléments pour formé une requête SQL complet simple 
                                        SELECT [Champ] FROM `[Nom de table]`

                                        Ouf on ferme {foreach}

                                         Je disait plus haut dans {PRÉPARATION #3}
                                        Des fois déclaration {Tbl_Sql_Fonctionnel} ne suffit pas il faut d'autres c'est ici
                                        Donc manuellement on le fait plus simple au début mais quand tu vas avoir plusieurs table c'est la merde 
                                        On n'as que deux choses  à faire pour chaque table 1 liste des {CHAMP} et {la connexion de jointure}
                                        /!\ Attention METS OU PAS LA VIGULE a la fin dans {$PrepaChamp} Regarde dans {$Affiche_Prepa} 

                                        	$PrepaChamp.="Num_5.b_conception_idntfctn,b_badge_acces,Statue,";
                                        	$XFROM.="LEFT JOIN ".$this->Tbl_Strategie." ON ( id_strategie = Num_5.b_statue_cntct) ";

                                        Assemblage finale 

                                        /*Assemblage finale SQL */
                                        	$Affiche_Prepa="".substr($PrepaChamp,0, strlen($PrepaChamp)-1)."";
                                        	$SpecialRequette="SELECT DISTINCT $Affiche_Prepa $XFROM WHERE Num_0.b_conception_idntfctn=$IdContact GROUP BY $Affiche_Prepa";


                                        Résultat de jointure des 7 tables en une fois:
                                        Liste des {CHAMP} 32 disponibles

                                        b_nom,
                                        b_pnom,
                                        b_date_naissance,
                                        id_connexion,
                                        b_password,
                                        b_pseudo,
                                        id_adresse,
                                        b_adresse,
                                        b_postal,
                                        b_ville,
                                        b_id_pays,
                                        id_communication,
                                        b_mail,
                                        b_tel,
                                        b_fax,
                                        id_social,
                                        b_nom_social,
                                        b_adr_social,
                                        id_idntfctn,
                                        b_statue_cntct,
                                        b_poste_etablissement,
                                        b_contact_perm_cle,
                                        b_activation_carte,
                                        b_contact_photo,
                                        id_cordone_Contact,
                                        b_frnsr_juridique,
                                        b_frnsr_nom_scl,
                                        b_frnsr_date_creation,
                                        b_frnsr_date_correction,
                                        Num_5.b_conception_idntfctn,
                                        b_badge_acces,
                                        Statue,

                                        Formulation de jointures

                                        FROM b_1_contct_base Num_0 
                                        LEFT JOIN b_2_connexion_base AS Num_1 ON (Num_1.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN b_3_contct_adresse AS Num_2 ON (Num_2.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN b_4_contct_com AS Num_3 ON (Num_3.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN b_5_contct_social AS Num_4 ON (Num_4.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN b_6_identification_admin AS Num_5 ON (Num_5.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN b_7_fournisseur AS Num_6 ON (Num_6.b_conception_idntfctn = Num_0.b_conception_idntfctn) 
                                        LEFT JOIN a_elements_strategie ON ( id_strategie = Num_5.b_statue_cntct)


                                        Formulation complet dans mon cas avec {LA FIN WHERE  + GROUP BY}

                                        SELECT DISTINCT b_nom,b_pnom,b_date_naissance,id_connexion,b_password,b_pseudo,id_adresse,b_adresse,b_postal,b_ville,b_id_pays,id_communication,b_mail,b_tel,b_fax,id_social,b_nom_social,b_adr_social,id_idntfctn,b_statue_cntct,b_poste_etablissement,b_contact_perm_cle,b_activation_carte,b_contact_photo,id_cordone_Contact,b_frnsr_juridique,b_frnsr_nom_scl,b_frnsr_date_creation,b_frnsr_date_correction,Num_5.b_conception_idntfctn,b_badge_acces,Statue FROM b_1_contct_base Num_0 LEFT JOIN b_2_connexion_base AS Num_1 ON (Num_1.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN b_3_contct_adresse AS Num_2 ON (Num_2.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN b_4_contct_com AS Num_3 ON (Num_3.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN b_5_contct_social AS Num_4 ON (Num_4.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN b_6_identification_admin AS Num_5 ON (Num_5.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN b_7_fournisseur AS Num_6 ON (Num_6.b_conception_idntfctn = Num_0.b_conception_idntfctn) LEFT JOIN a_elements_strategie ON ( id_strategie = Num_5.b_statue_cntct) WHERE Num_0.b_conception_idntfctn=95613848 GROUP BY b_nom,b_pnom,b_date_naissance,id_connexion,b_password,b_pseudo,id_adresse,b_adresse,b_postal,b_ville,b_id_pays,id_communication,b_mail,b_tel,b_fax,id_social,b_nom_social,b_adr_social,id_idntfctn,b_statue_cntct,b_poste_etablissement,b_contact_perm_cle,b_activation_carte,b_contact_photo,id_cordone_Contact,b_frnsr_juridique,b_frnsr_nom_scl,b_frnsr_date_creation,b_frnsr_date_correction,Num_5.b_conception_idntfctn,b_badge_acces,Statue
                                        


                                        Je te laisse la class complet pour la partie des mises à jours des tablas et à la fin t'as aussi les structure Bd pour tester
                                        ATTENTION il te faut effacé les fonctions pour que ça marche parce que d'autre fonctions se trouve dans {FichierIndispensable}
                                        Si tu veux voir  le fonctionnement complet mon CV  http://le-paul.fr/ecommerce/Contact.php

                                        Les effets attendues de la class
                                        1 - Ajout Modifier des données
                                        2 - Déclenchées les éléments en fonction la demande ( $TblAdminstration=array(0,1,2,3,4,5=>1 ,6=>1) )
                                        Exemple
                                        M.xyz peu travailler uniquement sur corrections de données des personnes 
                                        $TblAdminstration=array(0,1,2,3,4) 
                                        M.abc la même chose mais lui il peu ajouter éditer des carte d’accès (1...4 + 5=>1 ,6=>1)
                                        Et bien d'autres, on n'est pas obligé de mets le #nbs ni l'ordre  
                                        Tout ces trucs sans passés par des consignes tortues et de millions de lignes mais juste un tableau PHP
                                         

                                        J'oublie : Déclaration pour utilisé la class

                                        $Contact = new Contact($langue=fr, $IdContact=$_GET[IdContact]); 
                                        echo $Contact-> Administration($Aide='',$IdContact="$_GET[IdContact]",$TblAdminstration=array(0,1,2,3,4,5=>1 ,6=>1) );
                                        echo $Contact-> LsIdentifiant_Is($Aide='' );

                                        Bien en tendue ma section n'est pas fini donc la partie $Aide='' manquanue

                                        <?
                                        class Contact 
                                        {
                                        			private $Tbl_Sql_Fonctionnel = array( b_1_contct_base ,b_2_connexion_base ,b_3_contct_adresse ,b_4_contct_com ,b_5_contct_social,b_6_identification_admin,b_7_fournisseur);
                                        			private $Table_Interdit=array();
                                        			private $Ne_Pas_Traiter=array( id_identification=>id_identification , b_conception_idntfctn=>b_conception_idntfctn , b_badge_acces=>b_badge_acces,b_date_creation=>b_date_creation, b_date_correction=>b_date_correction,);
                                        			private $FichierIndispensable = array("Fonction/Bibliotheque[php].php","Sql/SQL_Connect.php");
                                        			private $NewValue;
                                        			private $RefContact;
                                        			private $Prfx_Acces;
                                        			private $AdressePage;
                                        			private $Prfx_Special;
                                        			private $Tbl_Strategie;
                                        			private $RepBase;
                                        			private $Element_Badge;
                                        			private $Identifiant_Is;
                                        			private $Connexion;
                                        			private $Connect;
                                        			private $LangueActuel;
                                        
                                        	public function __construct($Langue='', $RefContact='')
                                        	{
                                        		foreach($this->FichierIndispensable AS $Element=>$Liste){require_once $this->FichierIndispensable[$Element];}
                                        		$DB_CX = new ConnectBDD(); if (!$this->Connexion=$DB_CX->Connect('',Connect_Bdd)); 
                                        		define('Idntfctn', "". Aleatoire($Aide,'',$Qts='8',Numerique)."");
                                        		define('DateCreation',DateJuste($Aide='F1',$Format=datetime));
                                        		$Conversion="".__CLASS__.""; 
                                        		$this->NewValue="New_$_GET[$Conversion]";
                                        		$this->RefContact = "$RefContact";	
                                        		$this->AdressePage = "?IdContact=$RefContact";
                                        		$this->Prfx_Acces = "Pass_";
                                        		$this->Prfx_Special = "Employer";
                                        		$this->Tbl_Strategie = "a_elements_strategie"; 
                                        		$this->LangueActuel = "Langue/".strtolower($Langue).".php";
                                        		
                                        /*Creation de repetoire en cas contact  standard le nom le da class sera le nom de du dossier mere */
                                        	if (file_exists(__CLASS__)) {$this->RepBase = __CLASS__ ;}else {$this->RepBase = New_Dossier($Aide='', $Destination=__CLASS__);}
                                        	@$fp = fopen($this->LangueActuel, 'r') or die ("Lecture impossible !<br>Fichier Langue <b>".$this->LangueActuel."</b><br>Ex modele de déclaration :<br>\$Contact = new Contact(\$langue=fr, \$IdContact='###'); "); 
                                        
                                        	}
                                        
                                        	function Administration($Aide='',$IdContact='',$TblAdminstration='array(Oubligatoire)')
                                        	{
                                        		$Traduction = new Traduction_Contact();
                                        		$DB_CX = new ConnectBDD(); 
                                        		if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd));
                                        		require "".$this->LangueActuel."";
                                        /*Je choisi la vitesse Donc je commence par Lister des tables SQL a exploiter */
                                        
                                        		if($this->RefContact==''){}else
                                        		{
                                        	foreach($this->Tbl_Sql_Fonctionnel AS $Num=>$Donne)
                                        	{
                                        /*Assemblage automatise des tables et preparation des element pour la requette partie JOINTURE */
                                        		if($Num==0)
                                        		{$XFROM.="FROM $Donne Num_0\n";}
                                        		else
                                        		{$XFROM.="LEFT JOIN $Donne AS Num_$Num ON (Num_$Num.b_conception_idntfctn = Num_0.b_conception_idntfctn)\n";}
                                        		if($Donne!='')
                                        		{/*Afficher uniquement les donnes valides et preparation 1er requette*/
                                        			if($Donne!= $this->Table_Interdit[$Donne])
                                         				$COLUMNS="SHOW COLUMNS FROM $Donne"; 
                                        				$XTABLES = $Base[Prexife]->query($COLUMNS);
                                        				if (!$XTABLES){return " .!!!! $Donne . ";}
                                        /*Preparation Element de requette partie CHAMP AFFICHAGE */ 
                                        			while ($Donne = $XTABLES->fetch())
                                        			{/*Ne pas lire certain champ*/
                                        				$Conversion="$Donne[0]";
                                        				if($this->Ne_Pas_Traiter[$Conversion]){ }else {$PrepaChamp.="$Donne[0],";}
                                        			}
                                        		}
                                        	}
                                        /*BESOIN AJOUTER AUTRE TABLE ET CHAMP SQL /!\ Attention si tu METS OU PAS LA VIGULE a la fin dans {$PrepaChamp} Regarde dans {$Affiche_Prepa}*/
                                        	$PrepaChamp.="Num_5.b_conception_idntfctn,b_badge_acces,Statue,";
                                        	$XFROM.="LEFT JOIN ".$this->Tbl_Strategie." ON ( id_strategie = Num_5.b_statue_cntct) ";
                                        /*Assemblage finale SQL */
                                        		$Affiche_Prepa="".substr($PrepaChamp,0, strlen($PrepaChamp)-1)."";
                                        		$SpecialRequette="SELECT DISTINCT $Affiche_Prepa $XFROM WHERE Num_0.b_conception_idntfctn=$IdContact GROUP BY $Affiche_Prepa";
                                        /*Connecter */
                                        		$XTABLES = $Base[Prexife]->query($SpecialRequette); if (!$XTABLES){return "Pas de donnes";}
                                        		$ValeurDepart=$XTABLES->fetch(); 
                                        /*Fin de recherche infos*/
                                        		}
                                        echo $SpecialRequette;
                                        		$Ctrl_Employer = $ValeurDepart[Statue] == $this->Prfx_Special ? "OUI" : "NON" ;
                                        		$EtatFormulaire = $ValeurDepart[Statue] == 0 ? "NON" : "OUI" ;
                                        		define('ResultatStatue', $ValeurDepart[Statue]); 
                                        		$this->Element_Badge = array( "$ValeurDepart[b_nom]", "$ValeurDepart[b_pnom]", "$ValeurDepart[Statue]", "$ValeurDepart[b_poste_etablissement]", "$ValeurDepart[b_conception_idntfctn]", "$ValeurDepart[b_badge_acces]", "$ValeurDepart[b_contact_photo]" ); 
                                        
                                        if($Ctrl_Employer==NON AND $EtatFormulaire==NON )
                                        {
                                        $Dirrective[INFO] 		= "Vous êtes sur le points d'ajouter une nouvelle référence";
                                        $Dirrective[DEMANDE] 	= "Souhaitez vous crée un dossier ";
                                        $Dirrective[FORMULAIRE] = "@ définir
                                        <label for='OUI' >OUI </label><INPUT type='radio' name='Creation' value='OUI' id='OUI'>
                                        <label for='NON' >NON </label><INPUT type='radio' name='Creation' value='NON' id='NON'> 
                                        ";
                                        }
                                        /*Preparation des donnees pour affichage*/ 
                                        					foreach($this->Tbl_Sql_Fonctionnel AS $LsSql=>$XChamp)
                                        				{
                                        		if($XChamp!='')
                                        		{
                                        			if($XChamp!= $this->Table_Interdit[$XChamp])
                                        				$LsLsSql[$LsSql] = "<div style='float:left; width:100%; border-left:1px solid red; background-color: lightgrey; padding:10px;'> <b>".$Section_Cntct[$XChamp]."</b></div>";
                                        				$COLUMNS="SHOW COLUMNS FROM $XChamp"; 
                                        				$XTABLES = $Base[Prexife]->query($COLUMNS);
                                        				if (!$XTABLES){return " .!!!! $XChamp . ";}
                                        /*Pour chaque eml trv on ouvre une connexion SQL pour lister les noms de Colones*/
                                        			while ($AffContrain = $XTABLES->fetch())
                                        			{
                                        			$Ordre++; $TblConversion=$AffContrain[0];
                                        			// echo"$Ordre $XChamp : $TblConversion<br>";
                                        		if($AffContrain[5]==auto_increment or $this->Ne_Pas_Traiter[$TblConversion] ) {/*if($TblConversion==b_date_correction){A traiter plus tard}*/ }
                                        	else
                                        	{
                                        /*Aller on commence ici :: Interpretations des Colones Xyz :: On commence le controle d integrite IdContact |$XChamp| $Ctrl_Employer==Employer*/
                                        		if($TblConversion==b_date_naissance)
                                        		{ 
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data";
                                        		list($MaDate[0], $MaDate[1], $MaDate[2]) = explode("-", $Resultat[$TblConversion]);
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'>
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'> 
                                        			<select name='B_Nnc_Jour' style='padding:5px;'>".Selec_Jour($Aide='', $MaDate[2], $encoding='utf-8')."</select>
                                        			<select name='B_Nnc_Mois' style='padding:5px;'>".Selec_Mois($Aide='', $MaDate[1], $encoding='utf-8')."</select>
                                        			<input name='B_Nnc_Ane' maxlength='4' value='$MaDate[0]' style='padding:5px; width:50px;'>
                                        			</div></div>";
                                        		}
                                        		elseif($TblConversion==b_nom_social)
                                        		{ 
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data"; 
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'> 
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'>
                                        			<select name='$TblConversion' style='padding:5px;'>".Tbl_Statique_ModeSelecteur($Aide='',$this->Tbl_Strategie, Reseau_social, $Select=$Data,$Nature='selecteur')."</select>
                                        			</div></div>";
                                        		}
                                        		elseif($TblConversion==b_id_pays)
                                        		{
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data"; 
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'> 
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'>
                                        			<select name='$TblConversion' style='padding:5px;'>".SelecPays($Aide='', $Select=$Data, $Nature='')."</select>
                                        			</div></div>";
                                        		}
                                        		elseif($XChamp==$this->Tbl_Sql_Fonctionnel[5]) 
                                        		{
                                        	if($TblConversion==b_statue_cntct)
                                        		{
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data"; 
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'>
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'>
                                        			<select name='b_statue_cntct' style='padding:5px;'>".Tbl_Statique_ModeSelecteur($Aide='',$this->Tbl_Strategie, Statue, $Select=$Data,$Nature='selecteur')."</select>
                                        			</div></div>";
                                        		}
                                        	elseif($TblConversion==b_contact_perm_cle AND $Ctrl_Employer == NON AND $EtatFormulaire == NON)
                                        	{
                                        		$LsLsSql[$LsSql].="
                                        		<div style='float:left; padding: 5px 5px; width:98%;' class='list-container Deco'> $_POST[$TblConversion] dddddd
                                        		<h1>Section pas encore developper</h1>$Dirrective[INFO] <br> $Dirrective[FORMULAIRE] $Dirrective[DEMANDE] <br> $_POST[Creation] $_POST[b_conception_idntfctn]
                                        		</div>";
                                        	}
                                        	elseif($TblConversion==b_contact_perm_cle AND ResultatStatue==$this->Prfx_Special)
                                        		{
                                        			$Data=$_POST[b_contact_perm_cle]=='' ? "$ValeurDepart[b_contact_perm_cle]":" b_contact_perm_cle=\"$_POST[b_contact_perm_cle]\",";
                                        			$Export[$LsSql].="$Data"; 
                                        			$LsLsSql[$LsSql].="
                                        				<div style='float:left; padding: 5px 5px; padding:10px;'> 
                                        				<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        				<div style='float:left; padding-left:20px;'> 
                                        				<select name='b_contact_perm_cle' style='padding:5px;'> 
                                        				".LectureDesDroits ($Aide='',$this->Tbl_Strategie,Environnement_logiciel, $Data, $Nature='selecteur')."
                                        				</select>
                                        				</div>
                                        				</div></div>";
                                        			$Id[ACTIVATION]=self::Lecture_Bd($Aide='',
                                        			$COLUMNS="SELECT DISTINCT b_activation_carte FROM ".$this->Tbl_Sql_Fonctionnel[5]." WHERE b_conception_idntfctn = $IdContact ", b_activation_carte);
                                        			$TblAdminstration[5]==1 ? New_Dossier($Aide='',$Destination="".$this->RepBase."/$IdContact"):"";
                                        			$LsLsSql[$LsSql].=" 
                                        		<div style='float:left; padding: 5px 5px; width:98%;' class='list-container'>
                                        		<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[b_contact_photo]."</div>
                                        		<div style='float:left; padding-left:20px;'> $AffContrain[b_contact_photo] 
                                        		<select name='b_contact_photo' style='padding: 5px 5px;'>
                                        		".SelecteurDossier($Aide='', $Adresse="".$this->RepBase."/$IdContact", $ValeurDepart[b_contact_photo] ,'')."
                                        		</select>
                                        		</div></div>
                                        				<div style='float:left; padding: 5px 5px; width:98%;' class='list-container'>
                                        				<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[b_activation_carte]."</div>
                                        				<div style='float:left; padding-left:20px;'>
                                        				<select name='b_activation_carte' style='padding: 5px 5px;'>
                                        				".Selec_Confirmation($Aide='',$Valeur=$Id[ACTIVATION])."
                                        				</select>
                                        				</div>
                                        				</div>";
                                        		}
                                        	 elseif($TblConversion==b_contact_photo AND ResultatStatue==$this->Prfx_Special)
                                        		{
                                        			$Js[trigger]="
                                        			<script> function trigger() { var frame = document.getElementById('MaCarte'); frame = frame.contentDocument || frame.document; alert('Edition carte accès terminer !'); }</script>
                                        			<script> window.top.window.trigger(); </script> ";
                                        			$LsLsSql[$LsSql].="
                                        				<div style='float:left; padding: 5px 5px; width:98%;' class='list-container'> 
                                        				<div style='float:left; padding:5px;'>".self::IframeCrt($Aide='', $IdContact , $Afficher='LIEN')."</div>
                                        				<div style='float:left; padding:15px 55px;'>".$GRP_MSG_GLOBAL[MSG_NOTE_CRT]."</div>
                                        				<div style='float:left; padding-left:20px;'> </div> </div>"; 
                                        		}
                                        	elseif($TblConversion==b_activation_carte AND ResultatStatue==$this->Prfx_Special){$LsLsSql[$LsSql].="";}
                                        	elseif($TblConversion==b_poste_etablissement AND ResultatStatue==$this->Prfx_Special)
                                        		{ 
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data"; 
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'> 
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'> 
                                        			<select name='b_poste_etablissement' style='padding:5px;'>".Tbl_Statique_ModeSelecteur($Aide='',$this->Tbl_Strategie, Poste_etablissement, $Select=$Data,$Nature='selecteur')."</select>
                                        			</div></div>";
                                        		}
                                        	elseif($TblConversion==b_contact_perm_cle AND $Ctrl_Employer == NON )	{$LsLsSql[$LsSql].="<div style='float:left; padding: 5px 5px; width:98%;' class='list-container Deco'> Dirrective[INFO] <br>$Ctrl_Employer </div>";}
                                        	elseif($TblConversion==b_poste_etablissement AND $Ctrl_Employer == NON) {$LsLsSql[$LsSql].=" "; }
                                        	elseif($TblConversion==b_contact_photo AND $Ctrl_Employer == NON) {$LsLsSql[$LsSql].=" "; }
                                        	elseif($TblConversion==b_activation_carte AND $Ctrl_Employer == NON) {$LsLsSql[$LsSql].=" "; }
                                        /*Fin de controle d integrite*/	
                                        		elseif($TblConversion==b_statue_cntct )
                                        		{
                                        		$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        		$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        		$Export[$LsSql].="$Data"; 
                                        		$LsLsSql[$LsSql].="
                                        			<div style='float:left; padding: 5px 5px; padding:10px;'> 
                                        			<div style='float:left; padding:5px;'>".$MODULE_CONTCT_BASE[$TblConversion]."</div> 
                                        			<div style='float:left; padding-left:20px;'> ??? Statue ".Statue."
                                        			<select name='b_statue_cntct' style='padding:5px;'>".Tbl_Statique_ModeSelecteur($Aide='',$this->Tbl_Strategie, Statue, $Select=$Data,$Nature='selecteur')."</select>
                                        			</div></div>";
                                        		}
                                        		}
                                        		else
                                        			{
                                        			$Resultat[$TblConversion]=$ValeurDepart[$TblConversion];
                                        			$Data=$_POST[$TblConversion]=='' ? "$Resultat[$TblConversion]":"$TblConversion=\"$_POST[$TblConversion]\",";
                                        			$Export[$LsSql].="$Data"; 
                                        
                                        			$LsLsSql[$LsSql].="
                                        				<div style='float:left; padding: 5px 5px; padding:10px;'>
                                        				<div style='float:left; padding:5px;'><label for='$TblConversion'>".$MODULE_CONTCT_BASE[$TblConversion]."</label></div> 
                                        				<div style='float:left; padding-left:20px;'>
                                        				<input name='$TblConversion' id='$TblConversion' value='".htmlspecialchars($Data)."' style='padding:5px;'>
                                        				</div></div>";
                                        			}
                                        	}
                                        			}
                                        				$XTABLES->closeCursor();
                                        /*Fin while*/
                                        		}
                                        				}
                                        /*FIN PREPARATION DES DONNEES POUR AFFICHAGE*/ 
                                        
                                        /*Partie sauvegarde et corrections On commence par traiter les données conventionels dans tout les TABLE (array $Tbl_Sql_Fonctionnel )
                                        Une fois terminé on traite les CAS EXCEPTIONNELLES puis on retoure à affichage
                                        InjectionSerie OU CorrectionMass
                                        */
                                        	for($i=0; $i<= count($this->Tbl_Sql_Fonctionnel); $i++)
                                        	{
                                        		$ValRec[$i]="$Export[$i]"; 
                                        		if($_POST[Action]=="NOUVEAU")
                                        		{
                                        		 $Unite[$i]= InjectionSerie($Aide='',$Tableau=array($this->Tbl_Sql_Fonctionnel[$i]));
                                        		}
                                        
                                        	elseif($_POST[Action]=="MODIFIER" AND $ValRec[$i]!='')
                                        		{
                                        /*Pas de montage pour des corrections si le POST xyz est vide*/
                                        			$ChaineUpdate="".substr($ValRec[$i],0, strlen($ValRec[$i])-1)."";
                                        /*Formulation SQL Ne pas afficher la derniere virgule*/
                                        			$PreparationExport[$i] = CorrectionMass ($Aide='', $TabSql=$this->Tbl_Sql_Fonctionnel[$i], $Cln_Maitre='b_conception_idntfctn', $Id_Maitre=$_POST[IdContact], $ChaineUpdate );
                                        		}
                                        			$LsFinal[$i].="<div class='list-container' style='float:left; width:98%;'> $LsLsSql[$i]</div>"; 
                                        	}
                                        
                                        /*Controler les affichages - En cas que les varriable de controle change - On viens juste modifier ici (ConditionCntrlAd)*/
                                        	$ConditionCntrlAd="5";
                                        	foreach($TblAdminstration AS $Nbs=>$NumDemander)
                                        	{ 
                                        /*Si les conditions supert admin abs on affiche ca*/	
                                        		if($Nbs < $ConditionCntrlAd ){$Administration.= "$LsFinal[$Nbs]<br>\n" ;}
                                        	}
                                        /*Uniquement supert admin egale a UN** on affiche ca **(Resultat UN)se trouve dans le tableau d utilisation*/ 
                                        		if($TblAdminstration[$ConditionCntrlAd]==1) {$Administration .= "$LsFinal[$ConditionCntrlAd]<br>\n" ;}
                                        /*Find de controle d affichage :: Recuperation des elements POST apres Tbl -> Tbl_Sql_Fonctionnel AND $_GET[Contact]=='Nouveau' strlen($IdContact)*/
                                        			$Explr_Add_Su = $TblAdminstration[5]==1 ? "OUI":"NON"; 
                                        			$CntrlRemplissageId = strlen($IdContact)==0 ? "NON" : "OUI" ;
                                        
                                        		if($CntrlRemplissageId=='OUI')
                                        		{
                                        /*Preparation la requette pour connaitre l integrite de Identifiant demande ($this->Identifiant_Is)*/
                                        			$PremiereCln = PremiereClnTbl($Aide='',$this->Tbl_Sql_Fonctionnel[0]);
                                        			$this->Identifiant_Is = "SELECT COUNT(".PremiereClnTbl($Aide='',$this->Tbl_Sql_Fonctionnel[0]).") FROM ".$this->Tbl_Sql_Fonctionnel[0]." 
                                        			WHERE b_conception_idntfctn = '$IdContact' 
                                        			GROUP BY ".$PremiereCln." ORDER BY NULL"; 
                                        			$Id_Is = $Base[Prexife]->query($this->Identifiant_Is); if (!$Id_Is){return "Err";}
                                        			$Combien=$Id_Is->fetch();
                                        			$CntrlId = $Combien[0] == 0 ? "NON" : "OUI" ;			
                                        		}
                                        /*POUR LES MAUVAISES LANGUES LA SUITE ICI J AI DECIDE UTILISE LA SUISTE ELSEIF */
                                        		if($Explr_Add_Su=='NON' AND $CntrlId=='')
                                        		{
                                        			$Explr_Add_Su="0";
                                        			$HiddenAct="MODIFIER";
                                        			$SubmitTxt="$GRP_BOUTON[CORRECTION] ".ResultatStatue."";
                                        			$RetournePost="IdContact=".$_POST[IdContact]."";
                                        			$XIdContact= "<input type='hidden' name='IdContact' value='$IdContact'>";
                                        		}
                                        		elseif($Explr_Add_Su=='NON' AND $CntrlId=='NON'){$Explr_Add_Su="0";	}
                                        		elseif($Explr_Add_Su=='OUI' AND $CntrlId=='OUI')
                                        		{ 
                                        			$LinkNew="<h3><a href='?' style='float:left; text-decoration:none;'>".$GRP_MSG_GLOBAL[MSG_AJT_CRT]."</a></h3>";
                                        			$Explr_Add_Su="OUI";
                                        			$HiddenAct="MODIFIER";
                                        			$SubmitTxt="$GRP_BOUTON[CORRECTION] ".ResultatStatue."";
                                        			$RetournePost="IdContact=".$_POST[IdContact]."";
                                        			$XIdContact= "<input type='hidden' name='IdContact' value='$IdContact'>";
                                        		}
                                        		elseif($Explr_Add_Su=='NON' AND $CntrlId=='OUI')
                                        		{ 
                                        			$Explr_Add_Su="OUI";
                                        			$HiddenAct="MODIFIER";
                                        			$SubmitTxt="$GRP_BOUTON[CORRECTION] ".ResultatStatue." ";
                                        			$RetournePost="IdContact=".$_POST[IdContact]."";
                                        			$XIdContact= "<input type='hidden' name='IdContact' value='$IdContact'>";
                                        		}
                                        		elseif($Explr_Add_Su=='OUI')
                                        		{
                                        			$HiddenAct="NOUVEAU";
                                        			$SubmitTxt="$GRP_BOUTON[NOUVEAU]";
                                        			$RetournePost="IdContact=".$_POST[b_conception_idntfctn]."";
                                        			$New_Id_Hidden_Contact="<input type='hidden' name='b_conception_idntfctn' value='".Idntfctn."'>";
                                        		}
                                        		$XConversion=$_POST[Creation]; 
                                        		$Commande[OUI]="Creation Nouveau Repertoire : $_POST[Creation]";
                                        		$Commande[NON]="Pas de creation $_POST[Creation]";
                                        		if($_POST[Action]=="NOUVEAU" AND $_POST[Creation]=='OUI'){}
                                        /*Equivalent aux trigger */
                                        	if($_POST[Action]=="NOUVEAU")
                                        	{ 
                                        		$LsUpdate[1] = "UPDATE ".$this->Tbl_Sql_Fonctionnel[0]." 
                                        			SET 
                                        			b_date_naissance = '".$_POST[B_Nnc_Ane]."-".$_POST[B_Nnc_Mois]."-".$_POST[B_Nnc_Jour]."',
                                        			b_date_creation = '".DateCreation."' , b_date_correction = '".DateCreation."' 
                                        			WHERE ".b_conception_idntfctn." = '".$_POST[b_conception_idntfctn]."' LIMIT 1 ;";	
                                        			$Action = $Base[Prexife]->query($LsUpdate[1]);
                                        			$LsUpdate[2] = "UPDATE ".$this->Tbl_Sql_Fonctionnel[5]." 
                                        			SET 			
                                        			b_badge_acces = '$_POST[b_conception_idntfctn]".sprintf("%'05d",$_POST[b_contact_perm_cle])."'
                                        			WHERE ".b_conception_idntfctn." = '".$_POST[b_conception_idntfctn]."' LIMIT 1 ;";	
                                        			$Action = $Base[Prexife]->query($LsUpdate[2]); 
                                        		echo"".$Traduction-> Texte('','GRP_MSG_GLOBAL',MSG_TRAITE_DEMANDE)." <script language='javascript'>document.location.href='?".$RetournePost."'</script>";
                                        	}
                                        /*Partie interventions special sur la Base de donnees*/
                                        			$Destination="".$this->RepBase."/$_POST[IdContact]";
                                        			$TblAdminstration[5]==1 ? New_Dossier($Aide='',$Destination="".$this->RepBase."/$_POST[IdContact]"):"";
                                        	if($_POST[Action]=="MODIFIER")
                                        	{
                                        			$LsUpdate[$CountEml] = "UPDATE ".$this->Tbl_Sql_Fonctionnel[0]." 
                                        			SET 
                                        			b_nom = '".$_POST[b_nom]."',
                                        			b_pnom = '".$_POST[b_pnom]."',
                                        			b_date_naissance = '".$_POST[B_Nnc_Ane]."-".$_POST[B_Nnc_Mois]."-".$_POST[B_Nnc_Jour]."',
                                        			b_date_correction = '".DateCreation."' 
                                        			WHERE ".b_conception_idntfctn." = '".$_POST[IdContact]."' LIMIT 1 ;";	
                                        			$Action[$CountEml] = $Base[Prexife]->query($LsUpdate[$CountEml]);
                                        
                                        		if(ResultatStatue==$this->Prfx_Special and $TblAdminstration[5]==1)
                                        		{
                                        			$CodeAcces="".sprintf("%'08d",$_POST[IdContact])."".sprintf("%'05d",$_POST[b_contact_perm_cle])."";
                                        			$LsUpdate[Add] = "UPDATE ".$this->Tbl_Sql_Fonctionnel[5]." 
                                        			SET
                                        			b_badge_acces = '$CodeAcces' ,
                                        			b_poste_etablissement = '$_POST[b_poste_etablissement]' ,
                                        			b_contact_perm_cle = '$_POST[b_contact_perm_cle]' ,
                                        			b_activation_carte = '$_POST[b_activation_carte]' ,
                                        			b_contact_photo = '$_POST[b_contact_photo]' 
                                        			WHERE ".b_conception_idntfctn." = '".$_POST[IdContact]."' LIMIT 1 ; ";
                                        			$ActionUpdate[Add] = $Base[Prexife]->query($LsUpdate[Add]);
                                        			echo self::CarteAcces($Aide='', $this->Element_Badge);
                                        		}
                                        
                                        		echo"<h1>".$Traduction-> Texte('','GRP_MSG_GLOBAL',MSG_TRAITE_DEMANDE)."</h1>  <script language='javascript'> document.location.href='".$this->AdressePage."'</script>";
                                        	}
                                        		$ChargementDocument = $this->RefContact ? Chargement($Aide='',$Destination="".$this->RepBase."/".$this->RefContact."/", $AdresseRetourn="?IdContact=".$this->RefContact.""):"";
                                        		$MsgRslt[NON]="Pas de données";
                                        		$MsgRslt[OUI]="";
                                        		$Controle[0]="Pas de données";
                                        		$JoliTxt=ucfirst (strtolower("$SubmitTxt"));
                                        		$Controle[OUI]="<h3>$MsgRslt[$CntrlId]</h3> 
                                        		<form action='".$this->AdressePage."' method='post' autocomplete='Off' enctype='multipart/form-data'>
                                        		$New_Id_Hidden_Contact <input type='hidden' name='Action' value='$HiddenAct'>
                                        		$XIdContact
                                        		<div style='width:100%;style='padding:5px;''><input type='submit' value='$JoliTxt' style='padding:5px;'></div>
                                        		$LinkNew $Administration
                                        		$ChargementDocument
                                        		<div style='width:100%;style='padding:5px;''><input type='submit' value='$JoliTxt' style='padding:5px;'></div>
                                        		</form>";
                                        		return" ".$Controle[$Explr_Add_Su]."";
                                        	}
                                        /*A partir ici il y aura que des complements de fonction */
                                        	function CarteAcces($Aide='' , $Donne='' ) 
                                        	{$Aide=strtoupper($Aide); if($Aide=="F1") { }
                                        	else
                                        	{
                                        /*Regrouper les eml de bases b_poste_etablissement b_6_identification_admin */
                                        			foreach($Donne AS $Ls=>$Ordre){$Lire[$Ls]="$Ordre";}
                                        			require('./code128.php'); 
                                        			$pdf= new PDF_Code128();
                                        			$pdf->AddPage(); 
                                        			$pdf->SetFont('Arial','',10);
                                        			$pdf->Code128(25,50,$Lire[5],75,10); /*Preparation Code Acces 16 char */
                                        // Si il y a une vraie image on imprime - Si non on ne fait rien
                                        			$CharAutorise=array(jpg,jpeg,gif,png);
                                        			$Maphoto="".$this->RepBase."/$Lire[4]/$Lire[6]";
                                        	if (file_exists ("$Maphoto" ) )
                                        				{
                                        					$Rest = substr("$Maphoto", -3);
                                        					foreach($CharAutorise AS $Data)
                                        					{
                                        						if($Data==$Rest){$pdf->Image("$Maphoto",25,11,20,0);}
                                        					}
                                        				}
                                        	$Sql_WHERE=" id_strategie = $Lire[3]";
                                        		$Lire[3]=LectureUnitaire($Aide='',$this->Tbl_Strategie,$Sql_WHERE,$Sql_SELECT='Poste_etablissement'); 
                                        		$pdf->SetXY(43,7);	 $pdf->SetFont('Arial','',16);	$pdf->Cell(80,20,"$Lire[0]",0,0,'L');
                                        		$pdf->SetXY(43,14);	 $pdf->SetFont('Arial','',14);	$pdf->Cell(80,20,"$Lire[1]",0,0,'L');
                                        		$pdf->SetXY(45,25);	 $pdf->SetFont('Arial','',12);	$pdf->Cell(80,20,"$Lire[2]",0,0,'L');
                                        		$pdf->SetXY(45,30);	 $pdf->SetFont('Arial','',10);	$pdf->Cell(80,20,"$Lire[3]",0,0,'L');
                                        		$pdf->SetXY(20,36);	 $pdf->SetFont('Arial','',10); $pdf->Cell(80,20,"ID : $Lire[5] ",0,0,'L');
                                        		$pdf->SetXY(43,28);
                                        		$pdf->SetFont('Arial','',8); $pdf->Cell(90,70,"Edition le : ".date(j)." ".JoliDate($Aide='', MOIS , date(n) )." ".date(Y)."",0,0,'L');
                                        		$pdf->SetLineWidth(0.3);
                                        		$pdf->SetFillColor('1000'); 
                                        		$pdf->RoundedRect(20,10, 85, 55, 0.5, 'D');
                                        		$pdf->Output("".$this->RepBase."/$Lire[4]/".$this->Prfx_Acces."$Lire[4].pdf");
                                        	}
                                        	}
                                        
                                        	function Page($Aide='' ) {$Aide=strtoupper($Aide); if($Aide=="F1"){return"On retourne le nom de la class<br>ici nom de la class est : ".__CLASS__." ";}return"".__CLASS__."";}
                                        
                                        	function Lecture_Bd($Aide='',$COLUMNS='',$ChampLect='')
                                        	{
                                        		$DB_CX = new ConnectBDD();
                                        		if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd));
                                        		$XTABLES = $Base[Prexife]->query($COLUMNS); if (!$XTABLES){return "";}
                                        			while ($AffContrain = $XTABLES->fetch())
                                        			{
                                        				$Ordre[$LsSql]++; 
                                        				$XDISTINCT[$ChampLect] ="$AffContrain[$ChampLect]";
                                        			}
                                        		$XTABLES->closeCursor();
                                        	return"$XDISTINCT[$ChampLect]";
                                        	}
                                        
                                        	function IframeCrt($Aide='', $IdContact='', $Afficher='FRAME-LIEN')
                                        	{ require "".$this->LangueActuel."";
                                        		$CodeAcces =self::Lecture_Bd($Aide='', $COLUMNSPHOTO="SELECT DISTINCT b_badge_acces FROM ".$this->Tbl_Sql_Fonctionnel[5]." WHERE b_conception_idntfctn = $IdContact ", b_badge_acces ); 
                                        		$Resultat[b_contact_photo]=self::Lecture_Bd($Aide='',$COLUMNS="SELECT DISTINCT b_contact_photo FROM ".$this->Tbl_Sql_Fonctionnel[5]." WHERE b_conception_idntfctn = $IdContact", b_contact_photo );
                                        			$AdresseBar="".$this->RepBase."/$IdContact/".$this->Prfx_Acces."$IdContact.pdf";
                                        			$CharAutorise=array(pdf);
                                        			if (file_exists ("$AdresseBar" ) )
                                        				{ 
                                        					$Mode[FRAME]="<iframe src='$AdresseBar' name='MaCarte' id='MaCarte'>Err edit frame </iframe>";
                                        					$Mode[LIEN]="<h3><a href='$AdresseBar' target='_blank' style='color:#000; text-decoration:none;'>".$GRP_MSG_GLOBAL[MSG_EDIT_CRT]."</a></h3>";
                                        				}
                                        				else
                                        				{$frame="";}
                                        			$Afficher=strtoupper($Afficher);
                                        			return "$Mode[$Afficher]";
                                        	}
                                        
                                        	function Asemblage_Bd($Aide='',$IdContact='',$ChampLect='')
                                        	{
                                        /*ATTENTION CONTRAINS :: Demarrage de lecture ex table XYZ a partir de colone numero Ex:3 jusqu a la derniere colone de cette table XYZ*/
                                        		$CommencerPar="3";
                                        		$DB_CX = new ConnectBDD(); if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd));
                                        		foreach($this->Tbl_Sql_Fonctionnel AS $LsSql=>$XChamp)
                                        		{ 
                                        /*Precaution :: Cas NOM de COLONE est vide on ne fait rien*/
                                        			if($XChamp!='')
                                        			{
                                        				if($LsSql==0)
                                        				{
                                        					$TableSql.="`$XChamp`"; $Precision="WHERE $XChamp.b_conception_idntfctn='$IdContact'";
                                        				}
                                        				else
                                        					{
                                        					$TableSql.="LEFT JOIN `$XChamp` ON ($XChamp.b_conception_idntfctn='$IdContact')\n";
                                        					}
                                        			$COLUMNS=" SHOW COLUMNS FROM $XChamp"; 
                                        			$XTABLES = $Base[Prexife]->query($COLUMNS);
                                        				if (!$XTABLES){return "";}
                                        				while ($AffContrain = $XTABLES->fetch())
                                        					{
                                        						$Ordre[$LsSql]++;
                                        						if($Ordre[$LsSql]>=$CommencerPar) $Champs.="$AffContrain[0],";
                                        					}
                                        			}
                                        			$XTABLES->closeCursor();
                                        		}
                                        	$ChaineLecture.="".substr($Champs ,0, strlen($Champs )-1)."";
                                        	$LectureFinal=self::Lecture_Bd($Aide='',$COLUMNS="SELECT DISTINCT $ChaineLecture FROM $TableSql $Precision",$ChampLect); 
                                        /*Pour voir des jointures automasises fait echo" SELECT DISTINCT $ChaineLecture FROM $TableSql $Precision<hr>";*/ 
                                        	return"$LectureFinal";
                                        }
                                        
                                        	function LsIdentifiant_Is($Aide='Just pour le Fun' )
                                        		{
                                        			$Traduction = new Traduction_Contact();
                                        			$DB_CX = new ConnectBDD(); 
                                        			if (!$Base[Prexife]=$DB_CX->Connect('',Connect_Bdd)); 
                                        			$PremiereCln = PremiereClnTbl($Aide='',$this->Tbl_Sql_Fonctionnel[0]); 
                                        			$COLUMNS="
                                        			SELECT 
                                        			INFOBASE.b_conception_idntfctn,INFOBASE.b_nom,INFOBASE.b_pnom,INFOBASE.b_date_creation AS creation,INFOBASE.b_date_correction AS correction,
                                        			ADMIN.b_badge_acces AS BADGE
                                        			FROM 
                                        			".$this->Tbl_Sql_Fonctionnel[0]." AS INFOBASE
                                        			LEFT JOIN ".$this->Tbl_Sql_Fonctionnel[5]." AS ADMIN ON (ADMIN.b_conception_idntfctn = INFOBASE.b_conception_idntfctn)
                                        			GROUP BY INFOBASE.b_conception_idntfctn ORDER BY `b_date_creation` DESC LIMIT 50 ";
                                        
                                        			$XTABLES = $Base[Prexife]->query($COLUMNS);
                                        /*Traitement erreur SQL*/
                                        			if (!$XTABLES){return "Err QSL champ : ".__FILE__." Ligne : ".__LINE__." ?";}
                                        			while ($AffContrain = $XTABLES->fetch())
                                        			{ 
                                        				$AffLien.=" 
                                        				<p class='list-container'><a href='?IdContact=$AffContrain[b_conception_idntfctn]' style='color:000;'> Lien test</a> <b> $AffContrain[b_nom] $AffContrain[b_pnom] </b> <br>
                                        				N° BADGE : $AffContrain[BADGE]<br>creation : $AffContrain[creation]<br>correction : $AffContrain[correction]</p>";
                                        			}
                                        			$XTABLES->closeCursor();
                                        			require_once "./Aide/Administration.php";
                                        			return " 
                                        				<style> @media (min-width: 250px) { .list-container:hover { background: orange; }}
                                        				.BtDemo{background: #4CAF50; color: white; padding: 15px; height: 50%; overflow: scroll; border: 1px solid #ccc;}
                                        				</style>
                                        				<div style='float:left; width:100%;'> 
                                        				<div style='float:left; width:50%;'><p>$AffLien</p></div>
                                        				<div style='float:left; padding:20px;' class=BtDemo>Introduction<p>".$Module[__CLASS__][Introduction]."</p></div>
                                        				</div>";
                                        		}
                                        /*
                                        CREATE TABLE IF NOT EXISTS `b_1_contct_base` ( `id_identification` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_nom` char(24) NOT NULL default '', `b_pnom` char(32) NOT NULL default '', `b_date_naissance` date NOT NULL default '0000-00-00', `b_date_creation` datetime NOT NULL default '0000-00-00 00:00:00', `b_date_correction` datetime NOT NULL default '0000-00-00 00:00:00', KEY `id` (`id_identification`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_1_contct_base' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_2_connexion_base` ( `id_connexion` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_password` char(48) NOT NULL default '', `b_pseudo` char(54) NOT NULL default '', KEY `id` (`id_connexion`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_2_connexion_base' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_3_contct_adresse` ( `id_adresse` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_adresse` char(64) NOT NULL default '', `b_postal` char(8) NOT NULL default '', `b_ville` char(64) NOT NULL default '', `b_id_pays` char(3) NOT NULL default '', KEY `id` (`id_adresse`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_3_contct_adresse' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_4_contct_com` ( `id_communication` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_mail` char(64) NOT NULL default '', `b_tel` char(8) NOT NULL default '', `b_fax` char(64) NOT NULL default '', KEY `id` (`id_communication`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_4_contct_com' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_5_contct_social` ( `id_social` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_nom_social` char(16) NOT NULL default '', `b_adr_social` char(64) NOT NULL default '', KEY `id` (`id_social`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_5_contct_social' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_6_identification_admin` ( `id_idntfctn` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `b_statue_cntct` char(5) NOT NULL default '', `b_badge_acces` char(16) NOT NULL default '', `b_poste_etablissement` char(8) NOT NULL default '', `b_contact_perm_cle` char(5) NOT NULL default '' COMMENT 'Source a_permission Tbl|[a_perm_cle]', `b_activation_carte` enum('Active','Deactive') NOT NULL default 'Deactive', `b_contact_photo` char(64) NOT NULL default '', PRIMARY KEY (`b_badge_acces`), KEY `id` (`id_idntfctn`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_6_identification_admin' AUTO_INCREMENT=1;
                                        CREATE TABLE IF NOT EXISTS `b_7_fournisseur` (  `id_identification` int(8) NOT NULL auto_increment, `b_conception_idntfctn` char(8) NOT NULL default '', `id_cordone_Contact` int(8) NOT NULL ,  `b_frnsr_juridique` char(16) NOT NULL default '', `b_frnsr_nom_scl` char(48) NOT NULL default '', `b_frnsr_date_creation` datetime NOT NULL default '0000-00-00 00:00:00', `b_frnsr_date_correction` datetime NOT NULL default '0000-00-00 00:00:00', KEY `id` (`id_identification`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='b_7_fournisseur' AUTO_INCREMENT=1;
                                        */
                                        /*Fin de la class ne pas depasse*/
                                        }?>









                                        -
                                        Edité par LEPaul 6 février 2018 à 13:04:48

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                          6 février 2018 à 20:25:44

                                          Bonjour je suis la partie sur la Manipulation de données stockées.

                                          Voici le script de ma classe Personnage.php

                                          <?php
                                          class Personnage
                                              {
                                                  private $_id;
                                                  private $_nom;
                                                  private $_forcePerso;
                                                  private $_degats;
                                                  private $_niveau;
                                                  private $_experience;
                                                 
                                                  //Un tableau de donnees doit etre passé a la fonction (d'ou le prefixe "array")
                                                  public function hydrate(array $donnees)
                                                      {
                                                          foreach ($donnees as $key => $value)
                                                              {
                                                                  $method = 'set'.ucfirst($key);
                                                                     
                                                                      if(method_exists($this, $method))
                                                                          {
                                                                              $this->$method($value);
                                                                          }
                                                              }
                                                      }
                                                 
                                                  //Liste des getters
                                                  public function id()
                                                      {
                                                          return $this->_id;
                                                      }
                                                  public function nom()
                                                      {
                                                          return $this->_nom;
                                                      }
                                                  public function forcePerso()
                                                      {
                                                          return $this->_forcePerso;
                                                      }
                                                  public function degats()
                                                      {
                                                          return $this->_degats;
                                                      }
                                                  public function niveau()
                                                      {
                                                          return $this->_niveau;
                                                      }
                                                  public function experience()
                                                      {
                                                          return $this->_experience;
                                                      }
                                                 
                                                  //Liste des setters
                                                  public function setId($id)
                                                      {
                                                          // L'identifiant du personnage sera, quoi qu'il arrive, un nombre entier.
                                                          $this->_id = (int)$id;
                                                      }
                                                  public function setNom($nom)
                                                      {
                                                          //On verifie qu'il s'agit bien d'une chaine de caractere
                                                          if(is_string($nom) && strlen($nom)<= 30)
                                                              {
                                                                  $this->_nom = $nom;
                                                              }
                                                      }
                                                  public function setForcePerso($forcePerso)
                                                      {
                                                          $forcePerso = (int)$forcePerso;
                                                         
                                                          if($forcePerso >= 0 && $forcePerso <= 100)
                                                              {
                                                                  $this->_forcePerso = $forcePerso;
                                                              }
                                                      }
                                                  public function setDegats($degats)
                                                      {
                                                          $degats = (int)$degats;
                                                         
                                                          if($degats >= 0 && $degats <= 100)
                                                              {
                                                                  $this->_degats = $degats;
                                                              }
                                                      }
                                                  public function setNiveau($niveau)
                                                      {
                                                          $niveau = (int)$niveau;
                                                         
                                                          if($niveau >= 0)
                                                              {
                                                                  $this->_niveau = $niveau;
                                                              }
                                                      }
                                                  public function setExperience($exceptions)
                                                      {
                                                          $exp = (int)$exp;
                                                         
                                                          if($exp >= 0 && $exp <= 100)
                                                              {
                                                                  $this->_experience = $excp;
                                                              }
                                                      }
                                              }
                                          $perso = new Personnage([
                                            'nom' => 'Victor',
                                            'forcePerso' => 5,
                                            'degats' => 1,
                                            'niveau' => 1,
                                            'experience' => 2
                                          ]);

                                          $db = new PDO('mysql:host=localhost;dbname=personnage', 'root', '');
                                          $manager = new PersonnagesManager($db);

                                          $manager->add($perso);
                                          ?>

                                          et voici PersonnagesManager.php

                                          <?php
                                          class PersonnagesManager
                                              {
                                                  private $_db;//Instance de PDO
                                                 
                                                  public function __construct($db)
                                                      {
                                                          $this->setDb($db);
                                                      }
                                                  public function add(Personnage $perso)
                                                      {
                                                          // Préparation de la requête d'insertion.
                                                          // Assignation des valeurs pour le nom, la force, les dégâts, l'expérience et le niveau du personnage.
                                                          // Exécution de la requête.
                                                         
                                                          $q = $this->_db->prepare('INSERT INTO personnage(nom, forcePerso, degats, niveau, experience) VALUES
                                                                                  (:nom, :forcePerso, :degats; :niveau, :experience)');
                                                         
                                                          $q->bindValue(':nom', $perso->nom());
                                                          $q->bindValue(':forcePerso', $perso->forcePerso(),PDO::PARAM_INT);
                                                          $q->bindValue(':degats', $perso->degats(),PDO::PARAM_INT);
                                                          $q->bindValue(':niveau', $perso->niveau(),PDO::PARAM_INT);
                                                          $q->bindValue(':experience', $perso->experience(),PDO::PARAM_INT);
                                                         
                                                          $q->execute();
                                                      }
                                                  public function delete(Personnage $perso)
                                                      {
                                                          // Exécute une requête de type DELETE.
                                                          $this->_db->exec('DELETE FROM personnage WHERE id = '.$perso->id());
                                                      }
                                                  public function get($id)
                                                      {
                                                          // Exécute une requête de type SELECT avec une clause WHERE, et retourne un objet Personnage.
                                                          $id = (int)$id;
                                                         
                                                          $q = $this->_db->query('SELECT id, nom, forcePerso, degats, niveau, experience FROM personnage WHERE id = '.$id);
                                                          $donnees = $q->fetch(PDO::FETCH_ASSOC);
                                                         
                                                          return new Personnage($donnees);
                                                      }
                                                  public function getList()
                                                      {
                                                          // Retourne la liste de tous les personnages.
                                                          $perso = [];
                                                         
                                                          $q = $this->_db->query('SELECT id, nom, forcePerso, degats, niveau, experience FROM personnage ORDER BY nom');
                                                         
                                                          while($donnees = $q->fetch(PDO::FETCH_ASSOC))
                                                              {
                                                                  $perso[] = new Personnage($donnees);
                                                              }
                                                          return $perso;
                                                      }
                                                  public function update(Personnage $perso)
                                                      {
                                                          // Prépare une requête de type UPDATE.
                                                          // Assignation des valeurs à la requête.
                                                          // Exécution de la requête.   
                                                          $q = $this->_db->prepare('UPDATE personnage SET forcePerso = :forcePerso, degats = :degats, niveau = :niveau, experience = :experience WHERE id = ;id');
                                                         
                                                          $q->bindValue(':forcePerso', $perso->forcePerso(),PDO::PARAM_INT);
                                                          $q->bindValue(':degats', $perso->degats(),PDO::PARAM_INT);
                                                          $q->bindValue(':niveau', $perso->niveau(),PDO::PARAM_INT);
                                                          $q->bindValue(':experience', $perso->experience(),PDO::PARAM_INT);
                                                          $q->bindValue(':id', $perso->id(),PDO::PARAM_INT);
                                                         
                                                          $q->execute();
                                                      }
                                                  public function setDb(PDO $db)
                                                      {
                                                          $this->_db = $db;
                                                      }
                                                     
                                              }
                                          ?>

                                          Pouvez-vous me dire si c'est correcte.

                                          Car j'ai aucun enregistrement qui ce fait dans ma database.


                                          -
                                          Edité par angelus2812 6 février 2018 à 20:27:59

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            6 février 2018 à 21:37:25

                                            Je regarderais demain

                                            par contre tu peu mets ton codes dans 

                                            Icone </>

                                            Oh j'oubli ta base de données aussi

                                            Merci

                                            -
                                            Edité par LEPaul 6 février 2018 à 21:39:11

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                              6 février 2018 à 23:38:35

                                              angelus2812. Inséré les données manuellement pour testez on ne va pas passez le code au peigne fin puis fais différent teste si il y a une éventuelle erreur corrige là si tu peux pas fais le savoir sur le mooc.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Le but est d’être meilleur que hier, en apprenant chaque jour quelque chose de nouveau.
                                                7 février 2018 à 14:56:38

                                                Bonjour,

                                                En faite je ne reçois pas de message d'erreur.

                                                Mais lorsque je regarde dans MySql l'enregistrement ne se fait pas.

                                                J'ai cette partie du code:

                                                $perso = new Personnage([
                                                	'nom' => 'Victor',
                                                	'forcePerso' => 5,
                                                	'degats' => 0,
                                                	'niveau' => 1,
                                                	'experience' => 0
                                                ]);
                                                
                                                $db = new PDO('mysql:host=localhost;dbname=personnage','root','');
                                                $manager = new PersonnagesManager($db);
                                                
                                                $manger->add($perso);

                                                qui pointe vers cette partie de la classe PersonnagesManager.

                                                public function add(Personnage $perso);
                                                			{
                                                // Préparation de la requête d'insertion.
                                                // Assignation des valeurs pour le nom, la force, les dégâts, l'expérience et le niveau du personnage.
                                                // Exécution de la requête.
                                                
                                                $q = $this->_db->prepare('INSERT INTO personnage(nom, forcePerso, degats, niveau, experience) VALUES
                                                (:nom, :forcePerso, :degats; :niveau, :experience) ');
                                                			
                                                $q->bindValue(':nom', $perso->nom());
                                                $q->bindValue(':forcePerso',$perso->forcePerso(),PDO::PARAM_INT);
                                                $q->bindValue(':degats', $perso->degats(),PDO::PARAM_INT);
                                                $q->bindValue(':niveau', $perso->niveau(),PDO::PARAM_INT);
                                                $q->bindValue(':experience',$perso->experience(),PDO::PARAM_INT)
                                                				
                                                $q->execute();

                                                Je ne reçois pas message d'erreur. Et le scrip point bien vers ce scrip.

                                                Pensez-vous que mon probleme ce situe plus du coté da la data base?



                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  7 février 2018 à 17:16:08

                                                  Si tu veux être sur que ta connexion vers ta bd

                                                  mets 

                                                  catch (PDOException $e) {
                                                    echo "Erreur!: " . $e->getMessage() . "<br/>";
                                                    die();

                                                  Syntaxe de connexion  complet

                                                  $host_name = 'db#########.db.1and1.com';
                                                  $database = 'db#########';
                                                  $user_name = 'dbo#########';
                                                  $password = '<Veuillez saisir ici votre mot de passe.>';
                                                  
                                                  $dbh = null;
                                                  try {
                                                    $dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
                                                  } catch (PDOException $e) {
                                                    echo "Erreur!: " . $e->getMessage() . "<br/>";
                                                    die();
                                                  }


                                                  Il me semble aussi

                                                  dans ta function add(Personnage $perso)

                                                  //Avant Exécution la requête
                                                  t'as pas mets la connexion vers ta base de donnée

                                                  Autre truc prends cette d'habitude de préparées plusieurs situation de connexion croie moj c'est bien utile et mois d’emmerdements plus tard
                                                  Ce qui me concernant je crée une class de connexion à part puis tout les varriable et conditions dans un autre fichier

                                                   Concrètement class

                                                  class ConnectBDD
                                                  {
                                                  // CONSTRUCTEUR
                                                  public function Connect($Aide='',$Demande='')
                                                  {
                                                  define('Creation', '01-Decembre-2017' );
                                                  define('Objet', "Description du projet Objet de la classe" );
                                                  if($Aide=="F1"){$Explication="Fonction fait partir de la class CONSTRUCTEUR <br>Permets crée une connection a la base de donnée";return"<p>$Explication</p>";}
                                                  else 
                                                  {
                                                  require"Sql/SQL_Conf.inc.php"; 
                                                  if($Demande==Connect_Bdd){ try {$Base[Prexife] = new PDO("mysql:host=".$DB_serveur[Prexife].";dbname=".$DB_base[Prexife].";charset=utf8", "".$DB_utilisateur[Prexife]."", "".$DB_motdepasse[Prexife]."");} catch(Exception $e) {die('Erreur : '.$e->getMessage());} return $Base[Prexife] ; }
                                                  if($Demande==DateActuel){ $Demande = $this->DateActuel=  date('d-m-Y H:i:s');}
                                                  return $Demande;
                                                  }
                                                  }
                                                  
                                                  
                                                  }

                                                  Il se peu que t'aura besoin de connexion sur plusieurs base de données

                                                  Fichier données donc pour ici 

                                                  $IpHebergeur="127.0.0.1";
                                                  if($_SERVER[REMOTE_ADDR]==$IpHebergeur)
                                                  {
                                                  $Prexife="Local";
                                                  
                                                  $DB_serveur[$Prexife]="localhost";
                                                  $DB_base[$Prexife]="demo";
                                                  $DB_utilisateur[$Prexife]="root";
                                                  $DB_motdepasse[$Prexife]="";
                                                  }
                                                  else
                                                  {
                                                  $Prexife="Distance";
                                                  
                                                  $DB_serveur[$Prexife]="db#########.db.1and1.com";
                                                  $DB_base[$Prexife]="db#########";
                                                  $DB_utilisateur[$Prexife]="dbo#########";
                                                  $DB_motdepasse[$Prexife]="NEDITAPERSONNE";
                                                  }
                                                  
                                                  define('Prexife', "$Prexife");
                                                  define('Dossier_Export', "Dossier_Json");
                                                  define('Dossier_Json', "Json");
                                                  



                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                                    9 février 2018 à 16:45:31

                                                    Bonjour,

                                                    Merci pour vos conseille.

                                                    Bav

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 février 2018 à 22:14:49

                                                      Bonjour tout le monde,

                                                      J'ai une difficulté à comprendre cette partie ou ile est écrit

                                                      Une propriété de trait peut être statique. Mais attention, dans ce cas, chaque classe utilisant ce trait aura une instance indépendante de cette propriété.

                                                      En voici le code associé

                                                      <?php
                                                      trait MonTrait
                                                      {
                                                        protected $attr = 'Hello !';
                                                        
                                                        public function showAttr()
                                                        {
                                                          echo $this->attr;
                                                        }
                                                      }
                                                      
                                                      class MaClasse
                                                      {
                                                        use MonTrait;
                                                      }
                                                      
                                                      $fille = new MaClasse;
                                                      $fille->showAttr();

                                                      Merci d'avance !

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Informtion is potential power; Action is everything !
                                                        12 février 2018 à 10:25:45

                                                        Hel ba,

                                                        En gros tu peu utilisé le même le nom de fonction deux fois Ex :: Xyz ::

                                                        1 fois dans une class exemple class :: Xyz == Bonjour,

                                                        plus 1 fois dans (trait) trait:: Xyz == Tout le monde

                                                        et si t'a besoins d’appeler les deux fonction class + trait

                                                        il vas te sortir  Bonjour, Tout le monde 

                                                        Mise en garde

                                                        Certainement très pratique quand tu récupère des trucs chez un mec et y ajoutées les tiens, + évitées de Err fatal 

                                                        Là tu perdra l'harmonisation,

                                                        Car dans une fonction souvent on demande 

                                                        - Aller chercher une autres trucs ailleurs (class,fonction,Bd,Js,Css...) 

                                                        Un bout de fonction par ici plus par là bas... au bout du compte tu ne sera pas plus comment il tourne ton programme bonne chance pour tes futures interventions.

                                                        Donc pour moi, évite ça c'est mieux

                                                        Ha oui, j'oublie

                                                        Pour utiliser ton (trait) 

                                                        t'as pas besoins de faire 

                                                        Ex là, c'est pour une class:  $GrosBesoin = new Pipi ();

                                                        et en suite tu dit $GrosBesoin->Action(danstaclassPipi) ;

                                                        Pour  ton (trait) 

                                                        1 Tu déclare  

                                                        trait Change {

                                                            public function Pipi () {

                                                                echo 'Dans un coin...';

                                                            } 

                                                        }

                                                        2 - t'appelle directement la fonction 

                                                        $GrosBesoin->Pipi ();  // et là il s'affiche Dans un coin...

                                                        J'espère pas soufflé de connerie vérifier quand même 

                                                        -
                                                        Edité par LEPaul 12 février 2018 à 10:48:03

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Fidèle résumé de mes capacités ! Bon à rien, mauvais à tout. Faire le moins, mais BIEN
                                                          12 février 2018 à 19:26:40

                                                          Merci pour ta réponse mais est-ce que tu peux formater ton code et ajouter un code complet que je peux exécuter comme ça je comprendre une fois pour toute !

                                                          Merci beaucoup ! :)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Informtion is potential power; Action is everything !
                                                            13 février 2018 à 11:22:00

                                                            Bonjour à tous veuillez m'aider à trouver l'erreur dans ma requete svp.

                                                            -
                                                            Edité par Mohamed3Camara 13 février 2018 à 11:24:03

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              13 février 2018 à 12:44:59

                                                              Bonjour tout le monde, S'il vous plaît, pouvez vous me donner des exemples entre deux classes en relation de composition et d'autres en relation d'agrégation ?

                                                              D'aprés ce que j'ai compris ce qui suit est une composition :

                                                              <?php
                                                              
                                                              class Foo{
                                                                  public $bar;
                                                              
                                                                  public function __construct($bar){
                                                                      $this->bar = $bar;
                                                                  }
                                                              }
                                                              
                                                              class Bar{
                                                                  public $attribut = "Bar";
                                                              }
                                                              
                                                              $f = new Foo($b = new Bar);
                                                              
                                                              echo '<pre>';
                                                              var_dump($f);
                                                              echo '</pre>';
                                                              
                                                              

                                                              Ou plutôt comme ReflectionClass qui n'existera jamais sans être au préalable construite avec une autre classe !

                                                              Et l'aggrégation c'est quand les deux classe ont une interaction entre eux mais il ne sont pas interdépendant comme :

                                                              <?php
                                                              
                                                              class Foo{
                                                                  public $bar = array();
                                                              
                                                                  public function __construct($bar){
                                                                      array_push($this->bar, $bar);
                                                                  }
                                                              }
                                                              
                                                              class Bar{
                                                                  public $attribut = "Bar";
                                                              }
                                                              $b = new Bar;
                                                              $f = new Foo($b);
                                                              
                                                              echo '<pre>';
                                                              var_dump($f);
                                                              echo '</pre>';

                                                              Veuillez s'il vous plaît me donner plus d'exemple concrets svp !


                                                              -
                                                              Edité par ELJAOUHARI Hamza 13 février 2018 à 15:34:58

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              Informtion is potential power; Action is everything !

                                                              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