|
<?php
/**
* Title:
* Description:
* Copyright: Copyright (c) 2006
*
* $Author:
* $Date:
* $Revision:
*/
header("Content-Type:text/xml");
require_once('../joyistar/XmlRequest.php');
$postdata = file_get_contents("php://input");
$xmlRequest = new XmlRequest();
$xmlRequest->open($postdata);
try {
$connstr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($_SERVER['PATH_TRANSLATED'])."\demo.mdb";
$sql = "select * from product";
$connid = @odbc_connect($connstr,"","",SQL_CUR_USE_ODBC ) or die ("db connect error!");
$sqlcount = "select count(*) from product";
$result_id = @odbc_do($connid, $sqlcount);
if($result_id==null)
throw new Exception($sqlcount);
odbc_fetch_row($result_id);
$record_count = odbc_result($result_id,1);
$xmlRequest->setRecordCount($record_count);
$recNo = $xmlRequest->recNo;
$maxRows = $xmlRequest->maxRows;
if($maxRows==-1) $maxRows = $record_count;
$result_id = @odbc_do($connid, $sql);
if($result_id==null)
throw new Exception($sql);
$fields_count = odbc_num_fields($result_id);
//fill metadata fields
for ($i=1; $i<=$fields_count; $i++) {
$fieldname = odbc_field_name($result_id, $i);
$datatype = odbc_field_type($result_id, $i);
$xmlRequest->addField($fieldname, $datatype);
}
//fill data rows
for ($i=0; $i<$record_count; $i++) {
odbc_fetch_row($result_id);
if($i>=$recNo && $i<$recNo+$maxRows) {
$xmlRequest->append();
for ($j=1; $j<=$fields_count; $j++) {
$xmlRequest->setValueByIndex($j-1, odbc_result($result_id, $j));
}
}
if($i>=$recNo+$maxRows) break;
}
odbc_close($connid);
echo $xmlRequest->getXml();
}
catch (Exception $e) {
$xmlRequest->setError($e->getTraceAsString());
echo $xmlRequest->getXml();
throw $e;
}
?> |