Bonjour à tous , voici mon problème .
Après vous avoir demandé comment construire dynamiquement un tableau contenant les différentes clés (activités ) de ma table .J'ai de nouveau un souci .

action.class :

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
 
<?php
 
/**
 * activites actions.
 *
 * @package    SaisieTemps
 * @subpackage activites
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class activitesActions extends sfActions
{
  protected $niveau;
 
   /**
  * Executes index action
  
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
 
    $i = 1;
    $niveaux1 = Doctrine_Query::create()
           ->select('code,nom')
           ->from('activites')
           ->where('pere_id IS NULL and active = "1"')
           ->fetchArray(); //On exécute la requête
 
 
 
      foreach($niveaux1 as $niveau1)
       {
         $this->niveau[$i][] = array('code'=>$niveau1['code'],'nom'=>$niveau1['nom']);
         $id = $niveau1['id'];
         $this->enfant($id,$i);  
       }
       $this->niveaux = $this->niveau;
 
  }
 
 
 
     protected function enfant($id,$i)  
      {
         $niveaux2 = Doctrine_Query::create()
                ->select ('code,nom')
                ->from('activites')
                ->where('pere_id = ? and active = "1"',array($id))
                ->fetchArray(); 
 
        if(isset($niveaux2[0]))
          {
            $i++;
            foreach($niveaux2 as $niveau2)
            {
                $this->niveau[$i][] = array('code'=>$niveau2['code'],'nom'=>$niveau2['nom']);       
                $this->enfant($niveau2['id'],$i);    
            }
          }
      }
 
}
 
?>
IndexSuccess :

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
 
 
  <link type="text/css" href="../css/ui.multiselect.css" rel="stylesheet" />
 
  <script type="text/javascript" src="../js/plugins/localisation/jquery.localisation-min.js"></script>
  <script type="text/javascript" src="../js/plugins/tmpl/jquery.tmpl.1.1.1.js"></script>
  <script type="text/javascript" src="../js/plugins/blockUI/jquery.blockUI.js"></script>
  <script type="text/javascript" src="../js/ui.multiselect.js"></script>
  <script type="text/javascript">
    $(function(){
    	$.localise('ui.multiselect', {/*language: 'fr',/* */ path: 'js/locale/'});
      $(".multiselect").multiselect();
      $("#tabs").tabs();
      //getter
      var dividerLocation = $('.selector').dialog('option', 'dividerLocation');
      //setter
      $('.selector').dialog('option', 'dividerLocation', 0.4);
 
    });
  </script>
 
 
 
 </script>
<?php include_component('home','header',array('titre' => 'Extraction de données brute'))?>
<div id='formulaire' style="width: 95%; margin-left: auto; margin-right: auto" align="left">
<p><b class="d1top"><b class="r11"></b><b class="r12"></b><b class="r13"></b><b class="r14"></b></b></p>
<center><h><STRONG><FONT SIZE=5>Activités :</FONT></STRONG></h2></center> <br></br>
<div class='formulaire'>
 
 
 <div id="tabs" >
      <ul >
 
 
     <?php   foreach($niveaux as $i=>$niveau):?>
        <li><a href="#tabs-<?php echo $i?>">Niveau <?php echo $i?></a></li>
     <?php endforeach;?>
 
      </ul>
 
      <?php   foreach($niveaux as $i=>$niveau):?>
      <div id="tabs-<?php echo $i?>">
        <form action="" target="submitFrame" style="border:medium;">
        <dl>
        <select class="multiselect" multiple="multiple" name="niveau[]" style="width: 70% ; margin-left: auto; margin-right: auto" align="center" >
            <?php   foreach($niveau as $activite):?>
            <option value="<?php echo $activite['code']?>"><?php echo $activite['nom']?></option>
            <?php endforeach;?>
          </select>
 
        </dl>
        </form>
     </div> 
     <?php endforeach;?>  
 
 
 
 
 
 
</div>
 
 
</div>
 
 
 
</form>
</div>
( Désolé pour le code qui n'est pas forcément des mieux présenté. )

Voila le résultat pour le niveau 2 de mes activités :

http://img203.imageshack.us/img203/8974/test3k.jpg

Le problème est qu'une sous activité peut être du même nom dans plusieurs activités. ( Ex: Appro peut etre présent dans une activité Absence , et dans une autre .. )
Or , comme vous pouvez le constater , il s'affiche plusieurs fois le meme libellé , ceci en fait pour nombre d'entre mes clés. Or ce que je souhaiterais , c'est n'afficher qu'une seule fois cette clé dans ce tableau , qui , en la cochant , sélectionnerait toutes les clés du même nom .

Savez vous quel petit bout de code dans ma requête me permettrait de faire ceci ,car j'ai beau essayé d'utiliser le distinct, cela ne fonctionne pas.