Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Benutzer nach PHP LDAP Abfrage sortieren





Frage

Hallo, ich habe ein kleines Problem, ich habe über ein PHP-Script alle Benutzer aus dem LDAP abgefragt und in ein SELECT-Feld gebpackt, das Problem ist, das die einträge nicht sortiert sind. Kann mir jemand helfen? Das eintragen in das SELECT-Feld sieht so aus: [code]<select name="Benutzer" size="1"> <?php $anzahl = ldap_count_entries($connectid,$search); for ($i=0; $i<$anzahl; $i++) { $name = $result[$i]["cn"][0]; echo '<option>'.$name.'</option>'; } ?> </select>[/code] MFG Sascha

Antwort 1 von Supermax

Schau dir mal die Array-Sortierungsfunktionen von PHP an, insbesondere uasort() (Sortierung mit einer benutzerdefinierten Sortierungsfunktion).

Antwort 2 von Bruno_Bayano

Danke, das hat mir schonmal ein bisschen weiter geholfen.
Jetzt habe ich allerdings noch ein Problem, und zwar bekomme ich den sortierten Array nicht vernünftig ausgegeben, ich möchte alle Datensätze in eine Liste schreiben, allerdings schreibt er die dann nicht sortiert da rein.

Hier mal mein Quellcode:

<?php
                  $basedn = "CN=Users,DC=domain,DC=loc";
                  $server = "servername";
                  $username = "user";
                  $password = "password";
                  $ldap_port = "389";
                  $filter = "(&(|(objectClass=user))(objectCategory=person)(cn=*))";
?>
    
<?php
                  $connectid = @ldap_connect($server)or die("Keine Verbindung zum LDAP server möglich.");
?>
    
<?php
                  $binding = @ldap_bind($connectid,$username,$password) or die("Fehler beim Anmelden des Benutzers.");
?>
    
<?php
                  // AD auslesen
                  $search = @ldap_search($connectid,$basedn,$filter);
                  $result = ldap_get_entries($connectid,$search);
?>

<?php
                  $anzahl = ldap_count_entries($connectid,$search);
                  $arr = array();
                  for ($i=0; $i<$anzahl; $i++) {
                     $name = $result[$i]["cn"][0];
                     
                     array_push( $arr,$name );
                  }
                  asort($arr);
?>                 
                  <select name="user" size="1">  
<?php                                 
                  for ($j=0; $j<$anzahl; $j++) {
                    echo '<option>'.$arr[$j].'</option>';
                 }
?>                  
                  </select>


Hat jemand von euch eine Lösung?

Antwort 3 von Bruno_Bayano

ich hab selbst die Lösung gefunden, aber trotzdem danke.

Die Lösung ist:

foreach($arr As $name){
                      echo '<option>'.$name.'</option>';
                }


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: