Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

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

  • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

    C'est là que "$this->_db->Quote($this->$k[$i])"
    essaie d'analyser $this->$k[$i] sans la fonction Quote
    sinon regarde ce que contient $k[$i]
    faut remonter à la source comme ça afin de voir ce que contiennent tes variables, avec un var_dump par exemple
    $this->$k[$i]
    devrait renvoyer une valeur stockée en amont dans la classe, par exemple
    $this->app_id
    tu dois donc avoir un truc avant cela qui va injecter les valeurs dans les variables de la classe
    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


    • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

      Merci Cédric !
      En fait, implode($k) ne renvoie que les noms des champs, et dans la fonction de personform.php qui appelle ensuite store(), je ne vois pas de $this->app_id, c'est pourquoi je ne comprends pas pourquoi php 5.6 renvoie la valeur et pas php 7.
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

        Complément : j'utilise dans cette fonction la ligne pour J-dump "dump($this->$k[$i],'where_value');" qui, en retour, me montre que cette valeur est vide sous PHP 7 alors qu'elle contient la valeur du champ à chercher dans l'index.
        A la fin de la boucle, en ajoutant
        dump($k[$i],'ki');
        dump($this->$k[$i],'where_value');
        le résultat montre que faute de valeur, ici lors de l'ajout d'une date de naissance, après insertion de l'événement dans une table, au lieu de mettre à jour l'individu lors du deuxième passage, il ne le trouve pas et donc provoque un "Insert" au lieu d'un "Update".
        store event
        [string] ki = "app_id"
        [null] where_value
        [string] ki = "person_id"
        [null] where_value
        [string] ki = "orderNumber"
        [null] where_value
        [null] result
        Insert
        [boolean] ret = TRUE
        even sauvegardé
        save person
        [string] statut = "loaded"
        Store the table to the database
        [string] ki = "app_id"
        [null] where_value
        [string] ki = "id"
        [null] where_value
        [null] result
        Insert
        Dans le fichier personform.php, je ne trouve pas de $this->app_id, mais
        $tabEvent->app_id = $form['person']['app_id'];
        dont je ne vois pas comment la valeur peut se retrouver dans $this->_db->Quote($this->$k[$i]) sous PHP 5.6 et pas sous PHP 7. Et $k n'existe pas dans personform.php mais est initialisé dans function store() pour récupérer les noms des champs d'index.
        Dernière édition par RobertG à 24/01/2017, 08h10
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

          2 choses. Tu as le model et la table
          model :
          $tabEvent = JTable::getInstance('joaktree_person_events', 'Table');
          donc $tabEvent est une instance de ta table qui sera $this dans la classe table
          // Bind the form fields to the table
          $tabEvent->app_id = $form['person']['app_id'];
          stocke donc l'info "app_id" dans l'instance de la table, et dans la classe de la table tu le retrouves avec $this->app_id

          jusque là tout est normal
          pourquoi tu n'as pas de valeur ? surement parce que $form['person']['app_id'] est null
          à vérifier, faut remonter le truc. Tu peux par exemple tester dans le model
          $tabEvent->app_id = 'toto';
          et vérifier que tu récupères la valeur dans la table avec ton $this->$k[$i]

          si oui, il faut donc trouver pourquoi ton $form['person']['app_id'] ne contient pas la valeur souhaitée. Un souci au niveau du filtrage des données du formulaire ?
          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


          • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

            Bonjour,

            pourquoi tu n'as pas de valeur ?
            Robert, JDump gère assez mal les objets, il faudrait essayer avec un var_dump comme le préconise Cedric
            UP, le plugin universel à découvrir sur https//up.lomart.fr
            bgMax
            , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

            Commentaire


            • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

              Merci Cédric, mais les valeurs sont bien dans $tabEvent-> ou dans les tableaux des autres fonctions qui font ensuite appel à store().
              Par exemple, lors de l'ajout d'un événement "naissance", je récupère les infos avec jdump :
              $tabEvent->app_id = $form['person']['app_id'];
              dump($form['person']['app_id'],'app_id');
              dump($tabEvent->app_id,'event->app_id');
              et j'obtiens
              [string] app_id = "6"
              [string] event->app_id = "6"
              Mais impossible sous PHP 7 de récupérer cette valeur dans $this->$k, alors que PHP 5.6 me la renvoie bien.
              Dans store(), j'ai donc le nom du champ index cherché, mais pas sa valeur :
              champ = "app_id"
              [string] where_value = "''"
              Il se passe donc bien quelque chose de particulier avec PHP 7, mais je n'arrive pas à trouver pourquoi cette perte d'infos.
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                Merci lomart.
                jdump ou pas, le fait est que la requête est incorrecte, il n'y a pas de valeur récupérée par PHP 7 pour correspondre au champ de la table que donne $this->$k[$i], d'où le "Insert" qu'on voit en bas de la citation de mon message #123 : faute d'avoir retrouvé l'individu dont l'app_id est 6 et l'id "JT000000098" par exemple pour utiliser "update", on obtient un "Insert" et on plante avec un "duplicate entry".

                Complément : j'ai essaye var_dump, mais comme ça plante avec le duplicate entry, rien ne s'affiche, j'ai donc réutilisé jdump qui me donne par exemple 'app_id'='' et pas '6' comme en PHP 5.6 (6 étant l'id de la source Gedcom sur laquelle je tente d'insérer ou modifier des infos.
                Dernière édition par RobertG à 24/01/2017, 09h53
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                Commentaire


                • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                  j'ai essaye var_dump, mais comme ça plante avec le duplicate entry
                  var_dump suivi de "die;" te permet de bloquer les instructions et éviter le plantage. Ca va bien sur tout couper et ne plus rien afficher à part ton var_dump et le code exécuté avant

                  tu as ton rapport d'erreur sur STRICT ? tu n'as pas de warning ?
                  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


                  • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                    peut etre essayer de forcer le strict en haut du fichier
                    declare(strict_types=1);
                    pour voir si ça te renvoit des infos
                    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


                    • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                      Le rapport d'erreur de Joomla! est à "développement".
                      Quand ça plante, je n'ai que la page avec le cadre à entête en rouge avec la mention "duplicate entry", lié au fait que la valeur n'étant pas récupérée, la requête ne renvoie pas d'enregistrement et le script considère donc qu'il faut faire une insertion.
                      $wheres[] = ' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($this->$k[$i]).' '; /// RRG 23-01-2017 ajout $this (OK PHP 5.6)
                      //$wheres[] = ' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($k[$i]).' ';
                      var_dump($wheres[$i]);
                      die;
                      me renvoie
                      string(15) `app_id` = '' "
                      précédé de
                      Notice: Array to string conversion in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 333

                      Notice: Undefined property: TableJoaktree_person_events::$Array in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 333
                      ce qui semble vouloir dire que $this->_db->Quote($this->$k[$i]) renvoie une valeur en PHP 5.6 et un tableau en PHP 7 !
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                      Commentaire


                      • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                        pourquoi as-tu du ajouter le $this ? chez moi il y est dans le fichier ligne 335
                        $wheres[] = ' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($this->$k[$i]).' ';
                        et
                        var_dump($wheres[$i]);
                        die;
                        ne devrait pas plutot etre
                        var_dump($this->$k[$i]);
                        die;
                        ?
                        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


                        • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                          Le "$this" ajouté (en gras) a dû l'être pour que ça fonctionne en 5.6, sinon, je récupérais seulement le nom du champ.
                          $wheres[] = ' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($this->$k[$i]).' ';
                          Pour le var_dump, j'ai essayé plusieurs variables pour les isoler ou, ici, avoir le contenu de la clause "where". En revenant au code d'origine, en fait :
                          $wheres[] = ' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($k[$i]).' ';
                          var_dump($this->_db->Quote($k[$i]));
                          var_dump($this->_db->Quote($this->$k[$i]));
                          die;
                          me renvoie
                          string(8) "'app_id'"
                          Notice: Array to string conversion in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 337

                          Notice: Undefined property: TableJoaktree_person_events::$Array in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 337
                          string(2) "''"
                          la ligne 337 étant le deuxième var_dump dont la valeur est vide mais considéré comme un tableau, si je comprends bien le message...
                          En PHP 5.6, j'ai ceci comme réponse des var_dump cités :
                          string(8) "'app_id'" string(3) "'6'"
                          Dernière édition par RobertG à 24/01/2017, 10h57
                          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                          Commentaire


                          • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                            essaie $this->{$k[$i]}

                            Commentaire


                            • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                              Je viens de vérifier dans la version 1.5.1 que j'avais récupérée en septembre 2014 et j'ai bien en effet, comme toi, ce $this que j'avais dû précédemment supprimer sans le noter.
                              Je teste donc de nouveau avec la bonne ligne et PHP 5.6 renvoie :
                              string(8) "'app_id'" string(3) "'6'"
                              alors que PHP 7 renvoie :
                              Notice: Array to string conversion in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 333

                              Notice: Undefined property: TableJoaktree_person_events::$Array in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 333
                              string(8) "'app_id'"
                              Notice: Array to string conversion in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 337

                              Notice: Undefined property: TableJoaktree_person_events::$Array in /home/www/developpement/newjoaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 337
                              string(2) "''"
                              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                              Commentaire


                              • Re : Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

                                comme ecris plus haut, je pense que le probleme vient simplement du $this->$k[$i], qui est peut etre interprete comme {$this->$k}[$i], au lieu de $this->{$k[$i]}

                                ensuite, les espaces ne servent a rien au debut et a la fin de la clause where
                                $query->where($this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($this->{$k[$i]}));

                                Commentaire

                                Annonce

                                Réduire
                                Aucune annonce pour le moment.

                                Partenaire de l'association

                                Réduire

                                Hébergeur Web PlanetHoster
                                Travaille ...
                                X