Bonjour, je suis nouvelle sur ce forum. Je suis en 3ème année d'un apprentissage en informatique et je dois effectuer un projet de fin de formation. J'ai choisi le PHP et il m'est donc nécessaire dans le cadre de mon projet de récupérer des informations de l'active directory de mon école pour avoir une liste des classes dans une pickilst afin de faciliter la sélection de celles ci.

Les problème est que je ne sais pas comment récupérer la liste des classes après avoir fait mes recherches et vérifié que mes recherches retournent bien le bon nombre d'enregistrement (j'utilise en même temps Softerra Browser connecté à l'active directory pour tester les filtres avant de les mettre dans mon code) mais le nom ne s'affiche pas.



Voici donc mon code, sans les informations d’authentification qui elles sont justes.

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
71
72
   //Connexion à l'AD de l'école
   $connexion = ldap_connect("ldap.XX.XX.XX",389);
   $picklist="";
   $i=0;
   $i2=0;
   // Teste si la connexion a lieu ou pas
   if(!($connexion))
   {
   die("Erreur de connexion");
   }
   else
   {
      ldap_set_option($connexion, LDAP_OPT_PROTOCOL_VERSION, 3);
      ldap_set_option($connexion, LDAP_OPT_REFERRALS, 0);
      ldap_set_option($connexion, LDAP_OPT_SIZELIMIT, 0);

      //Autentification au serveur LDAP
      if(@ldap_bind($connexion, 'XX', 'XX'))
      {
          $dn = "OU=Classes,OU=ET,OU=XX,DC=XX,DC=XX,DC=ch";
          $filtre = "(ou=T*)";
          $cible = array("name");
          $ldapRes=ldap_search($connexion, $dn, $filtre, $cible,0,0);
          $comptage=ldap_count_entries($connexion, $ldapRes);

          //filtre tant que $i est égal au nombre de section trouvé avant.
            while($i<=$comptage)
             {
                 //Filtre pour récupérer uniquement les classes (OU) qui commencent par 1T ou 2T (Il n'y a pas d'autres années pour les techniciens)
                 $filtre2= "(|(ou=1T*)(ou=2T*))";
                 $cible2 = array("name");
                 $ldapRes2 = ldap_search($connexion, $dn, $filtre2, $cible2,0,0);
                 $comptage2 = ldap_count_entries($connexion, $ldapRes2);
                 $i++;

                   while($i2<=$comptage2)
                  {
                      //Filtre pour récupérer les noms des élèves des classes trouvées juste au dessus: Pas encore fonctionnel.
                      $filtre3 = "(&(title=Apprenant)(|(physicalDeliveryOfficeName=1T*)(physicalDeliveryOfficeName=2T*)))";
                      $cible3 = array("sn","cn");
                      $ldapRes3 = ldap_search($connexion, $dn, $filtre3, $cible3,0,0);
                      $comptage3 = ldap_count_entries($connexion, $ldapRes3);
                      $i2++;
                  }
             }
      }
      //echo de test afin de voir si le filtre est correct et qu'il
      //affiche bien le nombre de classes   : OK
      echo "$comptage<br />";
      echo "$comptage2<br />";
      echo "$comptage3<br />";


Le problème se trouve à partir d'ici
      for($j=0;$j<=$comptage2;$j++)
                            {
                            $tab1 = ldap_get_entries($connexion,$ldapRes2);
                            $classe= $tab1[0]["name"];
                            //Rempli un tableau avec les valeurs récupérées dans le filtre pour connaître toutes les classes de techniciens.
                            $picklist .="<option value=\"".$tab1[0]."\"\>".$classe."</option>";
                            }
    }

?>
Affichage dans L'html
 <form name="classe" method="post">
     <select name="listeclasse" size="1">
     <?php
     echo $picklist;
     ?>
     </select>
   </form>
Merci d'avance pour votre aide!