0

だから私がやろうとしているのは:このクエリを実行する:SELECT FW_ArtSrcLink FROM FW_ArtSrc WHERE OneSet =12つの結果を出力する:img1

2つの結果を$resultvarに追加し、結果(2である-写真に示されているように)を中間処理してから、このようになっている$r部分を出力します。$r

# Source of Article Info-->
            $SrcTitle=$newsStory[$i]->title;
            $SrcLink=$newsStory[$i]->link;

    # Actual News Article Info -->
            $title=$newsStory[$i]->title;
            $desc=$newsStory[$i]->description;

以下のような完全なコードは、現在、sports.yahoo.com / Tennis/ rss.xmlの2番目の結果からのみ取得されています。

## Loop through results from mysql
try{
    #connection string
        // $dbconn = new PDO('mysql:host=localhost;port=3306;dbname=mydatabase',array(PDO::ATTR_PERSISTENT => true));
        $dbconn = new PDO('mysql:host=localhost;port=3306;dbname=mydatabase','myuser','mypass',array(PDO::ATTR_PERSISTENT => true));
        $q = $dbconn->prepare("SELECT FW_ArtSrcLink FROM FW_ArtSrc WHERE OneSet=1");
    #call stored proc
        $q->execute();
    #get the rows into an array
        $result = $q->fetchAll();
        $newsStory[] = array();
        foreach($result as $r){
            $xmlUrl = $r['FW_ArtSrcLink'];
            $ConvertToXml = simplexml_load_file($xmlUrl);
            # -> Setup XML
            $newsStory = $ConvertToXml->channel->item;
        }

    # -----> Load News Stories
        for($i = 0;$i<sizeof($newsStory); $i++){

    # Source of Article Info-->
            $SrcTitle=$newsStory[$i]->title;
            $SrcLink=$newsStory[$i]->link;

    # Actual News Article Info -->
            $title=$newsStory[$i]->title;
            $desc=$newsStory[$i]->description;

    # Output Results ------------>      
            echo '<hr>';
            echo '<strong>'.'Title:'.$title.'</strong>'.'(via: <a href=\''.$SrcLink.'\'>'.$SrcTitle.'</a>'.'<br />';
            //echo 'Link:'.$link.'<br />';
            echo 'Description'.$desc.'<br>';
            ##echo 'count '.count($result);
            echo '<hr>';
        }
} // try

私はここで何が間違っているのですか?

単一のdb結果からの単純な出力の例。これは、動的に使用するのではなく、ハードコーディングを結果と呼んでいます。

$xmlUrl ="http://edge1.catalog.video.msn.com/videoByTag.aspx?tag=Fox%20Sports_NBA%20news&ns=MSNVideo_Top_Cat&mk=us&sd=-1&sf=ActiveStartDate&vs=0&ind=&ps=&rct=&ff=88&responseEncoding=rss&title=FOX%20Sports%20Video%20on%20MSN:%20NBA&template=foxsports&p=foxsports";
$ConvertToXml = simplexml_load_file($xmlUrl);

img2

4

1 に答える 1

1

このコードブロックを変更してみてください。

    $newsStory = array();
    foreach($result as $r){
        $xmlUrl = $r['FW_ArtSrcLink'];
        $ConvertToXml = simplexml_load_file($xmlUrl);
        # -> Setup XML
        $newsStory[] = $ConvertToXml->channel->item;
    }

以前のコードは、$newsStoryを配列の配列として宣言していました。次に、その定義を上書きし、$newsStoryを単純な文字列に変換していました。
それはあなたが気づいた振る舞いを説明します:「現在は2番目の結果から引っ張っているだけです」。

また、PHPエラーについて教えてくれなかったので、おそらくそれらをオンにしなかったでしょう。スクリプトの先頭に次の行を追加します。

error_reporting(E_ALL); // tells PHP to report all errors
ini_set('display_errors', 1); // tells PHP to display all errors on the screen

ドキュメント:array ini_set error_reporting

于 2012-07-26T00:49:00.973 に答える