こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

はじめて質問させていただきます!

はじめて質問させていただきます!
宜しくお願い申し上げます!

友人にajaxでmysqlから最新の1件のニュースデータを引っ張り出して表示させるphpスクリプトを作ってもらいました。
こんな感じになります。

<!---ここからがスクリプトで--->

<?php
$i = 0;
foreach ($news as $thenews):
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
?>
<dl>
<dt>
<?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt>
<dd>
<div style="height: 60px; overflow-y: auto;">
<?php echo $thenews['News']['body']; ?>
</div>
</dd>
</dl>
<hr />
<?php endforeach; ?>
<dl>
<dt><a href="news/">■過去のニュースはこちら</a></dt>
</dl>

<!---ここまでで終りっす--->

このスクリプトを変えて、最新の2件のニュースデータを引っ張り出して表示させようと思って、こんな風にしてみたのですが、こうすると同じニュース(最新の1件)が2個表示されてしまいました。

<!---ここからがスクリプトで--->
<?php
$i = 0;
foreach ($news as $thenews):
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
?>
<dl>
<dt>
<?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt>
<dd>
<div style="height: 60px; overflow-y: auto;">
<?php echo $thenews['News']['body']; ?>
</div>
</dd>
<dt>
<?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt>
<dd>
<div style="height: 60px; overflow-y: auto;">
<?php echo $thenews['News']['body']; ?>
</div>
</dd>
</dl>
<hr />
<?php endforeach; ?>
<dl>
<dt><a href="news/">■過去のニュースはこちら</a></dt>
</dl>

<!---ここまでで終りっす--->

当の友人に直してもらおうと連絡してみても、音信不通でメールも帰ってこない状態なので困ってしまい、こちらに質問させていただきました。

こんなソース見ても、わからないのかも知れませんが、もし参考になるようなご意見をいただけましたら幸いです!

何卒、宜しくお願い申し上げます。

投稿日時 - 2010-06-17 17:39:15

QNo.5975554

困ってます

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(7)

ANo.7

んー、#6の補足読みました。
もう一度言いますが、「$news の『中身』が どこで生成されているか?」が問題なのです。
その部分のコードがみなさん知りたいのです。
それを調べる事が出来るのは、当人だけなのです。

投稿日時 - 2010-06-20 15:24:56

ANo.6

え~っと。。。すんごい申し訳ないです。
俺の言い方が悪かったですね。
内容ってのは、ここまで詳しい内容でなくて良かったんですけどね^^;
そちらが「こうすると同じニュース(最新の1件)が2個表示されてしまいました。」と書いていたので、$newsの中身自体が 同じものが二つ入っているのか、表示の時になんか間違っちゃっているのかを知りたかっただけなんです。
既に #1と#3で言われている通り、単純に$newsの中身の分だけ繰り返してると思いますので、$newsの中身を代入している部分に問題があるとは思うのですが、それを確認したかったのです。
既に出ている事をなぞってしまっただけですが、結局の所「$news の中身が どこで生成されているか?」って事につきるかもしれません。
cakePHP 使ってるとしたら、知らない人には だいぶ ややこしい事になると思いますので、素直に作ってくれた人の回答を待つのがいいかもしれません。

ちなみに、#2のAJAX云々に関しては、まぁ、やっている事はざっくりと把握できていたので気にしませんでした。

投稿日時 - 2010-06-19 04:26:03

ANo.5

>ajaxはページを静的なhtmlで済ませるために、これで生成されるページをサイトにムリクリ表示するために使っているだけですってば。
それって単純にAJAXをSSIみたいな使い方して生成したhtmlをインクルードしているだけって事か?
だったら最初からそう書かないと。
君の出しているソースだとデータベースとのやり取り(この場合はselect文)の処理が書かれていないから
そこを別のプログラムでajaxがなにかしらの使い方されていると君の文書から取れる。
質問するなら情報は小出しにするな。

投稿日時 - 2010-06-19 01:14:01

補足

誤解をうけるような書き方をして申訳ございません。

ajaxはそんな感じです。
HTMLへの記述はこうです。

ヘッダに以下、
<script type="text/javascript">
<!--
$(document).ready(function() {
$.ajax({
url: "/news/ajax",
cache: false,
success: function(html){
$("#news").html(html);
}
});
});
-->
</script>

でもって本文に、
<div id="news">…</div>
を記述しています。
もしかして上記も参考になりますか?
わかりにくくて、もうしわけございません。

投稿日時 - 2010-06-20 10:31:02

ANo.4

>?????
>問読んでもらってますか?
読んだからこそどこにAJAXが関係しているのか不明。AJAXが何か理解しているのか?
で肝心のデータベースにアクセスするコードも秘密なのは?

投稿日時 - 2010-06-18 19:26:45

補足

??????
ここってphpの質問のカテゴリですよね?
ajaxはページを静的なhtmlで済ませるために、これで生成されるページをサイトにムリクリ表示するために使っているだけですってば。

投稿日時 - 2010-06-18 19:37:47

ANo.3

とりあえず、このスクリプトの最初に print_r($news); を入れて、表示された内容を見ると、何かつかめるかもしれません。

投稿日時 - 2010-06-18 17:08:37

お礼

ありがとうございます!!

早速やってみました。
適所黒塗りいたしましたが、以下が表示結果でした。

Array ( [0] => Array ( [News] => Array ( [id] => 21 [date] => 2010-06-08 [title] => 本日のお知らせ [body] =>
新規に物件情報を●●件登録しました。
JR●●線 大宮駅西口徒歩5分
●●●●●●●●●●●●●●●
スケルトン●●.●●坪 賃●●●,●●●円

[created] => 2010-06-12 20:08:41 [modified] => 2010-06-12 20:12:05 ) ) )

何かつかめそうな内容ですか??
ご意見いただけましたら幸いです!

投稿日時 - 2010-06-18 18:07:37

ANo.2

mpx

ソースを見る限り、$newsに入っているニュースデータの数だけ
表示するように組まれています。
これで1件しか表示しないのなら mysqlから$newsに1件分しか
読み込まれていません。

データベースからの読み込み部分は開示されていないので
具体的な例示はできませんが、
mysqlから2件のデータを読み込むように変更してください。

投稿日時 - 2010-06-18 02:19:22

お礼

ご回答ありがとうございます!
$newsにニュースを突っ込んでる部分を探してみます!
このスクリプトファイル自体は上記で完結しています。
このファイルをHTML上でajaxで指定してニュースソースを表示させています。

参考になるか分かりませんが、以下のような階層に入っているのでcakeを使っていると思います。
cake/app/view/news/ajax.ctp

うーん、どこで取得してるんでしょうか。

投稿日時 - 2010-06-18 13:42:22

ANo.1

> foreach ($news as $thenews):
   …
> <?php endforeach; ?>

そもそもこの構文自体が$newsに複数のニュースがあれば、その件数だけ表示するようになっています。
したがって、ニュースを2件表示するなら最初に$newsに2件のニュースが入っている必要があります。

ニュースの取得自体はこのソース以外のところでやっているようなので、どうすれば良いかは不明です。

投稿日時 - 2010-06-17 18:12:40

お礼

ご回答ありがとうございます!
なるほどですね。
ニュースの取得はどこでやってるんだろうか…。
ちょっと調べてみます!
ご回答、ありがとうございました!

投稿日時 - 2010-06-18 13:29:20

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-