Click to See Complete Forum and Search --> : php to asp


jrthor2
05-27-2004, 08:09 AM
I have the following php script:


<?php
$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL, "http://ejse.com/WeatherService/Service.asmx/GetNineDayForecastInfo?zipCode=$zipCode");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$weather_input=curl_exec ($ch);
curl_close ($ch);
$weather_data = array();
$xml_current_tag_state = '';
$day_count = 0;
global $weather_data, $xml_current_tag_state;


function startElementHandler($parser,$element_name,$element_attribs)
{
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;

}

function endElementHandler($parser,$element_name)
{
global $day_count, $xml_current_tag_state;
if ($element_name == "DAY1" OR $element_name == "DAY2" OR $element_name == "DAY3" OR $element_name == "DAY4" OR $element_name == "DAY5" OR $element_name == "DAY6" OR $element_name == "DAY7" OR $element_name == "DAY8" OR $element_name == "DAY9")
{
$day_count++;
}
$xml_current_tag_state = "";
}

function weatherDataHandler($parser, $data)
{
global $weather_data, $xml_current_tag_state, $day_count;
if($xml_current_tag_state == "")
return;
switch ($xml_current_tag_state)
{
case "DAY":
$weather_data[$day_count]["Day"] = $data;
break;
case "DATE":
$weather_data[$day_count]["Date"] = $data;
break;
case "ICONINDEX":
$weather_data[$day_count]["IconIndex"] = $data;
break;
case "FORECAST":
$weather_data[$day_count]["Forecast"] = $data;
break;
case "HIGH":
$weather_data[$day_count]["High"] = $data;
break;
case "LOW":
$weather_data[$day_count]["Low"] = $data;
break;
case "PRECIPCHANCE":
$weather_data[$day_count]["PrecipChance"] = $data;
break;
default:
$xml_current_tag_state = "DAY1";
break;
}


}

if (!($xml_parser = xml_parser_create()) )
die ("Couldn't create XML parser!");

xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "weatherDataHandler");

xml_parse($xml_parser, $weather_input);

xml_parser_free($xml_parser);

echo "<h4>Weather for: $zipCode</h4>";
for ($i=0;$i <$day_count; ++$i)
{
echo "<p>";
echo "<img src=\"weather_icons/".$weather_data[$i]["IconIndex"].".gif\" height=\"52\" width=\"52\" alt=\"".$weather_data[$i]["Forecast"]."\"><br>";
//echo "Day = ".$weather_data[$i]["Day"]."<br>";
echo "Date = ".$weather_data[$i]["Date"]."<br>";

echo "Forecast = ".$weather_data[$i]["Forecast"]."<br>";
echo "High = ".str_replace("°","&deg;",$weather_data[$i]["High"])."<br>";
echo "Low = ".str_replace("°","&deg;",$weather_data[$i]["Low"])."<br>";
echo "PrecipChance = ".$weather_data[$i]["PrecipChance"]."<br>";
echo "</p>";
}


?>



below is my attempt to convert this to asp. I get this error:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'startElementHandler'


<%
Set xmlDoc = Server.CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.setProperty "ServerHTTPRequest", true
ReturnValue = xmlDoc.Load ("http://ejse.com/WeatherService/Service.asmx/GetNineDayForecastInfo?zipCode=17036")
If ReturnValue = False Then
Set xmlDocError = xmlDoc.ParseError
Response.Write "&#xa0;&#xa0;" & xmlDocError.ErrorCode & " - " & xmlDocError.Reason & " URL=" & xmlDocError.URL & "<br>"
Set xmlDocError = Nothing
Else

weather_data =Array ( )
xml_current_tag_state = ""
day_count = 0
Dim weather_data, xml_current_tag_state

Function startElementHandler ( element_name,element_attribs )

'Dim element_name, element_attribs

xml_current_tag_state = element_name
End Function

Function endElementHandler ( element_name )

'Dim element_name

If element_name = "DAY1" OR element_name = "DAY2" OR element_name = "DAY3" OR element_name = "DAY4" OR element_name = "DAY5" OR element_name = "DAY6" OR element_name = "DAY7" OR element_name = "DAY8" OR element_name = "DAY9" then
day_count = day_count + 1
End If

xml_current_tag_state = ""
End Function

Function weatherDataHandler ( data )

'Dim parser, data, weather_data()

If xml_current_tag_state = "" then



End If
select case (xml_current_tag_state)
CASE "DAY"
weather_data(day_count)("Day") = data
break
case "DATE"
weather_data(day_count)("Date") = data
break
case "ICONINDEX"
weather_data(day_count)("IconIndex") = data
break
case "FORECAST"
weather_data(day_count)("Forecast") = data
break
case "HIGH"
weather_data(day_count)("High") = data
break
case "LOW"
weather_data(day_count)("Low") = data
break
case "PRECIPCHANCE"
weather_data(day_count)("PrecipChance") = data
break
default
xml_current_tag_state = "DAY1"
break
End select
End Function


'If xml_parser <> xml_parser_create() then

')
'die ("Couldn't create XML parser!")

'End If
Call (startElementHandler)
Call (endElementHandler)
Call (weatherDataHandler)

'xml_parse(xml_parser, weather_input)

'xml_parser_free(xml_parser)

Response.Write "<h4>Weather for: " & zipCode & "</h4>"
i=0
response.write day_count

Do While i < day_count

Response.Write "<p>"
Response.Write "<img src=""weather_icons/" & weather_data(i)("IconIndex") & ".gif"" height=""52"" width=""52"" alt=""" & weather_data(i)("Forecast") & """><br>"
' echo "Day = ".gv_weather_data($i)["Day"]."<br>";
Response.Write "Date = " & weather_data(i)("Date") & "<br>"
Response.Write "Forecast = " & weather_data(i)("Forecast") & "<br>"
Response.Write "High = " & Replace ( weather_data(i)("High") , "°", "&deg;" ) & "<br>"
Response.Write "Low = " & Replace ( weather_data(i)("Low") , "°", "&deg;" ) & "<br>"
Response.Write "PrecipChance = " & weather_data(i)("PrecipChance") & "<br>"
Response.Write "</p>"
i = i + 1

Loop

End If
%>

buntine
05-27-2004, 10:21 PM
You define your functions, which take two arguments. But when you call them, you have not included any parameters.

The Call statement should only be used when calling a sub routine which takes parameters. Also, its not a function, so parantheses are not required.

So, your function invokation should look like this

startElementHandler(argument1, argument2)
endElementHandler(argument1)
weatherDataHandler(argument1)


Regards,
Andrew Buntine.

jrthor2
05-28-2004, 07:34 AM
any idea what should be passed is for these functions?

startelementHandler(element_name,element_attribs)
endelementHandler(element_name)
weatherDataHandler(data)

not sure where element_name, element_attribs, data are coming from?

buntine
05-30-2004, 08:31 PM
Well, look at the PHP code. The answer is there if you look at the arguments you passed to those functions..