Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LDAP Abfrage in der FOR Schleife mehrere Werte sortieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] LDAP Abfrage in der FOR Schleife mehrere Werte sortieren

    echo 'Hallo Zusammen';

    Ich sitze grade an einem Problem bez. der sortierten Ausgabe meiner FOR Schleife. Die gespeicherten Werte sind in einem Array aus LDAP. Mit ldap_sort habe ich nach einem Kriterium die Ausgabe sortieren können. Jedoch habe ich drei weitere Kriterien nach denen ich sortieren will. Hier mal der Code;

    PHP-Code:
    $ds=ldap_connect("0.0.0.0");  
    $r=ldap_bind($ds);    
    $dn "DC=TEST,DC=de";
        
    $werte = array( "ou""sn""mail""thumbnailphoto""cn""title""description""department""manager""mobile""facsimiletelephonenumber""telephonenumber""wwwhomepage""l""postofficebox""physicaldeliveryofficename""company""streetaddress""st""postalcode""co");
        
    // Suchen des Filtereinstellungen
        
    $sr=ldap_search($ds$dn$filter$werte);
        
    // Sortierung der Objekte nach Ort
        
    ldap_sort($ds$sr'l');
        
    // Objekte holen
        
    $info ldap_get_entries($ds$sr); 
    PHP-Code:
    echo "<table class='zebra' border='0'>";
    echo 
    "<th><h2>Bild</h2></th><th><h2>Kontakt</h2></th><th><h2>Kommunikation</h2></th><th><h2>Anschrift</h2></th>";

        for (
    $i=0$i<$info["count"]; $i++) {
        echo 
    '<tr style="height:200px;">';
        echo 
    '<td align="center" style="padding: 15px;">';
        echo 
    '<div class="Bild">';
            
    // Aufarbeitung Bild aus dem AD
            
    $bild $info[$i]["thumbnailphoto"][0];
            echo 
    '<img src="data:image/jpeg;base64,' base64_encode($bild) . '"/>';
        echo 
    '</div></td>';

        echo 
    '<td>';
            echo 
    "<h1>"$info[$i]["cn"][0] ."</h1>";
            echo 
    "Position: "$info[$i]["title"][0] ."<br />";
            echo 
    "Bereich: "$info[$i]["description"][0] ."<br />";
            echo 
    "Abteilung: "$info[$i]["department"][0] ."<br />";
            
    // Modifikation String Vorgesetzter aus dem AD
                    
    $manager$info[$i]["manager"][0];
                    
    $string1 str_replace("CN="""$manager);
                    
    $string2 stripslashes($string1);
            echo 
    "Vorgesetzter: ";
            echo 
    strstr($string2',OU='true);
        echo 
    '</td>';

        echo 
    '<td>';
        if(
    $info[$i]["mail"][0] != NULL){
            echo 
    "<div class='mode'><div class='modelinks'><img src='icon/email.png' width='32' height='32'></div> <div class='moderechts'><small><a href='mailto:"$info[$i]["mail"][0] ."'> "$info[$i]["mail"][0] ."</small></a></div></div>";}
        else{echo 
    "";}
        if(
    $info[$i]["mobile"][0] != NULL){
            echo 
    "<div class='mode'><div class='modelinks'><img src='icon/mobil.png' width='32' height='32'></div> <div class='moderechts'> "$info[$i]["mobile"][0] ."</div></div>";}
        else{echo 
    "";}
        if(
    $info[$i]["facsimiletelephonenumber"][0] != NULL){
            echo 
    "<div class='mode'><div class='modelinks'><img src='icon/fax.png' width='32' height='32'></div> <div class='moderechts'> "$info[$i]["facsimiletelephonenumber"][0] ."</div></div>";}
        else{echo 
    "";}
        if(
    $info[$i]["telephonenumber"][0] != NULL){
            echo 
    "<div class='mode'><div class='modelinks'><img src='icon/festnetz.png' width='32' height='32'></div> <div class='moderechts'> "$info[$i]["telephonenumber"][0] ."</div></div>";}
        else{echo 
    "";}
        
    //if($info[$i]["wwwhomepage"][0] != NULL){
        //    echo "<div class='mode'><div class='modelinks'><img src='icon/www.png' width='32' height='32'></div> <div class='moderechts'><small><a href='http://". $info[$i]["wwwhomepage"][0] ."' target='blank'> ". $info[$i]["wwwhomepage"][0] ."</a></small></div></div>";}
        //else{echo "";}
        
    echo '</td>';

        echo 
    '<td>';
            echo 
    "<b>Stadt: "$info[$i]["l"][0] ."</b><br />";
            echo 
    "<b>Haus: "$info[$i]["postofficebox"][0] ."</b><br />";
            echo 
    "<b>Raum: "$info[$i]["physicaldeliveryofficename"][0] ."</b><br />";
            echo 
    "Firma: "$info[$i]["company"][0] ."<br />";
            echo 
    "Strasse: "$info[$i]["streetaddress"][0] ."<br />";
            
    //echo "Bundesland: ". $info[$i]["st"][0] ."<br />";
            
    echo "Postleitzahl: "$info[$i]["postalcode"][0] ."<br />";
            
    //echo "Land: ". $info[$i]["co"][0] ."<br />";
        
    echo '</td>';
        echo 
    '</tr>';
        }
    echo 
    "</table>"
    Nun würde ich gerne nach den Werten 'postofficebox', 'physicaldeliveryofficename' und 'company' zusätzlich sortieren.

    Muss ich die Werte vorher sortiert haben oder kann ich die Ausgabe auch im nachhinein manipulieren, welcher Weg ist da am besten geeignet ?

    Grüße
    re3no

  • #2
    Habs hingekommen

    Manchmal hilft das PHP Manual..
    Vorsortierung mittels Funktion im Spagetti Code

    PHP-Code:
    function ldap_multi_sort(&$entries$attribs){
        for (
    $i=1$i<$entries['count']; $i++){
            
    $index $entries[$i];
            
    $j=$i;
            do {
                
    //create comparison variables from attributes:
                
    $a $b null;
                foreach(
    $attribs as $attrib){
                    
    $a .= $entries[$j-1][$attrib][0];
                    
    $b .= $index[$attrib][0];
                }
                
    // do the comparison
                
    if ($a $b){
                    
    $is_greater true;
                    
    $entries[$j] = $entries[$j-1];
                    
    $j $j-1;
                }else{
                    
    $is_greater false;
                }
            } while (
    $j>&& $is_greater);
            
            
    $entries[$j] = $index;
        }
        return 
    $entries;

    Grüße re3n

    Kommentar

    Lädt...
    X