- ベストアンサー
別サーバのデータベースの読み込み
あるページの任意の箇所にJavaScriptを記述し、別サーバのPHPを呼び出し、別サーバ(PHPと同一)のデータベース(MySQL)の内容をJavaScriptを記述した箇所に表示させることは一般的に可能でしょうか。 Ajaxのようなインタラクティブな動作ではなく、静的に表示させるだけです。 当方、専門知識はないため一般論としてご意見を頂けますと助かります。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>別サーバ(phpと同一)のDB(MySQL) phpでmysqlから得たデータを加工するのは、いかようにもなりますよ。xml出力用の関数もいろいろ用意されているし。 mysql側にあるphp自体がいじれない、そこに自作スクリプトを置けないと言うことではないですよね。 inline frameの呼び出しだって、iframe要素のsrcに直接mysqlアクセスコードを書いてるわけではないですよね。mysqlサーバー側にあるphpを仲介しているはずなので、そこのphpスクリプトの出力形式を書き変えるということなのですけど。 なんで、mysqlから直接xmlを出力しなきゃならんと思いこんでいるのかが解らない。 そのシステム構成とか、各プログラムの役割(サーバーサイドでの動作か、クライアントサイドで何をするか)とか、xmlがどこに必要なのかの情報が不足というか、理解されてないのでは???
その他の回答 (3)
- hrm_mmm
- ベストアンサー率63% (292/459)
phpでの出力をhtmlではなく、javascriptソースをはき出すようにすれば、script要素のsrc属性にサーバーのことなるphpファイルを指定するのは可能のはずです。 そのテンプレート内に、以下のようなタグを書き込むのは可能と言うことですよね。 <script type="text/javascript" src="http://xx**.jp/output.php?yyy" charset="utf-8"></script> ただし、JavaScriptがオフだと表示されないので、noscript内にiframeタグも入れることをお薦めします。この時は、html出力が必要なのでgetクエリで切り替えを行うようにする必要もあります。
補足
まさに希望としているのはそういうことです。 noscriptのアドバイスまでありがとうございます。 そこまでできれば完璧ですね。 読み込むデータについて確認したいのですが、テンプレートと別サーバ(phpと同一)のDB(MySQL)から引っ張ってくることはできないという認識で大丈夫でしょうか。 回答いただいた形にする場合、データをXMLファイルにする必要があり、MySQLからXMLファイルを生成することはできないと言われました。 こちらは正しいでしょうか。
- Tasuke22
- ベストアンサー率33% (1799/5383)
私はサーバ側からページの一部を変更する方法 はまだ経験が無いので意見がありません。 ただ、「MySQLが・・・」という話はヘンでしょ う。XMLであろうとなかろうと、あたり前のこと です。そこのサーバは言語の介入を許さないと言 うことでしょうかね?
補足
ご回答ありがとうございます。 ANo.1でお答え頂いた方法は問題なくできているので、サーバが言語の介入を許さないということはないと思います。 現状の対応策としては例えばアメブロのサイドバーにiframeでPHPを直接呼び出している状態です。 iframeですとDBが空の場合空白ができてしまうので、できればJavaScriptでPHPを呼び出し必要なソースのみ吐き出したいというのが希望となります。
- Tasuke22
- ベストアンサー率33% (1799/5383)
データベースを読込んだPHPがHTMLを吐き出す 方法ではダメな理由はあるのでしょうか? その方法が一般的ですし、苦労も無いと思い ますけど。勿論、吐き出したHTMLにJavaScript を含めることも可能ですけど。 つまり、最初にHTMLで何らかの要求がきたら、 サーバでPHPを動かし、データベースを読み、 HTMLを吐き出して、それをクライアント側で 表示する、というキャッチボールをするように 一般的には作られますが、それがダメな理由が わかりません。
お礼
ご回答ありがとうございます。 説明が不足して申し訳ありません。 本案件は既存ページの一部にソースを埋め込むことしかできず、ページそのものをいじることができません。 ブログのテンプレートをいじるようなイメージです。 ブログパーツなどでRSSの最新記事を表示させるものなどありますが、それに近い感じで、ある部分にソースを記述し別サーバのデータベースの内容を表示させることはできますでしょうか。 できればインラインフレームではなくJavaScriptで実現できないかと考えています。 よろしくお願い致します。
補足
DB(MySQL)からXMLファイルを生成していないので、できないと言われました。 上記の形を実現するにはXMLファイルの生成が必須条件と考えてよろしいでしょうか。 また、MySQLからXMLファイルを生成することはできないと言われましたがそういうものなのでしょうか。 参考として意見をもらえると助かります。
補足
hrm_mmmさんの懸念は全てクリアしています。 回答を見る限り普通に出来そうですね。 大変参考になりました。ありがとうございました。 PGさんに基本的なスキルが不足しているか、恣意的にできない理由を並べているのか。 おそらくは後者なので、iframeで何がいけないのかという思いがあるのかも知れません。 あと、下記のような記述方法はDBを操作するファイルが露呈しているため悪意のある第三者から攻撃を受ける可能性があると言われたのですが、よく見る方法なので誇張しているのではないかと感じました。 もしご意見があればお聞かせ頂けますでしょうか。 <script type="text/javascript" src="?http://xx**.jp/output.php?yyy"? charset="utf-8"></script>