Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
ADODB Array auslesen in PHP? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
ADODB Array auslesen in PHP?


 
digimax
02-04-2007, 08:42 
 
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

$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, $Conn, 1, 1);

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;

?>

 
wahsaga
02-04-2007, 08:44 
 
Bitte Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454) lesen, und Code umbrechen.

 
newphp
02-04-2007, 09:56 
 
was sagt den print_r() ?

 
digimax
02-04-2007, 13:45 
 
Also

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

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

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.

 
wahsaga
02-04-2007, 14:01 
 
Was bitte hast du an der vorherigen Aufforderung nicht verstanden?

 
digimax
02-04-2007, 14:34 
 
Original geschrieben von wahsaga
Was bitte hast du an der vorherigen Aufforderung nicht verstanden?

Die Zeilenumbrüche sollten jetzt stimmen. Oder?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 Uhr.