Jump to content

Looping through xml issue


Jdsflash

Recommended Posts

http://www.flashmajic.com/Google/index22.pgp

Im getting 6 broken images on this page for some reason. Can you explain what im doing wrong?

 

source files

http://www.flashmajic.com/Google/index22.zip

 

<?php

// Simple enough, the location of the XML file
$xml_file = "../Surveys.xml";

// These are both keys that we will use later.
$xml_headline_key = "*NEWS*STORY*HEADLINE";
$xml_description_key = "*NEWS*STORY*DESCRIPTION";
$xml_link_key = "*NEWS*STORY*LINK";
$xml_image_key = "*NEWS*STORY*IMAGE";
// An array for storing our information. An array is nice to use here
// because it allows us to parse the XML and then temporarily forget about it
// allowing use greater freedom to edit and maniplulate the output.
$story_array = array();

// A counter that will come into use later.
$counter = 0;

// A simple class that will make our life easier. We could use an 
// associative array as well, but I prefer to just write up the class. =)
class xml_story{
var $headline, $description, $links, $image;
}

// Once again, this is what we want our parser to do when it reaches a start tag
function startTag($parser, $data){
global $current_tag;
$current_tag .= "*$data";
}

// Same thing here as well. This tells the parser what to do when it trips over an end tag.
function endTag($parser, $data){
global $current_tag;
$tag_key = strrpos($current_tag, '*');
$current_tag = substr($current_tag, 0, $tag_key);
}

// When the parser hits the contents of the tags it will perform this function.
// This will all be explained word for word in the tutorial
function contents($parser, $data){
global $current_tag, $xml_headline_key, $xml_description_key, $xml_link_key, $xml_image_key, $counter, $story_array;
switch($current_tag){
	case $xml_headline_key:
		$story_array[$counter] = new xml_story();
		$story_array[$counter]->headline = $data;
		break;
	case $xml_description_key:
		$story_array[$counter]->description = $data;
		break;
	case $xml_link_key:
		$story_array[$counter]->links = $data;
		$counter++;
		break;
	case $xml_image_key:
		$story_array[$counter]->image = $data;
		$counter++;
		break;
}
}

// Creates the parser
$xml_parser = xml_parser_create();

// Sets the element handlers for the start and end tags
xml_set_element_handler($xml_parser, "startTag", "endTag");

// Sets the data handler, same as before...
xml_set_character_data_handler($xml_parser, "contents");

// Opens the file or gives an error message
$fp = fopen($xml_file, "r") or die("Could not open file");

// Reads the file or gives an error message
$data = fread($fp, filesize($xml_file)) or die("Could not read file");

// This if statement is exactly the same as before. It parses the xml document
// according to the functions we have defined; and it returns an error message
// if the parsing fails
if(!(xml_parse($xml_parser, $data, feof($fp)))){
die("Error on line " . xml_get_current_line_number($xml_parser));
}

// Frees up the memory 
xml_parser_free($xml_parser);

// Closes the file
fclose($fp);

?>

<html>
<head>
<title>CNT HEADLINE NEWS</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center"><h2>Public Surveys</h2></div>
<table width="90%">
<tr>
<td valign="top">
<?php 
// A simple for loop that outputs our final data.
for($x=0;$x<count($story_array);$x++){	

echo "<h3><a href=".$story_array[$x]->links.">".$story_array[$x]->headline."</h3></a>";

echo "<h4>".$story_array[$x]->description."</h4>";
echo "<h4><img src='".$story_array[$x]->image."'/></h4>";

}
?>
</td>
<td valign="top"><script type="text/javascript"><!--
google_ad_client = "pub-7629688820642243";
/* 336x280, created 10/17/09 */
google_ad_slot = "7123381247";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td>
</tr>
</table>
</body>
</html>

 

xml page

<news>
<story>

<headline>Title</headline>
<description>Description</description>
<link>http://www.freesurveybuilder.com/quiz.php?objID=61119029102009&title=Free Survey Builder</link>
<image>http://www.flashmajic.com/Google/Soccer_News/screen.jpg</image>
</story>
<story>

<headline>Title</headline>
<description> Description </description>
<link>http://www.freesurveybuilder.com/quiz.php?objID=61119029102009&title=Free Survey Builder</link>
<image>http://www.flashmajic.com/Google/Soccer_News/screen.jpg</image>
</story>
</news>

Link to comment
https://forums.phpfreaks.com/topic/183517-looping-through-xml-issue/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.