Justement je ne sais pas si c'est clair mais l'idée c'est de modifier la méthode save pour faire office de trigger
Quand on modifie la formation A,
- dans sa méthode save: on verifie si elle a un/n fils
- si c'est le cas on appelle la modif du fils
Justement je ne sais pas si c'est clair mais l'idée c'est de modifier la méthode save pour faire office de trigger
Quand on modifie la formation A,
- dans sa méthode save: on verifie si elle a un/n fils
- si c'est le cas on appelle la modif du fils
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Mais en fait ce ne sont pas les formations qui doivent être liées à la modification mais bien les utilisateurs présents dans ces formations.
Dans une table formations :
Quand je crée une formation, je définis si oui ou non elle est liée à une autre formation. Sachant que plusieurs formation peuvent être liées à la même formation.
Donc :
A est la formation maîtresse tandis que B et C sont des formations liées.
Dans une table utilisateurs :
Je crée chaque utilisateur avec ces données complètes.
Dans une table de liaison :
J'ajoute un utilisateur et une formation (liée ou non). Dans le cas ou l'utilisateur désire faire tous les modules d'une formation, il se retrouve donc dans la formation A, B et C. Dans dans l'enregistrement dans cette table, je dois identifier l'utilisateur ET la formation par leur id pour les retrouver.
Donc moi ce que j'imaginais jusque maintenant c'était un système du style :
Pour l'exemple : La formation A, B et C sont liées et User est inscrit dans ces trois formations. Nous désirons modifier les données de User.
Je rentre par exemple dans la formation B et je veux modifier le commentaire du User. Je valide ce changement :
Je récupère l'id de User.
Je récupère les 3 id des formations A,B et C.
Puis j'update à la chaine les 3 enregistrements dans la table.
Il faudrait des exemples de la structure des tables pour comprendre quels champs sont mis à jour
car la, de ce que je comprend il y a des doublons dans les données, non ?
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
En effet, cela n'est pas optimum et il y a quelques doublons dans les données.
Voici la table des modules de formations :
Voici la structure de la table des Formations qui est liée avec la table modules
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 -- -- Structure de la table `t_modules_pmtic` -- CREATE TABLE IF NOT EXISTS `t_modules_pmtic` ( `id_module_pmtic` int(11) NOT NULL AUTO_INCREMENT, `intitule_module_pmtic` varchar(50) NOT NULL, PRIMARY KEY (`id_module_pmtic`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Les participants à toutes nos formations (pas uniquement les PMTIC) sont gérés dans cette table :
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 -- -- Structure de la table `t_pmtic` -- CREATE TABLE IF NOT EXISTS `t_pmtic` ( `id_pmtic` int(11) NOT NULL AUTO_INCREMENT, `intitule_pmtic` varchar(255) NOT NULL, `id_type_formation` int(11) NOT NULL, `date_debut_pmtic` date NOT NULL, `date_fin_pmtic` date NOT NULL, `salle_pmtic` varchar(50) NOT NULL, `nbr_min_inscrit_pmtic` int(2) NOT NULL, `nbr_max_inscrit_pmtic` int(2) NOT NULL, `couleur_pmtic` varchar(6) NOT NULL, `documents_necessaires_pmtic` longtext NOT NULL, `commentaire_pmtic` longtext NOT NULL, `nbr_heures_pmtic` int(2) NOT NULL, `parent_module_pmtic` int(11) DEFAULT NULL, `id_module_pmtic` int(11) NOT NULL, `annule_pmtic` int(1) NOT NULL, `archive_pmtic` int(1) NOT NULL, PRIMARY KEY (`id_pmtic`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
Et voici la table des participants à nos modules PMTIC :
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 -- -- Structure de la table `t_participants` -- CREATE TABLE IF NOT EXISTS `t_participants` ( `id_participant` int(11) NOT NULL AUTO_INCREMENT, `nom_participant` varchar(100) NOT NULL, `prenom_participant` varchar(50) NOT NULL, `registre_national_participant` varchar(15) NOT NULL, `genre_participant` varchar(1) NOT NULL, `date_naissance_participant` date NOT NULL, `mail_participant` varchar(100) NOT NULL, `telephone_participant` varchar(12) NOT NULL, `gsm_participant` varchar(13) NOT NULL, `adresse_participant` varchar(100) NOT NULL, `id_code_postal` int(11) NOT NULL, `statut_participant` varchar(50) NOT NULL, `numero_demandeur_emploi_participant` varchar(20) NOT NULL, `date_inscription_forem_participant` date NOT NULL, `diplome_participant` varchar(50) NOT NULL, `id_nationalite` int(11) NOT NULL, `situation_familiale_participant` varchar(20) NOT NULL, `nbr_enfants_participant` int(2) NOT NULL, `numero_compte_bancaire_participant` varchar(25) NOT NULL, `domaine_emploi_recherche_participant` varchar(255) NOT NULL, `tablette_participant` int(1) NOT NULL, `droit_image_participant` int(1) NOT NULL, `comment_informe_participant` varchar(255) NOT NULL, `commentaires_participant` longtext NOT NULL, PRIMARY KEY (`id_participant`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Donc dans dans un premier temps :
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 -- -- Structure de la table `t_participants_pmtic` -- CREATE TABLE IF NOT EXISTS `t_participants_pmtic` ( `id_participant_pmtic` int(11) NOT NULL AUTO_INCREMENT, `id_participant` int(11) NOT NULL, `id_pmtic` int(11) NOT NULL, `date_rdv_test_participant_pmtic` date NOT NULL, `formateur_inscription_participant_pmtic` varchar(50) NOT NULL, `validation_date_test_participant_pmtic` date DEFAULT NULL, `formateur_validation_participant_pmtic` varchar(20) DEFAULT NULL, `date_rappel_participant_pmtic` date DEFAULT NULL, `formateur_rappel_participant_pmtic` varchar(20) DEFAULT NULL, `commentaire_participant_pmtic` longtext, `id_pmtic_maitre` int(11) NOT NULL, PRIMARY KEY (`id_participant_pmtic`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=177 ;
1 - J'ai créé des modules
2 - Je crée des formation à partir des modules, et lors de la création je les lies entre elles
3 - J'ajoute des utilisateurs généraux dans ma table
Ensuite :
Lorsque je veux inscrire un utilisateur général à une formation (non liée), je l'encode dans la table t_participants_pmtic ce qui génère un enregistrement.
Par contre si le participant veut s'inscrire à une formation liée (formation A,B et C), alors il y a 3 enregistrements presqu'identique qui sont créés. Donc quand je désire modifier par la suite les informations de cet utilisateurs pour les 3 formations, c'est là que je coince.
Je ne sais pas si je suis clair en fait
Edit : En fait mon souci est assez simple, car j'ai un message d'erreur identique à mon tout premier message dans ce post chaque fois que je veux faire une requête dans la page main.php du module t_participants_pmtic. Je dois surement faire un truc de travers ou avoir loupé une subtilité.
Désolé pas de temps ce soir, je regarde demain
Pour info le framework propose désormais un market permettant à la fois de mettre à jour ses extensions ET (nouveau) d'installer des nouvelles sans passer par le site pour récuperer le zip "total"
Suivrons des news sur cette nouveauté ainsi que des tutoriaux pour participer à son amélioration
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Ok merci pour les infos
Premier jet pour bien comprendre l'idée globale
vous devez copier ce projet dans votre repertoire data/genere et modifier le fichier connexion.ini bien sur
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Si déjà globalement j'ai suivi on va pouvoir passer à cette histoire de formation liée
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Voilà, j'ai installé votre zip, j'ai actuellement une page pour gérer les formations, et une page qui me permet de gérer les utilisateurs(participants généraux du centre).
Et lorsque vous cliquez sur le bouton "show" d'un participant vous pouvez l'assigner à une formation
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Oui, je peux assigner un participant à une formation
Donc à partir de ce projet (fourni en zip) que manque-t-il ?
c'est plus simple pour moi de faire évoluer un projet qu'on se partage comme ici
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
En fait je viens de me rendre compte que dans votre exemple, vous entrez dans la fiche d'un participant pour ajouter des formations alors que moi je rentre dans une formation pour y ajouter un participants. D'où mon besoin lorsque j'édite un participant de modifier plusieurs enregistrements.
Admettons que j'ai 1 formations modulaire qui peut, soit être suivie dans son intégralité, soit être suivie en 3 modules indépendant.
Je crée donc une première formation que je nomme "Débutant", une autre que je nomme "Avancé" et une dernière que je nomme "Expert".
La formation "Débutant" est ma formation maîtresse, les 2 autres vont lui être liées.
Lorsque j'inscris un participant à une de ses 3 formations, je propose le formulaire suivant :
Si on valide ce formulaire, l'utilisateur est inscrit dans mes 3 modules.
Maintenant si je veux éditer un utilisateur inscrit à ces 3 modules, il faut que je modifie en même temps les 3 enregistrements. C'est là où je coince.
Ok, là je comprends mieux
Je vous fait une proposition dans la soirée
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
La on doit pas etre loin de la cible:
on entre ici par formation, et non plus participant
sur une formation A qui possede uen formation liée:
on clique sur show pour voir la formation, on ajoute un participant, et à l'enregistrement on duplique cet enregistrement sur les formations "enfant"
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Merci,
Nous sommes en effet sur la bonne voie ! Maintenant, je désire éditer un participants qui est inscrit dans 3 modules liés. Lorsque j'edit le commentaire de cet utilisateur pour un module, il doit aller modifier les 2 autres également.
P.S. : Petite info, dans mon système j'effectue un retraitement sur les dates, et c'est là que cela me pose problème avec l'édition.
Vous pouvez "juste" reposter les manips demandées pour la gestion de date, ça devrait etre assez simple à ajouter
en suivant par exemple cette page:
http://mkframework.com/orm.html#automatiserretraitement
si elle est incomplète je rajouterai les conseils ici sur cette page afin d'enrichir cette doc
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Houla ...
C'est pas si simple que cela, ça remonte déjà loin et j'ai du fortement modifier le tout pour que ça colle avec mes besoins.
Laissons tomber ce sujet, j'ai bidouiller quelque chose (même si ce n'est pas très catholique) et cela fonctionne.
Merci tout de même pour toute l'aide apportée à ce poste, cela m'a permis tout de même de pouvoir me débloquer !
Oki pas de soucis, je cloture donc ce topic
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager