• ベストアンサー

外部phpファイルを読み込むことができない

ネットで検索し続けても本を買ってもどうしても解決しないのです。 教えてください。 やりたいことはMySQLのデータベースにphpでアクセスしに行き、 phpファイル上に contents=ああああああ と表示させたものを Flashで読み込んでテキストフィールドに表示させるということです。 ソースは次のようになっています。(FLASH上のテキストフィールドは「textarea」です。) onClipEvent (load) { my_lv = new LoadVars(); my_lv.onLoad = function(success) { if (success) { textarea.text = my_lv.contents; } else { textarea.text = "読み込みに失敗しました。"; } }; my_lv.load('contents.php?id=1'); } 基本的なLoadvarsのサンプルのようですが、contents.php?id=1が 読み込めません。(contents.php?id=1に直接アクセスすると contents=あああああああああ と表示されます) このcontents.php?id=1をcontents.txtのようにテキストファイルにして my_lv.load('contents.txt');とするとすんなりと読み込めます。 FLASHのバージョンは8で、httpsのサイト内で表示を行おうとしています。ファイルのパーミッションをすべて777にしてもだめでした。また、contents.phpを絶対パス指定してもだめでした。 おそらくちょっとしたことだと思うのですが、もう何日もはまっています。どなたか教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.2

>読み出しエラーになってしまうのです。 successフラグがfalseとなって、 textarea に"読み込みに失敗しました。"と 表示されるということでしたら、ロード処理が正常に終了しなかったということなのでphp側に問題があるような気がします。 echo "contents=seikou"; だけ(DBとか使わないで)の単純なものだけで試したり (日本語だと文字コードの問題もあるのでアルファベットの方がいい)、 Flashが対応している文字コードでphpが記述されているかを確認してみてください。 (UTF-8 と Shift-JIS のみらしいです)

yossi617
質問者

お礼

ありがとうございます。 シンプルに記述したら原因がわかりました。 phpのDB読み出しファイルをxoops上に設置していたのですが phpファイルの最初に記述していた include '../../mainfile.php'; という記述をコメントアウトしたら読み込めるようになりました。 まさかこれが原因とは思いもよらなかったため、 xoopsを使っていたこと自体質問に書いていませんでしたので 回答していただいたみなさんには申し訳ありませんでした。 具体的にこのinclude '../../mainfile.php';の何がいけないのかは まだ特定できていませんが、問題にぶつかったときに最初から シンプルに考え直すことを教えていただきました。 ありがとうございます。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

> Flashで読み込んでテキストフィールドに表示させるということです。 > > ソースは次のようになっています。 > (FLASH上のテキストフィールドは「textarea」です。) 肝心なことを全く書かれていませんよ。 これは, 肝心な部分を肝心ではないと思っていらっしゃる部分が問題なのかもしれません。 > FLASH上のテキストフィールドは「textarea」です。 これ自体はスクリプトを見ればわかります。 そうではなくて, インスタンス名「textarea」のテキストフィールドはどこにあるのでしょうか? スクリプトに従うと, onClipEvent (load) { ~ } を書かれた ムービークリップ の中にあるということになります。 それで良いのでしょうか? (良いのか悪いのかはこちらではわかりません。) そもそも, なぜそんな変な所にスクリプトを書かれているのかが疑問ですが。 もし,インスタンス名「textarea」のテキストフィールドが, ムービークリップの中ではなく, メインムービー(_root)のタイムラインに存在する物でしたら, textarea.text = my_lv.contents;  ↓ 変更 ↓ _root.textarea.text = my_lv.contents; でなければなりません。 また,「textarea」は間違いなくインスタンス名ですか? 変数名に「textarea」と付けていましても,スクリプトは正常に動作しませんよ。 ---P.S------- PHP に関してはわからない者ですので, そちらの問題はヌキということでの回答です。 また, ムービープレビューなどSWF を直接見た場合ではなく, HTML に貼り付けた SWF を, ブラウザで見たという前提での回答です。 なお, 書かれていらっしゃるスクリプトを, インスタンス名「textarea」が入っているムービークリップに書いて, 外部テキストファイル「contents.php」(拡張子は .php ですが単なるテキストファイル) を SWF や HTML と同じフォルダ内に置いて, HTML をブラウザで開けば, ちゃんと,ムービークリップ内のインスタンス名「textarea」のテキストフィールドに, あああああああああ が表示されました。 また,テキストファイル「contents.php」の文字コードは UTF-8 にしました。

yossi617
質問者

補足

ご指導ありがとうございます。 お察しの通りムービークリップの中にダイナミックテキストでインスタンス名がtextarea、変数名contentsがあります。 なぜこんなやり方かというと購入した本のサンプルそのままに書いていたからです。もっとシンプルなやり方があればそのようにしたいと思います。(←詳しいことをわかってないのです) 私の方でもこのスクリプトを外部テキストファイル「contents.php」(拡張子は .php で単なるテキストファイル)を同じフォルダにおいてパブリッシュすると中身が表示されるのです。 が、サーバ上においたphpファイルで、DBから「contents=あああああ」を読み出し、画面に表示、それをloadしようとすると読み出しエラーになってしまうのです。

関連するQ&A