GET Übergabe funktioniert nicht richtig....

speicher

Erfahrenes Mitglied
Hallo,

ich weiss nicht so recht, warum meine GET Aufrufe nicht wirklich funktionieren.
Es treten 2 Probleme auf:

1.um $ziel['5'] aufzurufen, welches später durch ein funktionierendes $ziel['nr-1'] ersetzen wollte habe ich $ziel['6-1'] versucht, doch das funktioniert schon einmal nicht.

2. wenn ich die aufruf.php?nr=1 z.b. aufrufe erhalte ich einen Fehler. Da ich nicht so wirklich der PHP Exp. bin hoffe ich einmal darauf, dass mir jemand verraten kann, warum es nicht geht.

Ich danke Euch.




aufruf.php

PHP:
<?php 
include("get.php");

$max = $_index;

for ($x = 1; $x < ($max+1); $x++) {

echo '<br><hr><br>';
echo '<a href="' . print_r($items[$x][link], true) . '"target="News" class="z"><span>['.$x.'/'.$max.'] '.$items[$x][title].'</span><br><font face="Lucida Sans Unicode" size="1">[externer Link]</font></a>';
}

?>

get.php Wichtig hierbei der Problemteil: siehe unten !
PHP:
<?php
class rdfparser {
   var $_items; // array the items
   var $_may; // array what may be done
   var $_act; // string current active
   var $_index; // integer current index
   var $_url; // url to open

    function rdfparser($url)
   {
       $this->_url = $url;
   }

   function parse() 
    {
        $this->_items = array();
        $this->_index = 0;
        $this->_may['parse'] = false;
        
        $parser = xml_parser_create();
        
        xml_set_object($parser, $this);
        xml_set_element_handler($parser, "_startElement", "_endElement");
        xml_set_character_data_handler($parser, "_charHandler");
        
        $fp = fopen($this->_url, "r");
        while(!feof($fp)) {
            $line = fgets($fp, 4096);
            xml_parse($parser, $line);
        }
        fclose($fp);
        
        xml_parser_free($parser);
        
        return $this->_items;
    }

    function _startElement($parser, $name, $attrs)  
    {
        // allow parsing chardata as soon as an element is opened
        $this->_may['char'] = true;
        
        if ($name=="ITEM") {
            // allow parsing as soon as an item element was opened
            $this->_may['parse'] = true;
            // one more item -> increment index
            $this->_index++;
            $this->_items[$this->_index] = Array('title' => '', 'link' => '', 'description' => '');
        } else if ($name=="TITLE") {
            // current active: title
            $this->_act = "TITLE";
        } else if($name=="LINK") {
            // current active: link
            $this->_act = "LINK";
        } else if($name=="DESCRIPTION") {
            // current active: description
            $this->_act = "DESCRIPTION";
        } else {
            // unknown tag, don't allow adding chardata
            $this->_may['char'] = false;
        }
        $this->_act = strtolower($this->_act);

    }
    function _endElement($parser, $name) 
    {
        if($name=="ITEM") {
            // item tag closed: parsing not allowed
            $this->_may['parse'] = false;
        } elseif($name=="TITLE" || $name=="LINK" || $name="DESCRIPTION") {
            // datatag closed, we don't want different chardata
            $this->_may['char'] = false;
        }
    }

    function _charHandler($parser, $data) 
    {
        $data = trim($data);
        
        if(!$this->_may['char'] OR !$this->_may['parse']) {
            return;
        }
        if (isset($this->_items[$this->_index][$this->_act])) {
            $this->_items[$this->_index][$this->_act] .= $data;
        } else {
            $this->_items[$this->_index][$this->_act] = $data;
        }
    }
}
 //----------------------------PROBLEMTEIL

$ziel = array();
$ziel['1'] = "http://www.tagesschau.de/newsticker.rdf";
$ziel['2'] = "http://www.spiegel.de/schlagzeilen/rss/0,5291,19,00.xml";
$ziel['3'] = "logo.gif";
$ziel['4'] = "logo2.gif";
$ziel['5'] = "http://www.tagesschau.de";
$ziel['6'] = "http://www.spiegel.de";



if(isset($_GET['nr']) AND isset($ziel[$_GET['nr']]))
{

if(!file_exists($ziel[$_GET['nr']])) echo "Die Datei ist nicht vorhanden.";

$rdfparser = new rdfparser($ziel['nr']);
}
else
{
$rdfparser = new rdfparser($ziel['2']);
} 

$items = $rdfparser->parse();
$_index = $rdfparser->_index; 


echo 'powered by:<p><a href='.$ziel['6-1'].' target=_new><img border="0" src="' .$ziel['4'].'"></p></a><p><p>';

?>
 
Definiere die Feldelemente mal mit numerischen Schlüsseln und greife auch später mit numerischen Schlüsseln auf sie wieder zu, etwa wie folgt:
PHP:
<?php
	[…]
	$ziel = array();
	$ziel[1] = 'http://www.tagesschau.de/newsticker.rdf';
	$ziel[2] = 'http://www.spiegel.de/schlagzeilen/rss/0,5291,19,00.xml';
	$ziel[3] = 'logo.gif';
	$ziel[4] = 'logo2.gif';
	$ziel[5] = 'http://www.tagesschau.de';
	$ziel[6] = 'http://www.spiegel.de';


	if( isset($_GET['nr']) && isset($ziel[$_GET['nr']]) ) {
		if( !file_exists($ziel[$_GET['nr']]) ) {
			echo "Die Datei ist nicht vorhanden.";
		}
		$rdfparser = new rdfparser($ziel[$_GET['nr']]);
	} else {
		$rdfparser = new rdfparser($ziel[2]);
	}

	$items = $rdfparser->parse();
	$_index = $rdfparser->_index;

	echo 'powered by:<p><a href="'.$ziel[(6-1)].'" target="_blank"><img border="0" src="'.$ziel[4].'"></p></a><p><p>';

?>
 
Hallo vielen Dank für die Hilfe.

Das erste Problem ist damit beseitigt, jedoch das zweite noch nicht :(. Ein Aufruf


aufruf.php?nr=1 oder 2 ...etc. ist immer noch nicht fehlerfrei möglich. Als Fehler bekomme ich irgendwie not valid stream format...oder so etwas in der Art. Ich kann es leider nicht wirklich kopieren, da danach der Browser den Geist aufgibt. Ich freue mich auf weitere Hilfe.

Danke Euch...
 
Zurück