ADODB Array auslesen in PHP?

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

  • ADODB Array auslesen in PHP?

    Hallo zusammen!

    In dem unteren Beispielcode verbinde ich mich via ActiveX
    und ADODB zu einem LDAP Server und lese alle User einer
    Organisationseinheit aus. Nun möchte ich auch alle E-Mail Adressen
    zu jedem Benutzer ermitteln, doch genau das bereitet mir
    Kopfzerbrechen.

    Bei der Spalte $rs['otherMailbox'] handelt es sich nämlich um ein
    Array Object, das sich aber nicht einfach durch $rs['otherMailbox'][0]
    auslesen lässt. Im Web gibt es ein paar Beispiele wir man das in
    ASP (VBScript) macht aber mit PHP ist das nicht ganz so einfach
    (glaube ich).

    Hat jemand von euch eine Idee?

    PHP-Code:
    <?php

    $Conn 
    = New COM("ADODB.Connection");
    $rs = New COM("ADODB.Recordset");

    $Conn->Provider "ADsDSOObject";
    $Conn->Properties['User ID'] = "username";
    $Conn->Properties['Password'] = "secret";
    $strConn "Active Directory Provider";
    $Conn->Open($strConn);

    $strRS "Select givenname,sn,displayName,SAMAccountName,mail,otherMailbox 
    FROM 
    'LDAP://server/OU=FirmaXY,DC=WebCluster,DC=KS,DC=DCentre'
     where objectClass='user'"
    ;

    $rs->Open($strRS$Conn11);

    for (
    $i=0$i $rs->RecordCount$i++)
    {
    echo @
    $rs['otherMailbox']->value ."\n"// Hier ist das Problem

    // Diese Felder können ausgelesen werden
    echo "givenname=".$rs['givenname']->value ."\n"."sn="
    $rs['sn']->value ."\n"."displayName=".$rs['displayName']->value 
    ."\n"."mail="$rs['mail']->value ."\n"."SAMAccountName="
    $rs['SAMAccountName']->value ."\n";

    echo 
    "---------------------------------------\n";
    $rs->MoveNext();
    }

    $rs->Close;
    $Conn->Close;

    exit;

    ?>
    Zuletzt geändert von digimax; 02.04.2007, 13:33.

  • #2
    Re: ADODB Array auslesen in PHP?

    Bitte Regeln lesen, und Code umbrechen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      was sagt den print_r() ?

      Kommentar


      • #4
        Also

        print_r($rs); liefert: com Object
        print_r(@$rs['otherMailbox']); liefert: variant Object

        Aber com_print_typeinfo($rs['otherMailbox']); liefert
        schon etwas mehr:

        Code:
        x
        class Field { /* GUID={00000569-0000-0010-8000-00AA006D2EA4} */
                /* DISPID=1610612736 */
                function QueryInterface(
                        /* VT_PTR [26] [in] --> ? [29]  */ &$riid,
                        /* VT_PTR [26] [out] --> VT_PTR [26]  */ &$ppvObj
                        )
                {
                }
                /* DISPID=1610612737 */
                /* VT_UI4 [19] */
                function AddRef(
                        )
                {
                }
                /* DISPID=1610612738 */
                /* VT_UI4 [19] */
                function Release(
                        )
                {
                }
                /* DISPID=1610678272 */
                function GetTypeInfoCount(
                        /* VT_PTR [26] [out] --> VT_UINT [23]  */ &$pctinfo
                        )
                {
                }
                /* DISPID=1610678273 */
                function GetTypeInfo(
                        /* VT_UINT [23] [in] */ $itinfo,
                        /* VT_UI4 [19] [in] */ $lcid,
                        /* VT_PTR [26] [out] --> VT_PTR [26]  */ &$pptinfo
                        )
                {
                }
                /* DISPID=1610678274 */
                function GetIDsOfNames(
                        /* VT_PTR [26] [in] --> ? [29]  */ &$riid,
                        /* VT_PTR [26] [in] --> VT_PTR [26]  */ &$rgszNames,
                        /* VT_UINT [23] [in] */ $cNames,
                        /* VT_UI4 [19] [in] */ $lcid,
                        /* VT_PTR [26] [out] --> VT_I4 [3]  */ &$rgdispid
                        )
                {
                }
                /* DISPID=1610678275 */
                function Invoke(
                        /* VT_I4 [3] [in] */ $dispidMember,
                        /* VT_PTR [26] [in] --> ? [29]  */ &$riid,
                        /* VT_UI4 [19] [in] */ $lcid,
                        /* VT_UI2 [18] [in] */ $wFlags,
                        /* VT_PTR [26] [in] --> ? [29]  */ &$pdispparams,
                        /* VT_PTR [26] [out] --> VT_VARIANT [12]  */ &$pvarResult,
                        /* VT_PTR [26] [out] --> ? [29]  */ &$pexcepinfo,
                        /* VT_PTR [26] [out] --> VT_UINT [23]  */ &$puArgErr
                        )
                {
                }
                /* DISPID=500 */
                /* VT_PTR [26] */
                var $Properties;
        
                /* DISPID=1109 */
                /* ? [29] */
                var $ActualSize;
        
                /* DISPID=1114 */
                /* VT_I4 [3] */
                var $Attributes;
        
                /* DISPID=1103 */
                /* ? [29] */
                var $DefinedSize;
        
                /* DISPID=1100 */
                /* VT_BSTR [8] */
                var $Name;
        
                /* DISPID=1102 */
                /* ? [29] */
                var $Type;
        
                /* DISPID=1112 */
                /* VT_UI1 [17] */
                var $Precision;
        
                /* DISPID=1113 */
                /* VT_UI1 [17] */
                var $NumericScale;
        
                /* DISPID=1107 */
                function AppendChunk(
                        /* VT_VARIANT [12] [in] */ $Data
                        )
                {
                }
                /* DISPID=1108 */
                /* VT_VARIANT [12] */
                function GetChunk(
                        /* VT_I4 [3] [in] */ $Length
                        )
                {
                }
                /* DISPID=1104 */
                /* VT_VARIANT [12] */
                var $OriginalValue;
        
                /* DISPID=1105 */
                /* VT_VARIANT [12] */
                var $UnderlyingValue;
        
                /* DISPID=1115 */
                /* VT_UNKNOWN [13] */
                var $DataFormat;
        
                /* DISPID=1115 */
                function DataFormat(
                        /* VT_UNKNOWN [13] [in] */ $???
                        )
                {
                }
                /* DISPID=1112 */
                var $Precision;
        
                /* DISPID=1113 */
                var $NumericScale;
        
                /* DISPID=1102 */
                var $Type;
        
                /* DISPID=1103 */
                var $DefinedSize;
        
                /* DISPID=1114 */
                var $Attributes;
        
                /* DISPID=1116 */
                /* VT_I4 [3] */
                var $Status;
        
        }
        Laut Doku deutet {00000569-0000-0010-8000-00AA006D2EA4}
        auf ein ADODB.Field' Objekt hin. Beim Feld otherMailbox
        handelt es sich aber nicht um einen String sondern um ein
        Array das ich auslesen muss. Und genau hier ist das Problem.

        Kommentar


        • #5
          Was bitte hast du an der vorherigen Aufforderung nicht verstanden?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            Was bitte hast du an der vorherigen Aufforderung nicht verstanden?
            Die Zeilenumbrüche sollten jetzt stimmen. Oder?

            Kommentar

            Lädt...
            X