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

MkFramework Discussion :

Erreur suite à application de la FAQ "Automatiser un retraitement sur des enregistrements"


Sujet :

MkFramework

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut Erreur suite à application de la FAQ "Automatiser un retraitement sur des enregistrements"
    Bonjour,

    Je vais essayer d'être clair, car ça ne l'est déjà pas pour moi

    Je travaille actuellement sur une application qui va me permettre de gérer des inscriptions à des petites formations.
    Pour cela j'ai créer un crud pour afficher les données des formations, puis j'ai ajouter un crud intégrable dans le show pour pouvoir interagir sur les participants à ces formations. J'ai donc fait le nécessaire pour que lorsqu'on clic sur une formation, on arrive sur la page show de celle-ci et la on a le crud intégrable qui permet de faire le nécessaire pour ajouter, supprimer, modifier ou voir les participants.

    Jusque là tout s'est bien passé

    Dans la gestion des participants, je suis amener à travailler avec des dates, et donc des datepicker, ce qui m'a poussé à suivre le point suivant de la FAQ "Automatiser un retraitement sur des enregistrements". Et c'est à partir de là que les romains s'empoignèrent !

    Pour ce qui est de la modification, la suppresion et l'édition, tout se déroule comme prévu et je n'ai pas d'erreur. Par contre, dès que je veux aller ajouter un participant, j'ai un message d'erreur et je ne comprend pas d'où il vient.

    Citation Envoyé par Message d'erreur
    Missing argument 1 for row_t_participants_pmtic::__construct(), called in C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php on line 68 and defined
    #0 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\model\model_t_participants_pmtic.php(37): exception_error_handler(2, 'Missing argumen...', 'C:\wamp\www\mkf...', 37, Array)
    #1 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php(68): row_t_participants_pmtic->__construct()
    #2 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php(46): module_participantspmticaccueil->_new()
    #3 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\pmticaccueil\main.php(50): module_participantspmticaccueil->_index()
    #4 C:\wamp\www\mkframework_v4_109_0_r269\lib\framework\class_root.php(263): module_pmticaccueil->_show()
    #5 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\public\index.php(47): _root->run()
    #6 {main}

    Detail:
    #0 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\model\model_t_participants_pmtic.php (37)
    exception_error_handler( , 'Missing argument 1 for row_t_participants_pmtic::__construct(), called in C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php on line 68 and defined' , 'C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\model\model_t_participants_pmtic.php' , , Array ( ) )
    #1 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php (68)
    row_t_participants_pmtic -> __construct( )
    #2 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php (46)
    module_participantspmticaccueil -> _new( )
    #3 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\pmticaccueil\main.php (50)
    module_participantspmticaccueil -> _index( )
    #4 C:\wamp\www\mkframework_v4_109_0_r269\lib\framework\class_root.php (263)
    module_pmticaccueil -> _show( )
    #5 C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\public\index.php (47)
    _root -> run( )
    #6 {main}

    Fichier : C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\model\model_t_participants_pmtic.php ligne 37

    Message : Missing argument 1 for row_t_participants_pmtic::__construct(), called in C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php on line 68 and defined
    Quelqu'un aurait-il un petite idée pour ça ?

    D'avance merci pour l'aide

  2. #2
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    La seule chose que je remarque en regardant le message d'erreur, c'est le manque d'argument lors de la création d'un participant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Missing argument 1 for row_t_participants_pmtic::__construct()
    Essayez de jeter un coup d'oeil sur les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Fichier : C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\model\model_t_participants_pmtic.php ligne 37
     
    Message : Missing argument 1 for row_t_participants_pmtic::__construct(), called in C:\wamp\www\mkframework_v4_109_0_r269\data\genere\newerpif3\module\participantspmticaccueil\main.php on line 68 and defined
    A la ligne 37 de votre modèle
    dont on fait référence dans le module main à la ligne 68.

    Cordialement

  3. #3
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Dans la partie sur le site, on voit comment surcharger le model

    avec
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class row_article extends abstract_row{
     
       protected $sClassModel='model_article';
       (...)
     
       //on surcharge le constructeur
       public function __construct($tRow){

    Vous devez avoir dans votre code new row_t_participants_pmtic

    remplacez par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new row_t_participants_pmtic(array());
    En effet le constructeur attend un tableau
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut
    En effet, c'est logique ! Merci cela à résolu mon souci !
    Peut être faudrait-il préciser cette manipulation dans la FAQ pour d'autres.

    Merci

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Exact, je corrige ASAP

    Merci du retour
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut
    Pour ne pas recréer un sujet, et surtout parce que c'est lié à mon souci de départ, je me suis permis de ré-ouvrir le poste.

    En fait, j'ai crié victoire trop tôt, car maintenant dès que je crée un nouveau participant, j'ai des soucis avec mes dates.
    Je m'explique, j'ai trois dates dans ce formulaire, dont deux sur lesquels je place un attributs disabled.

    Ces champs sont donc vides, mais lorsque je choisi un date pour le premier champ, puis je crée la fiche, à l'enregistrement ma date se place bien (au format voulu), mais le souci c'est que les deux autres champs de dates du formulaire, se remplisse en db avec une date que je n'ai jamais encodée nulle part : 1999-11-30.

    Encore une idée pour me sauver ? Merci d'avance

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je pense que le soucis vient du fait que vous ayez vos champs dates "désactivé"

    Les champs de dates en question sont "nullable" ? sinon, il met par defaut la date "minimum"

    Si votre champ peut etre null, verifiez bien que dans votre méthode processSave, dans le tableau des champs il n'y ai pas vos deux champs date "désactivés"
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut
    Quand vous parlez de "nullable", c'est en db ? Car si c'est le cas, oui il le sont.

    Avant que vous ne parliez du tableau des champs, en effet ils étaient dedans :

    object(row_t_participants_pmtic)[15]
    protected 'sClassModel' => string 'model_t_participants_pmtic' (length=26)
    private '_bChooseUpdate' (abstract_row) => boolean false
    protected '_tProperty' =>
    array (size=7)
    'id_participant' => string '1' (length=1)
    'date_rdv_test_participant_pmtic' => string '06/03/2015' (length=10)
    'validation_date_test_participant_pmtic' => null
    'formateur_validation_participant_pmtic' => null
    'date_rappel_participant_pmtic' => null
    'formateur_rappel_participant_pmtic' => null
    'commentaire_participant_pmtic' => string '' (length=0)
    protected '_tPropertyToUpdate' =>
    array (size=7)
    0 => string 'id_participant' (length=14)
    1 => string 'date_rdv_test_participant_pmtic' (length=31)
    2 => string 'validation_date_test_participant_pmtic' (length=38)
    3 => string 'formateur_validation_participant_pmtic' (length=38)
    4 => string 'date_rappel_participant_pmtic' (length=29)
    5 => string 'formateur_rappel_participant_pmtic' (length=34)
    6 => string 'commentaire_participant_pmtic' (length=29)
    J'ai donc fais en sorte qu'ils ne s'y trouvent que si nécessaire, donc dans le cas d'un nouveau participant qu'ils n'y soient pas :

    object(row_t_participants_pmtic)[15]
    protected 'sClassModel' => string 'model_t_participants_pmtic' (length=26)
    private '_bChooseUpdate' (abstract_row) => boolean false
    protected '_tProperty' =>
    array (size=5)
    'id_participant' => string '1' (length=1)
    'date_rdv_test_participant_pmtic' => string '06/03/2015' (length=10)
    'formateur_validation_participant_pmtic' => null
    'formateur_rappel_participant_pmtic' => null
    'commentaire_participant_pmtic' => string '' (length=0)
    protected '_tPropertyToUpdate' =>
    array (size=5)
    0 => string 'id_participant' (length=14)
    1 => string 'date_rdv_test_participant_pmtic' (length=31)
    2 => string 'formateur_validation_participant_pmtic' (length=38)
    3 => string 'formateur_rappel_participant_pmtic' (length=34)
    4 => string 'commentaire_participant_pmtic' (length=29)
    Mais malgré cela, pour mes deux champs l'enregistrement en db se fait et il place la date '1999-11-30' pour les deux.

    Ce qui est également bizarre, c'est qu'en activant les logs, si je regarde ma requête, voici ce qu'il envoi au serveur :
    06/03/2015 10:36:58 info sql insert:INSERT INTO t_participants_pmtic (id_participant,date_rdv_test_participant_pmtic,formateur_validation_participant_pmtic,formateur_rappel_participant_pmtic,commentaire_participant_pmtic,id_pmtic,validation_date_test_participant_pmtic,date_rappel_participant_pmtic) VALUES (?,?,?,?,?,?,?,?) [ 1 | 2015-03-07 | | | | 1 | 1999-11-30 | 1999-11-30 ]

  9. #9
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Les var_dump que vous affichez sont ceux juste avant l'appel de la méthode save() ?

    si en mysql on fait un insert sans préciser certaines colonnes, elle sont enregistrés à la valeur par défaut de la db, ici null

    SI ce n'est pas le cas, il y a un endroit ou ces champs sont renseignés à vide, sinon je ne comprends pas d'ou vient le soucis.
    Essayez d'activer le debug du log

    Dans le ficheir conf/site.ini.php
    mettez la valeur infomation=1 dans le bloc [log]

    vous verrez ainsi les requetes
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par imikado Voir le message
    Les var_dump que vous affichez sont ceux juste avant l'appel de la méthode save() ?
    Les var_dump sont placés dans processSave() juste avant l'appel à la méthode save();

    Citation Envoyé par imikado Voir le message
    si en mysql on fait un insert sans préciser certaines colonnes, elle sont enregistrés à la valeur par défaut de la db, ici null

    SI ce n'est pas le cas, il y a un endroit ou ces champs sont renseignés à vide, sinon je ne comprends pas d'ou vient le soucis.
    Je ne force pas ces champs avec une valeur vide, mis à part le fait que je place un disabled dans le formulaire.

    06/03/2015 10:57:00 info sql insert:INSERT INTO t_participants_pmtic (id_participant,date_rdv_test_participant_pmtic,formateur_validation_participant_pmtic,formateur_rappel_participant_pmtic,commentaire_participant_pmtic,id_pmtic,validation_date_test_participant_pmtic,date_rappel_participant_pmtic) VALUES (?,?,?,?,?,?,?,?) [ 1 | 2015-03-06 | | | | 1 | 1999-11-30 | 1999-11-30 ]
    Pourtant dans les logs, la requête force l'enregistrement des champs alors que je les ai retiré du tableau des champs.

    Edit :
    Je viens de faire un test, si je retire simplement tout ce que j'avais ajouté pour forcer le format date à l'enregistrement et à l'affichage, tout fonctionne correctement au niveau de l'ajout d'un participant.

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    D'accord, donc c'est au niveau du forcage de format de date: il faudrait dire si le champ est vide, on ne touche pas à la propriété de l'objet

    pour info, à chaque fois que l'on modifier une propriété de l'objet, il le note pour sa liste des champs de l'insert/update
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //a chaque action sur un champ
    $oContact->nom="ooo";
     
    // il ajoute dans le tableau de champs pour l'insert/update
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2015
    Messages : 70
    Points : 29
    Points
    29
    Par défaut
    Youhouhou ...

    Pour faire simple : Merci ! J'avais déjà mis en place mes conditions de test, mais il y avait un souci de ce côté là mais pas assez complètes, car je ne savais pas qu'il ajoute à sa liste des champs de l'insert/update si on modifie une propriété de l'objet.

    Bref, tout est vraiment rentré dans l'ordre cette fois-ci et j'ai bien compris tout ça comme il faut je pense !

    Merci pour le temps passé à me supporter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur suite à crash PC "Invalid project description"
    Par seiryujay dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 10/04/2012, 14h41
  2. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  3. msimn.exe Erreur d'application
    Par popy29 dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 31/12/2005, 12h26
  4. affichage page erreur suite exception
    Par pram dans le forum XMLRAD
    Réponses: 1
    Dernier message: 20/09/2005, 17h25

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