want Rss feed to my page, not work need help

Discussion in 'PHP' started by alan8888, Mar 22, 2008.

  1. #1
    Is this because of my web host do not support fopen funtion? or there is something wrong with my script.
    or the Chmod Problem. I am very new to php. i really need some help thx..


    Anyone can tell me Why I got a Error

    fopen(http://search.ebay.com/iphone_W0QQc...gnZQ2d1QQsaslcZ0QQsaslopZ1QQsofocusZbs=hybird cars) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 500 Server Error in
    php on line 186
    could not open XML input



    <?php
    set_time_limit(0);
    
    $file = "http://search.ebay.com/iphone_W0QQcatrefZC5QQdfspZ1QQfbdZ1QQfclZ3QQflocZ1QQfromZR6QQfrppZ50QQfsooZ1QQfsopZ1QQfssZ0QQftrtZ1QQftrvZ1QQnojsprZyQQpfidZ0QQsaaffZafcjQQsabfmtsZ0QQsacatZQ2d1QQsacqyopZgeQQsacurZ0QQsadisZ200QQsaobfmtsZexsifQQsargnZQ2d1QQsaslcZ0QQsaslopZ1QQsofocusZbs=$auction";
    
    $rss_channel = array();
    $currently_writing = "";
    $main = "";
    $item_counter = 0;
    
    function startElement($parser, $name, $attrs) {
       	global $rss_channel, $currently_writing, $main;
       	switch($name) {
       		case "RSS":
       		case "RDF:RDF":
       		case "ITEMS":
       			$currently_writing = "";
       			break;
       		case "CHANNEL":
       			$main = "CHANNEL";
       			break;
       		case "IMAGE":
       			$main = "IMAGE";
       			$rss_channel["IMAGE"] = array();
       			break;
       		case "ITEM":
       			$main = "ITEMS";
       			break;
       		default:
       			$currently_writing = $name;
       			break;
       	}
    }
    
    function endElement($parser, $name) {
       	global $rss_channel, $currently_writing, $item_counter;
       	$currently_writing = "";
       	if ($name == "ITEM") {
       		$item_counter++;
       	}
    }
    
    function characterData($parser, $data) {
    	global $rss_channel, $currently_writing, $main, $item_counter;
    	if ($currently_writing != "") {
    		switch($main) {
    			case "CHANNEL":
    				if (isset($rss_channel[$currently_writing])) {
    					$rss_channel[$currently_writing] .= $data;
    				} else {
    					$rss_channel[$currently_writing] = $data;
    				}
    				break;
    			case "IMAGE":
    				if (isset($rss_channel[$main][$currently_writing])) {
    					$rss_channel[$main][$currently_writing] .= $data;
    				} else {
    					$rss_channel[$main][$currently_writing] = $data;
    				}
    				break;
    			case "ITEMS":
    				if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
    					$rss_channel[$main][$item_counter][$currently_writing] .= $data;
    				} else {
    					$rss_channel[$main][$item_counter][$currently_writing] = $data;
    				}
    				break;
    		}
    	}
    }
    
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    if (!($fp = fopen($file, "r"))) {
    	die("could not open XML input");
    }
    
    while ($data = fread($fp, 4096)) {
    	if (!xml_parse($xml_parser, $data, feof($fp))) {
    		die(sprintf("XML error: %s at line %d",
    					xml_error_string(xml_get_error_code($xml_parser)),
    					xml_get_current_line_number($xml_parser)));
    	}
    }
    xml_parser_free($xml_parser);
    
    
    if (isset($rss_channel["ITEMS"])) {
    	if (count($rss_channel["ITEMS"]) > 0) {
    		for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
    			if (isset($rss_channel["ITEMS"][$i]["LINK"])) {
    			print ("\n<div class=\"itemtitle\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
    			} else {
    			print ("\n<div class=\"itemtitle\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</div>");
    			}
    			 print ("<div class=\"itemdescription\">" . $rss_channel["ITEMS"][$i]["DESCRIPTION"] . "</div><br />"); 		}
    	} else {
    		print ("No News Found");
    	}
    }
    ?>
    PHP:

     
    alan8888, Mar 22, 2008 IP
  2. Gordaen

    Gordaen Peon

    Messages:
    277
    Likes Received:
    12
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Are you setting $auction (line 4) somewhere? Have you tried outputting the URL before trying to fetch the page so you can verify it is correct? You ought to use a class instead of these functions that all access the same globals.
     
    Gordaen, Mar 22, 2008 IP
  3. Kennedy

    Kennedy Peon

    Messages:
    994
    Likes Received:
    9
    Best Answers:
    0
    Trophy Points:
    0
    #3
    search.ebay.com/iphone_W0QQca...ocusZbs=hybird cars

    should be

    search.ebay.com/iphone_W0QQca...ocusZbs=hybird%20cars
    spaces aren't allowed in URLs when using fopen.
     
    Kennedy, Mar 23, 2008 IP