質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

706閲覧

phpファイルにxmlから読み込み最新の5件だけ表示させたい

horiaya

総合スコア14

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/08 10:07

編集2017/09/11 07:54

まったくの初心者です。
外部からxmlを読み込んで、phpファイルに<li></li>内を最新の5件だけ
表示させたいのですが、この部分については<ul></ul>以外なにも表示されません。
エラーも出ていません。

いろいろ調べてみているのですが、なかなか解決できず…
間違っているところをご指摘いただいてもよいでしょうか。
PHP5.3.29です。
どうぞよろしくお願いいたします。

【↓表示用phpファイル】

<?php $xml = "aaa.xml"; //ファイルを指定 $xmlData = simplexml_load_file($xml); //xmlを読み込む ?> <ul> <?php foreach ($xmlData->channel->item as $data) { $i = 0; $kiji = 5; if($i >= $kiji){break;} else{ echo "<li> <p> <a href='$data->link;'><img src=\"$data->photo\"; /> </a><br> <a href='$data->link;'>$data->cap; </a><br> <a href='$data->link;'>$data->title; </a><br> <a href='$data->link;'>$data->dates; </a> $data->new; $data->free; </p> </li>"; $i++; } } ?> </ul>

【読み込むxmlファイル】

<?xml version="1.0" encoding="utf-8"?> <rss> <channel> <item> <title>タイトル7</title> <link>https://www.aaa.jp/articles/view/7</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph7.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル6</title> <link>https://www.aaa.jp/articles/view/6</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph6.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル5</title> <link>https://www.aaa.jp/articles/view/5</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph5.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル4</title> <link>https://www.aaa.jp/articles/view/4</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph4.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル3</title> <link>https://www.aaa.jp/articles/view/3</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph3.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル2</title> <link>https://www.aaa.jp/articles/view/2</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph2.png</photo> <cap>ここにテキストが入ります</cap> </item> <item> <title>タイトル1</title> <link>https://www.aaa.jp/articles/view/1</link> <datess>2017/09/08</datess> <new>NEW</new> <free>FREE</free> <photo>http://aaa/img/ph_sample/ph1.png</photo> <cap>ここにテキストが入ります</cap> </item> </channel> </rss>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/09/08 10:42

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
seastar3

2017/09/08 12:49

読み取るxmlファイルの見本かスキーマを示して下さい。
horiaya

2017/09/11 07:36

kei344様、ありがとうございます。WindowsのFFではボタンが表示されないようでしばらく探しましたが、ブラウザを変えたところ表示されたので意味がわかりました。
guest

回答3

0

elseの中の書き方が違うのではないですか。

php

1 else { 2 echo '<li><p>'; 3 echo '<a href='.$data->link.'><img src="'.$data->photo.'" /></a><br>'; 4 echo '<a href='.$data->link.'>'.$data->cap.'</a><br>'; 5 echo '<a href='.$data->link.'>'.$data->title.'</a><br>'; 6 echo '<a href='.$data->link.'>'.$data->dates.'</a>'.$data->new.$data->free; 7 echo '</p></li>'; 8 $i++; 9 }

参考まで。

投稿2017/09/11 08:45

8-0_nyan5

総合スコア2352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

HTMLタグも含めて何も表示されないということであれば、

php

1 foreach ($xmlData->channel->item as $data) {

の部分で、$xmlDataまたは$xmlData->channel->itemがカラの為、
その後のループ部分が実行されていないのではないかと思います。

その場合は、エラーメッセージで
PHP Warning: Invalid argument supplied for foreach() in /home/ubuntu/workspace/hoge.php on line 5
などのように表示されていると思います。

いずれにせよ、XMLの取得が上手く行っていないと思われるので、
XMLの内容を再確認してご自身で修正するか、質問にXMLのサンプルを追記して下さい。

投稿2017/09/09 00:06

tsuemura

総合スコア663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horiaya

2017/09/11 07:40

ご回答ありがとうございます。いろいろと説明不足ですみません。「何も表示されない」というのは、前後のHTMLは表示されますが、このphp部分の記述については何も表示されないという状態です。上記のコードの部分は<ul></ul>のみが表示されます。エラーはでません。XMLの内容を確認してみます。
guest

0

自己解決

回答いただきありがとうございました。
正しいのかわかりませんが、書き方を変更して、下記のように記述することにしました。

<?php $xml = "aaa.xml";//ファイルを指定 $xmlData = simplexml_load_file($xml);//xmlを読み込む ?> <?php $i = 0; $kiji = 5; foreach ($xmlData->channel->item as $data) {?> <div class="cf"> <dd><a href="<?php echo $data->link; ?>" target="_blank"><img src="<?php echo $data->photo; ?>"></a></dd> <dd><a href="<?php echo $data->link; ?>" target="_blank"><?php echo $data->title; ?> <span class="dates"><?php echo $data->dates; ?></span></a> <span class="new"><?php echo $data->new; ?></span><span class="free"><?php echo $data->free; ?></span> </dd></div> <?php $i++; if($i >= $kiji){ break;}?> <br clear="all"> <?php } ?>

投稿2017/09/12 06:04

horiaya

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問