Constructeur JTable

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Constructeur JTable

    Bonjour,
    Objet: Développement d'un composant de Gestion d'élevage: J! Breeding Manager.

    login: invite
    pwd: password

    (Plateforme de test)

    Quelles sont les solutions pour passer une variable depuis le Model, vers le Constructeur JTable. Dans ce cas $this->current_table, prends la valeur de la race (de chiens) en cours. J'ai essayé plusieurs chose sans succès, je sèche !
    Le but est de rendre le constructeur dynamique.

    function Tableetalon(& $db) {

    $current_table = $this->getDataRace() ;

    parent::__construct('#__' . $current_table . '_etalons', 'id', $db);
    }


    Merci pour vos soluces !
    Marc.
    Dernière édition par liubov à 05/05/2011, 10h15
    Developper of JBreeding Manager: http://www.jbreeding.fr/
    J-cook Referral : Service Générateur d'Extensions pour Joomla

  • #2
    Re : Constructeur JTable

    perso j'avais fait un truc du genre, une table par "type" créée à chaque fois qu'on crée un type, mais du coup j'avais aussi du créer les fonctions de stockage et suppression des données. Je n'avais pas pu passer par JTable étant donné que mes champs étaient à chaque fois différents.
    Dans ton cas il y a peut etre une solution, mais vu que tu utilises l'API joomla il faut regarder si tu peux passer un parametre dans les fonctions
    Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
    http://www.template-creator.com Outil de création de templates
    Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

    Commentaire


    • #3
      Re : Constructeur JTable

      Merci ced,

      Dans mon cas, toutes les table de "critères" ont les mêmes champs, c'est pour ça que je peux passer pas un constructeur unique, mais dynamique pour le nom des tables (1 pour chaque race)

      Oui, c'est exactement ce que j'essaye de faire, le prob, c'est que la Class Jtable, n’hérite pas des objets du Model, (ou je m'y pas mal ?)
      Et c'est ce que je recherche à faire!
      Dernière édition par liubov à 05/05/2011, 10h20
      Developper of JBreeding Manager: http://www.jbreeding.fr/
      J-cook Referral : Service Générateur d'Extensions pour Joomla

      Commentaire


      • #4
        Re : Constructeur JTable

        dans ce cas ce que je ne comprends pas c'est pourquoi tu as besoin de plusieurs tables, crées un champ race ID et un champ race name et tu fais tes requetes en fonction de ces champs là. Je ne pense pas que créer une table par race soit la solution
        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
        http://www.template-creator.com Outil de création de templates
        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

        Commentaire


        • #5
          Re : Constructeur JTable

          Salut liubov,

          Envoyé par liubov Voir le message
          Le but est de rendre le constructeur dynamique.
          Si j'ai bien compris ta question, je rejoins ced : quelles différences y-a-t'il entre jos_husky_etalons et jos_labrador_etalons ?

          Si la structure de la table est identique, il serait plus efficace d'avoir une et une seule table avec un champs "race_id" qui serait une clef externe vers une table jos_compname_race où tu aurais un champs ID et un champs NOM pour décrire la race du chien.

          Qu'en penses-tu ?
          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire


          • #6
            Re : Constructeur JTable

            un champs "race_id" qui serait une clef externe vers une table jos_compname_race où tu aurais un champs ID et un champs NOM pour décrire la race du chien
            Voilà en fait c'est ça que je voulais dire aussi , mais tu l'exprimes mieux que moi lol
            Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
            http://www.template-creator.com Outil de création de templates
            Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

            Commentaire


            • #7
              Re : Constructeur JTable

              Peut-être... peut-être pas : c'est toi, avant moi, qui a compris et suggéré l'ajout d'un champs additionnel au lieu d'une table par race.

              Rendons à Cédar ce qui est à Cédar
              Christophe (cavo789)
              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

              Commentaire


              • #8
                Re : Constructeur JTable

                Salu Chris ! content de te revoir !!!
                En fait, j'ai fait evolué mon composant originel, vers un composant de gestion "multi-race".
                Perso, madame élève des poneys shetland et des huskies de Sibérie. J'ai voulu faire une séparation physique des tables propres à la race. De plus, pour une même race (de chiens), impossible d'avoir 2 noms identiques côté SCC (société Centrale Canine). Du coup, ça simplifie. Et dans le cas de la suppression d'une race, je supprime les 4 tables liées.
                jos_Husky_etalons
                jos_Husky_lices
                jos_Husky_pedigree
                jos_Husky_portee

                jos_Carlin_etalons
                jos_Carlin_lices
                jos_Carlin_pedigree
                jos_Carlin_portee

                Je gère bien le "Race COURANTE" définie comme défault. sauf dans JTable ou je n'arrive pas à récupérer cette variable.
                Developper of JBreeding Manager: http://www.jbreeding.fr/
                J-cook Referral : Service Générateur d'Extensions pour Joomla

                Commentaire


                • #9
                  Re : Constructeur JTable

                  Envoyé par liubov Voir le message
                  Du coup, ça simplifie.
                  Ben non puisque tu recherches une solution à un problème

                  Envoyé par liubov Voir le message
                  Et dans le cas de la suppression d'une race, je supprime les 4 tables liées.
                  Si tu n'avais que quatre tables au total ce serait :
                  DELETE FROM jos_etalons WHERE RaceId=5; (en supposant que les Carlin sont le ID 5)
                  DELETE FROM jos_lices WHERE RaceId=5;
                  DELETE FROM jos_pedigree WHERE RaceId=5;
                  DELETE FROM jos_portee WHERE RaceId=5;

                  Cela simplifierait ta programmation

                  Note : il est préférable de changer les noms des tables afin d'y inclure le nom de ton composant. C'est un standard dans le dév. Joomla

                  ==> jos_moncomp_etalons.


                  Sinon, si tu veux continuer sur ta lancée, vu que je n'utilise plus de Model, je ne saurais trop te conseiller.

                  Perso, j'ai déclare une table de classe pour chaque table de mon composant ==>

                  Code PHP:
                  class TableAllEvents_Agenda extends JTable  {
                     function 
                  TableAllEvents_Agenda(&$db) {
                        
                  parent::__construct('#__allevents_agenda''id'$db);
                        return;
                     }   

                  Et là, pas de dynamisme vu que je donne explicitement le nom de ma table.


                  Que penses-tu de notre idée ? Si cela ne remets pas en cause trop de lignes de code, je pense qu'il serait préférable de partir dans cette direction car c'est le standard (une table dans la DB = un fichier .php de déclaration de cette table). Maintenant, ce n'est pas une obligation; suffirait de trouver l'astuce de faire du dynamisme.
                  Christophe (cavo789)
                  Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                  Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                  Commentaire


                  • #10
                    Re : Constructeur JTable

                    Pour être complet : dans mon composant AllEvents, je surcharge JTable comme ceci :

                    Fichier alleventstable.php
                    Code PHP:
                     abstract class AETable extends JTable {

                       protected 
                    $_cMaConstante;    

                        function 
                    __construct($table$key, &$db$constante=null) {
                           
                          
                    $this->_cMaConstante $constante;
                          return;

                       } 
                    // function __construct()  

                     

                    puis j'ai

                    Code PHP:
                    require_once ('alleventstable.php');

                    class 
                    TableAllEvents_Agenda extends AETable 

                    class TableAllEvents_Agenda extends JTable  {
                       function 
                    TableAllEvents_Agenda(&$db) {
                          
                    parent::__construct('#__allevents_agenda''id'$db'La valeur que je passe');
                          return;
                       }   

                    Tous mes fichiers de classe de tables sont ainsi codés ce qui me permet d'avoir un ancêtre commun AETable qui surcharge JTable et là, dans cette optique, j'ai un certain dynamisme dans mes méthodes MAIS pas dans le nom de la table vu que, comme je le disais, à chaque table, j'ai une classe de table.
                    Christophe (cavo789)
                    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                    Commentaire


                    • #11
                      Re : Constructeur JTable

                      Merci pour vos réponses!

                      C'était bien comme cela à l'origine, avec mes 4 tables 'Husky'. Il n'y avait pas de race_id, certe puisque je ne gérais qu'une seule race de chien, les Huskies.
                      Et effectivement, je me suis posé cette question, mais pour la raison de protection, je ne suis pas parti comme cela! Maintenant rien n'est gravé, si je suis mal parti, je ferai machine arrière toute !
                      Ok, pour le rename des Tables avec le nom du Composant, si c'est le standard, faut pas déroger.

                      Maintenant, je ne trouvais pas cela aberrant de rendre le Constructeur dynamique depuis le Model :
                      function store($data)
                      {
                      $current_table = $this->getDataRace() ;
                      $row =& $this->getTable(); // ex: table Etalons
                      ...

                      puisque chaque table à le même format, ce sont des copies.

                      Merci pour vos remarques en tout cas, je vais creuser !
                      Developper of JBreeding Manager: http://www.jbreeding.fr/
                      J-cook Referral : Service Générateur d'Extensions pour Joomla

                      Commentaire


                      • #12
                        Re : Constructeur JTable

                        Faut reconnaître quand on complique !
                        J'introduis donc un 'race_id' dans chacune de 4 Tables, ce sera effectivement plus simple côté gestion, et ça devrait pas être trop long de reprendre le code MVC.
                        Le rename est fait également!
                        jos_jbreedm_chenil
                        jos_jbreedm_etalons
                        jos_jbreedm_lices
                        jos_jbreedm_pedigree
                        jos_jbreedm_portee
                        jos_jbreedm_races
                        jos_jbreedm_robes
                        jos_jbreedm_sexes
                        jos_jbreedm_yeux

                        Merci à tous les deux pour vos comments !
                        Alors Christophe, on se revoit au prochain JDay, en 2012 ?
                        Marc.
                        Dernière édition par liubov à 05/05/2011, 17h17
                        Developper of JBreeding Manager: http://www.jbreeding.fr/
                        J-cook Referral : Service Générateur d'Extensions pour Joomla

                        Commentaire


                        • #13
                          Re : Constructeur JTable

                          Envoyé par liubov Voir le message
                          Alors Christophe, on se revoit au prochain JDay, en 2012 ?
                          Je me suis éclaté à Lyon alors c'est très très probable

                          Note que Cédric y était aussi; il a animé une conférence sur la création de template Joomla.

                          Au plaisir.
                          Christophe (cavo789)
                          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X