Dear All,
I have the following asp script. I need the similar one but using php XMLDOM connecting to a mysql database.
As I'm a newbie in PHP+XMLDOM programming (even in PHP only🙂 i used asp2php to convert the script. After lot's of cleanup I got the script at the end of this post. But I'm getting lot's of problems to get it running.
Is there someone that can help?
BR
NF
--------------------- ASP Script -----------------------------------
<%
Response.ContentType = "text/xml"
Response.expires = 0
%>
<?xml version="1.0" encoding="Windows-1252"?>
<%
Dim objXMLDoc
Dim objXMLElement, objXMLRoot, objXMLTopic, objXMLNodes
Dim objConnection
Dim objRecordset
Dim objRecordsetField
Dim intRecordsEffected
public sub XMLErrorMessage
Set objXMLRoot = objXMLDoc.createElement("errormessage")
Set objXMLDoc.documentElement = objXMLRoot
Set objXMLNodes = objXMLDoc.createElement("state")
objXMLNodes.Text = objConnection.Errors(0).sqlstate
objXMLRoot.appendChild objXMLNodes
Set objXMLNodes = objXMLDoc.createElement("description")
objXMLNodes.Text = objConnection.Errors(0).Description
objXMLRoot.appendChild objXMLNodes
Set objXMLNodes = objXMLDoc.createElement("nativeerror")
objXMLNodes.Text = obJConnection.Errors(0).NativeError
objXMLRoot.appendChild objXMLNodes
' Response.write objXMLDoc.xml
end sub
Public Sub createResults()
Dim intRecords, intColumns
intColumns = 0
intRecords = 0
Set objXMLRoot = objXMLDoc.createElement("recordset")
objXMLDoc.documentElement = objXMLRoot
Set objXMLTopic = objXMLDoc.createElement("columns")
objXMLDoc.documentElement.appendChild objXMLTopic
For Each objRecordsetField In objRecordset.Fields
Set objXMLNodes = objXMLDoc.createElement("column")
objXMLNodes.setAttribute "id", Cstr( intColumns )
objXMLNodes.setAttribute "name", objRecordsetField.Name
objXMLTopic.appendChild objXMLNodes
intColumns = intColumns + 1
Next
While Not objRecordset.EOF
Set objXMLTopic = objXMLDoc.createElement("records")
objXMLTopic.setAttribute "id", CStr(intRecords)
objXMLRoot.appendChild objXMLTopic
For i = 0 To intColumns - 1
Set objXMLNodes = objXMLDoc.createElement("col")
if isNull ( objRecordset(i) ) then
objXMLNodes.Text = " "
else
objXMLNodes.Text = trim( objRecordset(i) )
end if
objXMLTopic.appendChild objXMLNodes
Next
intRecords = intRecords + 1
objRecordset.moveNext
Wend
objXMLRoot.setAttribute "effected", cstr( intRecords )
End Sub
Set objXMLDoc = Server.CreateObject( "MSXML2.DOMDocument" )
Set objConnection = Server.CreateObject( "ADODB.Connection" )
objConnection.Open Request( "DSN" ), Request( "user" ), Request( "pass" )
on error resume next
Set objRecordset = objConnection.Execute( Request( "sql" ), intRecordsEffected )
'on error goto 0
if objConnection.Errors.Count = 0 then
call createResults
else
call XMLErrorMessage
end if
response.write objXMLDoc.xml
set objConnection = nothing
set objXMLDoc = nothing
%>
------------------------------- PHP Script ---------------------
<?
header("Content-type: "."text/xml");
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
function XMLErrorMessage()
{
extract($GLOBALS);
$objXMLRoot=$objXMLDoc->create_element("errormessage");
$objXMLDoc=$document_element;
echo $objXMLRoot;
$objXMLNodes=$objXMLDoc->create_element("numerador");
$objXMLNodes->Text=$objConnection->Errors(0).$sqlstate;
$objXMLRoot->append_child=$objXMLNodes;
$objXMLNodes=$objXMLDoc->create_element("localcarga");
$objXMLNodes->Text=$objConnection->Errors(0).$Description;
$objXMLRoot->append_child=$objXMLNodes;
$objXMLNodes=$objXMLDoc->create_element("guia");
$objXMLNodes->Text=$obJConnection->Errors(0).$NativeError;
$objXMLRoot->append_child=$objXMLNodes;
return $ObjXMLDoc.xml;
}
function createResults()
{
extract($GLOBALS);
$intColumns=0;
$intRecords=0;
$objXMLRoot=$objXMLDoc->create_element("recordset");
$objXMLDoc->document_element=$objXMLRoot;
$objXMLTopic=$objXMLDoc->create_element("columns");
$objXMLDoc->documentElement.append_child.$objXMLTopic;
foreach ($objRecordset->Fields as $objRecordsetField)
{
echo $objRecordsetField."Z";
$objXMLNodes=$objXMLDoc->create_element("column");
$objXMLNodes->set_attribute("id",$Cstr[$intColumns]);
$objXMLNodes->set_attribute("name",$objRecordsetField->Name);
$objXMLTopic->append_child=$objXMLNodes;
$intColumns=$intColumns+1;
}
while(!$objRecordset->EOF)
{
$objXMLTopic=$objXMLDoc->create_element("records");
$objXMLTopic->set_attribute("id",$CStr[$intRecords]);
$objXMLRoot->append_child.$objXMLTopic;
for ($i=0; $i<=$intColumns-1; $i=$i+1)
{
$objXMLNodes=$objXMLDoc->create_element("col");
if (!isset($objRecordset[$i]))
{
$objXMLNodes->Text=" ";
} else {
$objXMLNodes->Text=trim($objRecordset[$i]);
}
$objXMLTopic->append_child=$objXMLNodes;
}
$intRecords=$intRecords+1;
$objRecordset->moveNext;
}
$objXMLRoot->set_attribute("effected").$Cstr[$intRecords];
return $objXMLDoc.xml;
}
mysql_connect("localhost","employees","123456");
mysql_select_db("alfagt");
$result=mysql_query($sql);
$objRecordset=mysql_fetch_array($result,MYSQL_ASSOC);
$objXMLDoc=domxml_new_doc("1.0");
$Count=$intRecordsEffected;
//on error goto 0
if ($Count==0)
{
createResults();
}
else
{
XMLErrorMessage();
}
print $objXMLDoc->xml;
$objConnection=null;
$objXMLDoc=null;
?>