Bonjour à tous,
je me ttourne vers vous car je n'arrive pas à trouver une solution à mon problème et je me dis que vous aller pouvoir m'aider.
J'ai :
- Une table indivs avec les données classiques sur des individus (nom, prenom, date_naissance etc...)
- Une table countries avec le nom de tous les pays
- une table de liaison countries-indivs puisque j'ai une relation HABTM.
Cette table de liaison a d'autres attributs texte et checkbox.
La donnée de base est que je dois créer un formulaire qui permettent d'enregistrer les infos sur les individus et celles concernant les pays visités. Une personne doit donc pouvoir insérer une ligne (ou plusieurs) de la table de liaison en fonction du nombre de pays visités.
J'ai donc une vue indivs comme cela
Pour rajouter une ligne pays j'ai une fonction javascript :
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 // avant 'y a le début de la vue <?php echo $this->Form->input('nom', array('label'=>'Votre nom : ', 'placeHolder'=>'Votre Nom', 'size'=>100)); ?> <?php echo $this->Form->input('prenom', array('label'=>'Votre prénom : ')); ?> <?php echo $this->Form->input('date_naiss', array('type'=>'text','dateFormat'=>'D/M/Y','label'=>'Date de Naissance : ')); ?> <?php echo $this->Form->input('nationalite', array('label'=>'Votre nationalité : ','options'=>$countries)); ?> .../... <div id="tabs-3"> <table id='TabPays'> <thead> <tr> <th>Pays</th> <th>Nombre d'années</th> <th>Ville</th> <th>Avis</th> <th>Raisons du départ</th> <th>Ajouter</th> </tr> </thead> <tbody id='tabBody' class="body"> <tr id="line1" class="line"> <td><?php echo $this->Form->input('CountryR.pays', array('label'=>false,'options'=>$countries)); ?></td> <td><?php echo $this->Form->input('CountryR.nb_annees', array('label'=>false, 'type'=>'text')); ?></td> <td><?php echo $this->Form->input('CountryR.ville', array('label'=>false, 'type'=>'text')); ?></td> <td><?php echo $this->Form->input('CountryR.avisPositif', array('label'=>false, 'type'=>'checkbox')) ;?></td> <td><?php echo $this->Form->input('CountryR.raison_depart', array('label'=>false, 'type'=>'text')) ;?></td> <td><?php echo $this->Form->button('supprimer', array('class'=>'suppr','type'=>'button', onclick'=>"$(this).closest('tr').remove();")); ?></td> </tr> </tbody> </table> <input type="button" id="addPays" value ="Ajouter un pays"/> </div>
L'insertion de nouvelles lignes se passe sans problème. Là où cela se corse c'est que les champs d'une ligne ont le même nom que les champs de la ligne précédente. Donc l'insertion en base ne prend que la dernière ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $('#addPays').click(function(){ var nb = $('.line').length; $('#line1').clone().appendTo('#tabBody'); nb +=1; $ligne = $('.body tr:last-child'); $ligne.attr('id', 'line'+nb); });
En fait j'ai par exemple pour le champ 'Ville' : name = data[CountryR][ville].
et je devrais avoir
pour la ligne 1 : name = data[CountryR][0][ville]
pour la ligne 2 : name = data[CountryR][2][ville]
pour la ligne 3 : name = data[CountryR][3][ville]
etc...
D'où la question : Comment faire pour changer automatiquement le nom d'un champ ?
Si vous avez des réponses, je suis super preneur
Bonne suite de journée
Partager