- 论坛徽章:
- 0
|
getei.php的代码:
<?php
header('Content-Type:text/html;charset=UTF-8');
putenv("NLS_LANG=american_america.al32utf8");
if (!isset($_GET["id"]) || !isset($_GET["num"])) {
print "";
exit;
}
$id = urldecode($_GET["id"]);
$num = urldecode($_GET["num"]);
$arrayResult = "[";
require 'common.php';
// 组织架构列表
$orgCmdStr = "SELECT FNAME_L2,FSIMPLENAME AS FEMAIL FROM T_ORG_ADMIN WHERE FLONGNUMBER LIKE '" . $num . "%' ORDER BY FLONGNUMBER";
$orgParsed = ociparse($db_conn, $orgCmdStr);
ociexecute($orgParsed);
$nOrgRows = ocifetchstatement($orgParsed, $orgResults);
for($i = 0; $i < $nOrgRows; $i++) {
$arrayResult .= "\"" . $orgResults["FNAME_L2"][$i] . "<" . $orgResults["FEMAIL"][$i] . ">\"";
if ( $i != $nOrgRows-1) $arrayResult .= ",";
}
// 人员列表
$cmdstr = "SELECT T1.FNAME_L2
FROM T_BD_Person T1
INNER JOIN T_ORG_PositionMember T2 ON T1.FID = T2.FPersonID
INNER JOIN T_ORG_Position T3 ON T2.FPositionID = T3.FID
INNER JOIN T_ORG_Admin T4 ON T3.FAdminOrgUnitID = T4.FID
WHERE T4.FID = '" . $id . "'";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
if ($nOrgRows > 0 && $nrows > 0) $arrayResult .= ",";
$ds=ldap_connect("192.168.0.5");
if ($ds) {
$r=ldap_bind($ds);
for($i = 0; $i < $nrows; $i++) {
//$search_str = iconv("GB2312","UTF-8",$results["FNAME_L2"][$i]);
$sr=ldap_search($ds, "o=zkz", "cn=".$results["FNAME_L2"][$i]);
$info = ldap_get_entries($ds, $sr);
if ($info["count"]>0) {
$arrayResult .= "\"" . $results["FNAME_L2"][$i] . "<" . $info[0]["mail"][0] . ">\"";
if ( $i != $nrows-1) $arrayResult .= ",";
}
}
}
ldap_close($ds);
ocilogoff($db_conn);
$arrayResult .= "]";
print $arrayResult;
?>
此页面是用来读取oracle的数据,返回是一个数组,数组中每个数据是 "人名<Email>",客户浏览器用javascript获取,然后解析后放到一个Select中。
之前在Windows下测试一点问题都没有,但移植到SUSE Linux下后,所有的中文人名全部变成了问号(?)。
后来在开头加上 putenv("NLS_LANG=american_america.al32utf8");
因为oracle的字符编码使用的就是这个。
但现在的问题是,有时显示出来是中文,有时则显示是问号(?)
请大家帮帮忙,我为此事已经忙了好几个星期了,实在没办法了。 |
|