|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : février 2008 Messages : 115 ![]() |
Bonjour,
Voila j'ai un petit problème, je cherche a récupérer un id dans ma class form. Voici mon form : Code :
La actuellement mon code me permet de récupérer l'id de l'enregistrement. Ce qui fonctionne en édition mais pas dans le cas d'un nouveau enregistrement. Alors si quelqu'un a déjà fait cela, je suis preneur. Au pire des cas, je vais devoir le faire en ajax. Merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Lors de la création d'un enregistrement, il n'y a pas d'Id dans l'objet data.
L'Id n'"apparait" qu'une fois l'objet enregistré pour la première fois sur le disque. En effet, c'est la base de données qui, généralement, attribue l'Id. Et la base de donnée n'est pas au courant de l’existence potentiel de cet enregistrement avant qu'il ne soit créé (MySql avec une boule de cristal ? non, ceci n'existe pas). Tu as donc trois solutions (a priori) : Créer l'enregistrement avec un minimum de champ et après un premier enregistrement, renvoyer la page normal de modification avec le tout (l'id existera). Créer l'enregistrement et attribuer toi même l'Id à partir d'une procédure qui t'es propre. Plus d'attente mais le risque de perdre un numéro. Lors de la demande de création, commencer par créer l'enregistrement en base de données et l'afficher en modification (l'id existera). Par contre, il va falloir gérer ceux qui auront été abandonné entre la demande de création et la sauvegarde. Personnellement j'utilise la méthode 1 le plus souvent possible.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : février 2008 Messages : 115 ![]() |
Ok. Je me suis mal fait comprendre. Au fait dans ma table j'ai deux champs.
Id = clef primaire (celui bien sur on ne le connait pas) idCandidat = mais celui on le connais via l'url. ET je voudrai faire un traitement avec l'idcandidat de le form. Donc je chercher a le récupérer. Je pense que je vais le faire avec la session. |
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Donc tu as un paramètre transmis au contrôleur que tu voudrais faire passer à form pour qu'il l'utilise dans sa méthode configure() ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : février 2008 Messages : 115 ![]() |
Oui. Donc j'ai fait comme ceci :
Code :
|
||
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
C'est une bonne solution. Elle n'a qu'un défaut, si une personne ouvre deux fenêtre dans une même session, il ne pourra avoir qu'une valeur pour idCandidate dans son paramètre. Mais il n'y a pas d'autre possibilité avec cette technique, qui, hors ce problème, est excellente.
Par contre, tu ne devrais pas avoir de requête dans un form. Il serait bon de la déporter dans un objet du modèle, ici probablement : CandidateSchoolTable.class.php et d'y faire référence depuis le form. Ceci pour préserver la séparation des couches que l'objet form met déjà un peu à mal, rien ne sert de l'aider
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#7 | ||||
|
Membre habitué
![]() Nicolas Développeur Web Inscription : avril 2011 Messages : 95 ![]() |
J'approuve la solution de Michel par contre je me permet de rebondir sur sa remarque concernant la séparation des couches du modèle dont j'ai un exemple similaire.
En quoi la solution suivante : Code :
Code :
|
||||
|
|
00
|
|
|
#8 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
En fait la méthode la plus proche du MVC doit être imperceptiblement plus lente... Par contre elle présente l'avantage de plus de facilité à la maintenance, plus lisible. Et si tu modifies la structure de la table, tu n'a qu'un objet à modifier, le reste ne devrait pas être directement impacté.
Pour ta méthode, si tu regardes ton objet tableBase tu vas voir qu'il est lui même enfant de sfDoctrineRecord, enfant de Doctrine_Record et qu'il y a un paquet de méthodes qui découlent de Doctrine_Record...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
10
|
Copyright © 2000-2012 - www.developpez.com