IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

"Undefined property" dans une fonction


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut "Undefined property" dans une fonction
    Bonjour à tous,

    Suite au passage à php 5.5, j'ai réalisé diverses adaptations sur un petit plugin qui m'avait été fourni par un développeur pour la gestion d'un serveur Trackmania Nations/United sous Manialive1_r267.

    Comme je ne suis pas développeur, je fais comme je peux mais là je cale sur une erreur
    Undefined property
    dans une des fonctions.

    Je sollicite donc votre expertise pour essayer de trouver l'origine du problème et le corriger.

    Pour résumer, au début de chaque course, cette fonction vérifie si les joueurs ont assez de «*Crédits*» pour participer sinon ils sont déconnectés, vérifie s'il y a assez de joueurs pour organiser un tournois, prélève les joueurs du prix de participation au tournois, constitue un «*pot*» à l'attention du gagnant et met à jour les widgets affichés ingame.

    La fonction est la suivante*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    function onChallengeListModified($curChallengeIndex, $nextChallengeIndex, $isListModified)
    {
         $this->debugLog("*** ChallengeListModified\n");
         if (!self::$connected) return;
    }
     
    function onBeginChallenge($challenge,$warmUp, $matchContinuation)
    {
         if (!self::$connected) return;
         $this->debugLog('*** BeginChallenge '.TMStrings::stripAllTmStyle($challenge['Name']));
         $this->connection->chatSendServerMessage(self::$prefSrv.'Begin Challenge',null,true);
     
         self::$prix = $this->getPrix(self::$idEvenement);
     
         // les spectateurs ne peuvent pas participer
         foreach($this->storage->spectators as $login=>$player)
         { // on interdit de jouer aux spectateurs pour la mise
                 $this->joueurs[$login]->ready = false;
                 $this->joueurs[$login]->spectator = true;
         }
         foreach($this->storage->players as $login=>$player)
         { // on passe tout le monde en ready = false
                 $this->joueurs[$login]->ready = false;
                 $this->joueurs[$login]->spectator = false;
         }
     
         // on fait le ménage : si pas assez de crédit on zappe
         self::$participants = 0;
         foreach($this->joueurs as $login=>$joueur)
         {
                 $this->joueurs[$login]->rank = 0;
                 $this->joueurs[$login]->best = -1;
                 $this->joueurs[$login]->credits = $this->getCredits($joueur->id_j);
                 if ($joueur->credits < self::$prix)
                 {
                         // on vire ceux qui n'ont plus rien a faire l▒|
                         $this->debugLog("* BeginChallenge : $login n'a pas assez de crédit");
                         $this->cacheWidget($login);
                         $this->cacheCredit($login);
                         $this->kickPlayer($login);
                         $this->joueurs[$login]->ready = false;
     
                 }
                 else
                 {
                         if ($joueur->spectator == false)
                         {
                                 $this->joueurs[$login]->ready = true;
                                 self::$participants++;
                         }
                 }
         }
     
         $this->debugLog('* BeginChallenge : Nb participants :'.self::$participants.' | Min : '.self::$nbMin);
         // si  nb joueur >= nbmin on joue sinon on attend de nouveau joueur
         if (self::$participants < self::$nbMin)
         {
                 self::$race = false;
                 $msg = self::$prefSrv.'Il n\'y a pas assez de joueurs (au moins '.self::$nbMin.' joueurs)';
                 $this->connection->chatSendServerMessage($msg,null,true);
                 $this->debugLog('* BeginChallenge : '.$msg);
                 $liste = $this->getListeJoueur();
         }
         else
         {
                 self::$race = true;
                 foreach($this->joueurs as $login=>$joueur)
                 {
                         if ($joueur->ready)
                         {
                                 $joueur->credits -= self::$prix;
                                 $this->afficheCredit($login,$joueur->credits);
                                 $this->joueurs[$login]->credits = $joueur->credits;
                                 $this->updateCredits($joueur->id_j,$joueur->credits);
                                 $this->connection->chatSendServerMessage(self::$prefPlayer.'Vous participez ▒|  cette map, il vous reste '.$joueu    r->credits.' credit(s).',$login,true);
                                 self::$pot += self::$prix;
                         }
                 }
                 $liste = $this->getListeJoueur();
                 $msg = 'Nouvelle donne avec un pot de '.self::$pot.'<br/>Participants : '.count($liste).' ('.TMStrings::stripColors(implode(',',$    liste)).')';
                 $this->updateHisto(self::$idEvenement,$msg);
                 $msg = self::$prefSrv.self::$participants. ' participants, le pot est de '.self::$pot.' crédits';
                 $this->connection->chatSendServerMessage($msg,null,true);
                 $this->debugLog('* BeginChallenge : '.$msg);
         }
     
         $this->setPot(self::$pot,self::$idEvenement);
     
         // on met a jour le widget GC
         $players= array_merge($this->storage->players,$this->storage->spectators);
         foreach($players as $login=>$p)
                 $this->afficheWidget($login,self::$pot,'','',$liste);
     
         $this->connection->executeMulticall();
    Alors j'ai l'erreur suivante que je ne sais pas comment corriger*:

    -> ErrorException with code 0
    Undefined property:
    ManiaLivePlugins\Monplugin\Monplugin::$joueurs
    - in
    /home/games/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/MonPlugin/Monplugin.php on line 249
    ...et la ligne 249 (correspond à la ligne 29 du code ci-dessus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($this->joueurs as $login=>$joueur)
    Pourriez-vous m'aider à identifier la source du problème pour la corriger*?

    Merci de vos suggestions...

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    semblerait que $this->joueurs soit inconnu.
    Cela voudrait dire que le traitement de $this->storage->spectators ne rentre pas dans la boucle foreach() et que le tableau est désespérément vide et idem pour $this->storage->players.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Bonjour rawsrc et merci pour ton message.

    Alors après analyse sur base de ta remarque, je trouve ceci dans mes logs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMServ/ManiaLive1_r267/logs/monPlugin/log_Runtime.txt:      ManiaLivePlugins\monPlugin\monPlugin->onBeginChallenge(Array, false,
    Se pourrait-il que ce soit la confirmation qu'il manque les données ?

    Pourtant, dans le même log, j'ai bien la confirmation de la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMServ/ManiaLive1_r267/logs/monPlugin/log_Runtime.txt:2016.03.11_12:35 [2016-03-11 12:35:50|MonPlugin] [Database] Database Connexion Ok !
    Comment remonter plus haut ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    comme je ne sais pas bien comment les interpréter, peut-être que les éléments relatifs à l'erreur pourraient aider à m'orienter...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    2016.03.12_21:16
        Occured on 12.03.2016 at 21:16:03 at process with ID #28200
        ---------------------------------
     -> ErrorException with code 0
        Undefined property: ManiaLivePlugins\monPlugin\monPlugin::$joueurs
      - in /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php on line 249
      - Stack: #0 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php(249): ManiaLive\Application\ErrorHandling::createExceptionFromError(8, 'Undefined prope...', '/home/monuser/TMS...', 249, Array)
               #1 [internal function]: ManiaLivePlugins\monPlugin\monPlugin->onBeginChallenge(Array, false, false)
               #2 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Callback/Event.php(28): call_user_func_array(Array, Array)
               #3 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Event/Dispatcher.php(52): ManiaLive\DedicatedApi\Callback\Event->fireDo(Object(ManiaLivePlugins\monPlugin\monPlugin))
               #4 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Connection.php(108): ManiaLive\Event\Dispatcher::dispatch(Object(ManiaLive\DedicatedApi\Callback\Event))
               #5 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(146): ManiaLive\DedicatedApi\Connection->executeCallbacks()
               #6 /home/monuser/TMServ/ManiaLive1_r267/bootstrapper.php(82): ManiaLive\Application\AbstractApplication->run()
               #7 {main}

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    je viens aussi de remarquer qu'au lancement du contrôleur Manialive, et seulement à ce moment, j'ai l'erreur suivante qui se produit sur un autre plugin (Yuggy), écrit à l'époque par le même programmeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Occured on 12.03.2016 at 22:08:41 at process with ID #29755
        ---------------------------------
     -> ErrorException with code 0
        mysqli_real_escape_string() expects parameter 1 to be mysqli, string given
      - in /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php on line 512
      - Stack: #0 [internal function]: ManiaLive\Application\ErrorHandling::createExceptionFromError(2, 'mysqli_real_esc...', '/home/monuser/TMS...', 512, Array)
               #1 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php(512): mysqli_real_escape_string('a:15:{i:0;a:4:{...', Object(ManiaLive\DedicatedApi\Connection))
               #2 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php(169): ManiaLivePlugins\Yuggy\Yuggy\Yuggy->setServerConfig()
               #3 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/PluginHandler/PluginHandler.php(157): ManiaLivePlugins\Yuggy\Yuggy\Yuggy->onReady()
               #4 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/PluginHandler/PluginHandler.php(682): ManiaLive\PluginHandler\PluginHandler->loadPlugins()
               #5 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/Event.php(39): ManiaLive\PluginHandler\PluginHandler->onInit()
               #6 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Event/Dispatcher.php(52): ManiaLive\Application\Event->fireDo(Object(ManiaLive\PluginHandler\PluginHandler))
               #7 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(130): ManiaLive\Event\Dispatcher::dispatch(Object(ManiaLive\Application\Event))
               #8 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLiveApplication/Application.php(38): ManiaLive\Application\AbstractApplication->init()
               #9 /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(137): ManiaLiveApplication\Application->init()
               #10 /home/monuser/TMServ/ManiaLive1_r267/bootstrapper.php(82): ManiaLive\Application\AbstractApplication->run()
               #11 {main}
    ... et la ligne en question est la suivante, j'y avais changé le "mysql" en "mysqli" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste = mysqli_real_escape_string(serialize($setting_map), $this->connection);
    Comment réécrire cette syntaxe pour mysqli puisque l'ajout du "i" ne suffit manifestement pas ?

    Se pourrait-il que cela provoque l'autre erreur en cascade ?

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    l'erreur t'est donnée en toutes lettres :
    mysqli_real_escape_string() expects parameter 1 to be mysqli, string given
    essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_real_escape_string($this->connection, serialize($setting_map));

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    merci pour la suggestion, toutefois cela ne semble pas fonctionner non plus avec cette syntaxe...

    j'ai passé tout mon dimanche à faire des tests, des vérif de logs, analyse de la db etc pour essayer de suivre le code et comprendre où est l'erreur mais la seule chose dont je sois actuellement à peu près sûr, c'est que les deux erreurs ne sont pas liées car la première a rapport à monplugin relativement aux données joueurs tandis que l'autre concerne le plugin yuggy et son erreur se produit dans une fonction qui écrit des données de config du(des) serveur(s) Trackmania dans la db...

    dans mes nombreux tests, il me semble avoir retrouvé sur mon serveur online, une version de l'installation qui ne produit pas ces erreurs (mais j'en ai vu d'autres dans les logs), je vais la récupérer et la tester sur mon serveur proto pour voir si je peux éventuellement repartir de cette version-là...

    je reste naturellement ouvert à toute réflexion...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Bon, ben j'ai l'impression d'avoir perdu tout un week-end pour rien et d'être revenu à la case départ car pas plus de chance avec la version du serveur online, curieusement sur mon proto j'ai les mêmes erreurs qu'au départ...

    pourtant toute la nuit et ce matin ça semblait fonctionner puis cet après-midi je mets ma distro à jour, je relance le serveur, le serveur Trackmania et le contrôleur manialive et paf, ça recommence les erreurs à répétition

    tout semble cependant se charger normalement au lancement de manialive, c'est au moment dirait-on du calcul du Server Rank que le premier problème arrive dans le plugin yuggy, puis après à chaque changement de map sur monPlugin comme le démontre le log suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    2016.03.15_14:10 [2016-03-15 14:10:25] XML-RPC connection established
    2016.03.15_14:10 [2016-03-15 14:10:25] Successfully authentified with XML-RPC server
    2016.03.15_14:10 [Attention] Threading disabled - this may cause performance issues!
    2016.03.15_14:10 [2016-03-15 14:10:26] Current map: GCStart_01N02
    2016.03.15_14:10 [PluginHandler] Start plugin load process:
    2016.03.15_14:10 [PluginHandler] is loading Standard\Menubar ...
    2016.03.15_14:10 [PluginHandler] is loading Standard\PluginManager ...
    2016.03.15_14:10 [PluginHandler] is loading Standard\Admin ...
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\Yuggy ...
    2016.03.15_14:10 [2016-03-15 14:10:26|Yuggy] Initialisation Plugin 210 . . .
    2016.03.15_14:10 [PluginHandler] is loading monPlugin ...
    2016.03.15_14:10 [2016-03-15 14:10:26|monPlugin] Initialisation Plugin 151 . . .
    2016.03.15_14:10 [2016-03-15 14:10:26|Yuggy] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|Yuggy] [Database] Database Connexion . . .
    2016.03.15_14:10 [2016-03-15 14:10:26|Yuggy] [Database] Database Connexion Ok !
    2016.03.15_14:10 [2016-03-15 14:10:26|monPlugin] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|monPlugin] [Database] Database Connexion . . .
    2016.03.15_14:10 [2016-03-15 14:10:26|monPlugin] [Database] Database Connexion Ok !
    2016.03.15_14:10 [2016-03-15 14:10:26|Yuggy] Loading Plugins for Yuggy :
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\Track ...
    2016.03.15_14:10 [2016-03-15 14:10:26|Track] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26|Track] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|Track] Database Acces Ok
    2016.03.15_14:10 [2016-03-15 14:10:26|Track] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\Player ...
    2016.03.15_14:10 [2016-03-15 14:10:26|Player] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26|Player] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|Player] Database Acces ok
    2016.03.15_14:10 [2016-03-15 14:10:26|Player] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\YuggyMenu ...
    2016.03.15_14:10 [2016-03-15 14:10:26|YuggyMenu] Initialisation 200
    2016.03.15_14:10 [2016-03-15 14:10:26|YuggyMenu] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|YuggyMenu] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\Karma ...
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [Karma] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [Karma] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [Karma] Database Acces Ok
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [Karma] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\LiveRecs ...
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [LiveRecs] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [LiveRecs] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [LiveRecs] Database Acces Ok
    2016.03.15_14:10 [2016-03-15 14:10:26] [Yuggy] [LiveRecs] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\ChatCmd ...
    2016.03.15_14:10 [2016-03-15 14:10:26|ChatCmd] Initialisation Plugin 205
    2016.03.15_14:10 [2016-03-15 14:10:26|ChatCmd] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26|ChatCmd] Database Acces Ok
    2016.03.15_14:10 [2016-03-15 14:10:26|ChatCmd] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\RandMsg ...
    2016.03.15_14:10 [2016-03-15 14:10:26] [RandMsg] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26] [RandMsg] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26] [RandMsg] Plugin Ready
    2016.03.15_14:10 [PluginHandler] is loading Yuggy\Spectator ...
    2016.03.15_14:10 [2016-03-15 14:10:26] [Spectator] Initialisation Plugin 200
    2016.03.15_14:10 [2016-03-15 14:10:26] [Spectator] Loading Plugin
    2016.03.15_14:10 [2016-03-15 14:10:26] [Spectator] Plugin Ready
    2016.03.15_14:10 [Yuggy] initClassement
    2016.03.15_14:10 [2016-03-15 14:10:28|Yuggy] Calcul Server Rank
    2016.03.15_14:10
    2016.03.15_14:10  -> ErrorException with code 0
    2016.03.15_14:10     mysqli_real_escape_string() expects parameter 1 to be mysqli, object
          given
    2016.03.15_14:10   - in
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php on line 512
    2016.03.15_14:10   - Stack: #0 [internal function]:
          ManiaLive\Application\ErrorHandling::createExceptionFromError(2,'mysqli_real_esc...', '/home/monuser/TMN...', 512, Array)
    2016.03.15_14:10            #1
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php(512):
          mysqli_real_escape_string(Object(ManiaLive\DedicatedApi\Connection),'a:38:{i:0;a:4:{...')
    2016.03.15_14:10            #2
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/Yuggy/Yuggy/Yuggy.php(169):
          ManiaLivePlugins\Yuggy\Yuggy\Yuggy->setServerConfig()
    2016.03.15_14:10            #3
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/PluginHandler/PluginHandler.php(157): ManiaLivePlugins\Yuggy\Yuggy\Yuggy->onReady()
    2016.03.15_14:10            #4
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/PluginHandler/PluginHandler.php(682):
          ManiaLive\PluginHandler\PluginHandler->loadPlugins()
    2016.03.15_14:10            #5
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/Event.php(39): ManiaLive\PluginHandler\PluginHandler->onInit()
    2016.03.15_14:10            #6
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Event/Dispatcher.php(52):
          ManiaLive\Application\Event->fireDo(Object(ManiaLive\PluginHandler\PluginHandler))
    2016.03.15_14:10            #7
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(130):
          ManiaLive\Event\Dispatcher::dispatch(Object(ManiaLive\Application\Event))
    2016.03.15_14:10            #8
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLiveApplication/Application.php(38): ManiaLive\Application\AbstractApplication->init()
    2016.03.15_14:10            #9
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(137): ManiaLiveApplication\Application->init()
    2016.03.15_14:10            #10
          /home/monuser/TMServ/ManiaLive1_r267/bootstrapper.php(82):
          ManiaLive\Application\AbstractApplication->run()
    2016.03.15_14:10            #11 {main}
    2016.03.15_14:10
    2016.03.15_14:10 [2016-03-15 14:10:30|Track] Evenement EndRound
    2016.03.15_14:10 [2016-03-15 14:10:30|Track] Evenement EndRace (GCStart_01N02)
    2016.03.15_14:10 [2016-03-15 14:10:30|Track] Evenement EndChallenge (GCStart_01N02)
    2016.03.15_14:10 [2016-03-15 14:10:30|Yuggy] Evenement ChallengeListModified
    2016.03.15_14:10 [2016-03-15 14:10:30] Map change: GCStart_01N02 -> GCStart_01C05
    2016.03.15_14:10
    2016.03.15_14:10  -> ErrorException with code 0
    2016.03.15_14:10     Undefined property:
          ManiaLivePlugins\monPlugin\monPlugin::$joueurs
    2016.03.15_14:10   - in
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php on line 249
    2016.03.15_14:10   - Stack: #0
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php(249):
          ManiaLive\Application\ErrorHandling::createExceptionFromError(8,'Undefined prope...', '/home/monuser/TMN...', 249, Array)
    2016.03.15_14:10            #1 [internal function]:
          ManiaLivePlugins\monPlugin\monPlugin->onBeginChallenge(Array, false,false)
    2016.03.15_14:10            #2
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Callback/Event.php(28): call_user_func_array(Array, Array)
    2016.03.15_14:10            #3
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Event/Dispatcher.php(52):
          ManiaLive\DedicatedApi\Callback\Event->fireDo(Object(ManiaLivePlugins\monPlugin\monPlugin))
    2016.03.15_14:10            #4
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Connection.php(108):
          ManiaLive\Event\Dispatcher::dispatch(Object(ManiaLive\DedicatedApi\Callback\Event))
    2016.03.15_14:10            #5
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(146):
          ManiaLive\DedicatedApi\Connection->executeCallbacks()
    2016.03.15_14:10            #6
          /home/monuser/TMServ/ManiaLive1_r267/bootstrapper.php(82):
          ManiaLive\Application\AbstractApplication->run()
    2016.03.15_14:10            #7 {main}
    2016.03.15_14:10
    2016.03.15_14:10 [2016-03-15 14:10:30|Track] Evenement BeginChallenge (GCStart_01C05)
    2016.03.15_14:10 [2016-03-15 14:10:31|Track] Evenement BeginRound
    2016.03.15_14:15 [2016-03-15 14:15:34|Track] Evenement EndRound
    2016.03.15_14:15 [2016-03-15 14:15:34|Track] Evenement EndRace (GCStart_01C05)
    2016.03.15_14:15 [2016-03-15 14:15:34|Track] Evenement EndChallenge (GCStart_01C05)
    2016.03.15_14:15 [2016-03-15 14:15:34|Yuggy] Evenement ChallengeListModified
    2016.03.15_14:15 [2016-03-15 14:15:35] Map change: GCStart_01C05 -> GCStart_01A03
    Cependant l'erreur dans yuggy se produit dans une fonction qui ne semble pas avoir rapport au Serveur Rank alors comme c'est une erreur distincte de celle de monPlugin, je vais ouvrir un autre sujet pour cette erreur-là et garder ce sujet-ci pour l'erreur de monPlugin.

    Du coup, pour en revenir à monPlugin, comment pourrais-je remonter à ce qui devrait alimenter $this->joueurs ?

    Merci de votre éclairage...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Bien, alors il me semble que le départ de l'erreur pourrait se trouver dans la fonction qui récupère les joueurs inscrits dans la db car j'ai notamment trouvé ceci dans les logs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    2016.03.15_16:49 [2016-03-15 16:49:47|Track] Evenement BeginRound
    2016.03.15_16:53
    2016.03.15_16:53  -> ManiaLive\Database\QueryException with code 1064
    2016.03.15_16:53     You have an error in your SQL syntax; check the manual that
          corresponds to your MySQL server version for the right syntax to use near
          '' at line 5
    2016.03.15_16:53   - in
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Database/MySQL/Connection.php on line 151
    2016.03.15_16:53   - Stack: #0
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php(648):
          ManiaLive\Database\MySQL\Connection->query('\n\t\t\t\tSELECT id_...')
    2016.03.15_16:53            #1
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLivePlugins/monPlugin/monPlugin.php(400):
          ManiaLivePlugins\monPlugin\monPlugin->getGuestJoomla(0)
    2016.03.15_16:53            #2 [internal function]:
          ManiaLivePlugins\monPlugin\monPlugin->onPlayerConnect('monplayer',false)
    2016.03.15_16:53            #3
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Callback/Event.php(28): call_user_func_array(Array, Array)
    2016.03.15_16:53            #4
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Event/Dispatcher.php(52):
          ManiaLive\DedicatedApi\Callback\Event->fireDo(Object(ManiaLivePlugins\monPlugin\monPlugin))
    2016.03.15_16:53            #5
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/DedicatedApi/Connection.php(108):
          ManiaLive\Event\Dispatcher::dispatch(Object(ManiaLive\DedicatedApi\Callback\Event))
    2016.03.15_16:53            #6
          /home/monuser/TMServ/ManiaLive1_r267/libraries/ManiaLive/Application/AbstractApplication.php(146):
          ManiaLive\DedicatedApi\Connection->executeCallbacks()
    2016.03.15_16:53            #7
          /home/monuser/TMServ/ManiaLive1_r267/bootstrapper.php(82):ManiaLive\Application\AbstractApplication->run()
    2016.03.15_16:53            #8 {main}
    Alors, la ligne 151 de Connection.php donne seulement le déclencheur de l'erreur, en revanche à la ligne 648 de monPlugin, on est dans la fonction qui récupère la liste des joueurs inscrits dans la db et il y aurait donc un problème de syntaxe dans la requête sql...

    Voilà la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function getGuestJoomla($ide)
    625         { // on recupere  le lien joueur-> prefbdd
    626                 $msg = " - getGuestJoomla : événement $ide => ";
    627                 $sql = "SELECT liste
    628                         FROM
    629                                 ".self::$prefbdd."_trackmania_evenement
    630                         WHERE
    631                                 id = $ide
    632                                 ";
    633                 $recordset = self::$DB->query($sql);
    634                 $nb = $recordset->recordCount();
    635                 $r = $recordset->fetchAssoc();
    636                 $liste = explode(',',$r['liste']);
    637
    638                 foreach($liste as $l)
    639                 {
    640                         $sql = "
    641                                 SELECT id_j,login
    642                                 FROM
    643                                         ".self::$prefbdd."_trackmania_users
    644                                 WHERE
    645                                         id = $l
    646                                         ";
    647
    648                         $recordset = self::$DB->query($sql);
    649                         $nb = $recordset->recordCount();
    650                         $r = $recordset->fetchAssoc();
    651                         $guest[$r['login']] = $r['id_j'];
    652                 }
    653                 $msg .= implode(',',$liste);
    654                 $this->debugLog($msg);
    655                 return $guest;
    656         }
    Comment dès lors réécrire la requête ?

    Merci de votre aide...


    EDIT: à tout hasard, ma version mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql  Ver 14.14 Distrib 5.5.47, for debian-linux-gnu (i686) using readline 6.2

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    On progresse...

    En principe déjà une erreur de moins, l'erreur de syntaxe tient en 2 simples cotes, j'ai trouvé ça en refaisant la requête dans phpmyadmin

    Ainsi la requête devait s'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT 'liste' ...
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT liste ...
    à quoi ça tient

    Je continue mes tests pour l'erreur suivante...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 131
    Points : 67
    Points
    67
    Par défaut
    Bien,

    J'ai procédé à pas mal de vérifications entre le code, la db, les logs... reporté des requêtes du code directement dans phpmyadmin et j'ai tout de même constaté des incohérences de sorte que j'ai finalement décidé de vider les tables et recommencer le process d'enregistrement des données (serveur, événement, joueur, inscription etc...) afin que tout corresponde bien car à force de travailler directement dans la db en parallèle avec mon cms, je suspecte avoir créé moi-même certaines incohérences.

    Donc après tout cela, ça commence à aller mieux mais il y a encore des corrections à apporter.

    Dès lors, comme cela va d'une erreur à l'autre, je vais clôturer ce sujet et en ouvrir un autre plus orienté sur le débuggage de mon composant, ça me semblerait plus logique que d'ouvrir comme ici un sujet sur un problème précis en allant quand même d'un problème à l'autre.

    Merci rawscr pour l'aide dans ce sujet-ci...

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/04/2010, 16h08
  2. Réponses: 4
    Dernier message: 04/09/2008, 11h32
  3. problème de passage de valeur dans une fonction
    Par jeremie74 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 21/09/2007, 18h30
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo