• ベストアンサー

別サーバのデータベースの読み込み

あるページの任意の箇所にJavaScriptを記述し、別サーバのPHPを呼び出し、別サーバ(PHPと同一)のデータベース(MySQL)の内容をJavaScriptを記述した箇所に表示させることは一般的に可能でしょうか。 Ajaxのようなインタラクティブな動作ではなく、静的に表示させるだけです。 当方、専門知識はないため一般論としてご意見を頂けますと助かります。 よろしくお願い致します。

  • MySQL
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

>別サーバ(phpと同一)のDB(MySQL) phpでmysqlから得たデータを加工するのは、いかようにもなりますよ。xml出力用の関数もいろいろ用意されているし。 mysql側にあるphp自体がいじれない、そこに自作スクリプトを置けないと言うことではないですよね。 inline frameの呼び出しだって、iframe要素のsrcに直接mysqlアクセスコードを書いてるわけではないですよね。mysqlサーバー側にあるphpを仲介しているはずなので、そこのphpスクリプトの出力形式を書き変えるということなのですけど。 なんで、mysqlから直接xmlを出力しなきゃならんと思いこんでいるのかが解らない。 そのシステム構成とか、各プログラムの役割(サーバーサイドでの動作か、クライアントサイドで何をするか)とか、xmlがどこに必要なのかの情報が不足というか、理解されてないのでは???

dummygo
質問者

補足

hrm_mmmさんの懸念は全てクリアしています。 回答を見る限り普通に出来そうですね。 大変参考になりました。ありがとうございました。 PGさんに基本的なスキルが不足しているか、恣意的にできない理由を並べているのか。 おそらくは後者なので、iframeで何がいけないのかという思いがあるのかも知れません。 あと、下記のような記述方法はDBを操作するファイルが露呈しているため悪意のある第三者から攻撃を受ける可能性があると言われたのですが、よく見る方法なので誇張しているのではないかと感じました。 もしご意見があればお聞かせ頂けますでしょうか。 <script type="text/javascript" src="?http://xx**.jp/output.php?yyy"? charset="utf-8"></script>

その他の回答 (3)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

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クエリで切り替えを行うようにする必要もあります。

dummygo
質問者

補足

まさに希望としているのはそういうことです。 noscriptのアドバイスまでありがとうございます。 そこまでできれば完璧ですね。 読み込むデータについて確認したいのですが、テンプレートと別サーバ(phpと同一)のDB(MySQL)から引っ張ってくることはできないという認識で大丈夫でしょうか。 回答いただいた形にする場合、データをXMLファイルにする必要があり、MySQLからXMLファイルを生成することはできないと言われました。 こちらは正しいでしょうか。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

私はサーバ側からページの一部を変更する方法 はまだ経験が無いので意見がありません。 ただ、「MySQLが・・・」という話はヘンでしょ う。XMLであろうとなかろうと、あたり前のこと です。そこのサーバは言語の介入を許さないと言 うことでしょうかね?

dummygo
質問者

補足

ご回答ありがとうございます。 ANo.1でお答え頂いた方法は問題なくできているので、サーバが言語の介入を許さないということはないと思います。 現状の対応策としては例えばアメブロのサイドバーにiframeでPHPを直接呼び出している状態です。 iframeですとDBが空の場合空白ができてしまうので、できればJavaScriptでPHPを呼び出し必要なソースのみ吐き出したいというのが希望となります。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

データベースを読込んだPHPがHTMLを吐き出す 方法ではダメな理由はあるのでしょうか? その方法が一般的ですし、苦労も無いと思い ますけど。勿論、吐き出したHTMLにJavaScript を含めることも可能ですけど。 つまり、最初にHTMLで何らかの要求がきたら、 サーバでPHPを動かし、データベースを読み、 HTMLを吐き出して、それをクライアント側で 表示する、というキャッチボールをするように 一般的には作られますが、それがダメな理由が わかりません。

dummygo
質問者

お礼

ご回答ありがとうございます。 説明が不足して申し訳ありません。 本案件は既存ページの一部にソースを埋め込むことしかできず、ページそのものをいじることができません。 ブログのテンプレートをいじるようなイメージです。 ブログパーツなどでRSSの最新記事を表示させるものなどありますが、それに近い感じで、ある部分にソースを記述し別サーバのデータベースの内容を表示させることはできますでしょうか。 できればインラインフレームではなくJavaScriptで実現できないかと考えています。 よろしくお願い致します。

dummygo
質問者

補足

DB(MySQL)からXMLファイルを生成していないので、できないと言われました。 上記の形を実現するにはXMLファイルの生成が必須条件と考えてよろしいでしょうか。 また、MySQLからXMLファイルを生成することはできないと言われましたがそういうものなのでしょうか。 参考として意見をもらえると助かります。

関連するQ&A

  • 別サーバのデータベースの読み込み

    ブログのサイドバーなどあるページの任意の箇所にJavaScriptを記述し、別サーバのPHPを呼び出し、別サーバ(PHPと同一)のデータベース(MySQL)の内容をJavaScriptを記述した箇所に表示させることは一般的に可能でしょうか。 専門知識はないため一般論としてご意見を頂けますと助かります。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • WebサーバとSQLサーバを別ホストで利用する方法

    PHPを置いたWebサーバとは別のサーバでMYSQLとそのデータベースを利用する方法を教えて下さい。

  • PHPで外部サーバーのデータベースにアクセスは可能でしょうか?

    PHPで外部サーバーのデータベースにアクセスは可能でしょうか? データ量が多すぎて複数のデータベースに分けております。 またサーバーも変える必要があるためサーバーも複数に分けております。 サーバー1にデータベース1 サーバー2にデータベース2 サーバー3にデータベース3 がある状態で、サーバー4からPHPプログラムでデータベースにアクセスして、サーバー4に設置してあるホームページにデータを表示するプログラムを作りたい。 このような事が出来るのでしょうか? PHPプログラムが置いてある同一サーバー上のデータベースへのアクセスは出来たのですが、外部サーバーへのアクセスの仕方が解りません。。。 サーバーはXrea、さくらインターネットを使用しています。 PHPとMySQLを使用。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • データベースにアクセスするWebページ

    どちらに質問してよいかわからずこちらに質問させていただきます。 私が担当しているのは、既に公開されているWebページの変更です。 写真や文字列など、変更があるたびにHTMLファイルを開いて 手作業で更新作業をしているところに、データベースにアクセスして データベースの情報を表示するように変更することになりました。(←ここが私の担当です) ※既存のWebページは私が制作したものではありません。 「困っているのは既存のWebページへの実装方法」で、 既に試した方法は 1. データベースの情報を表示する箇所を、まるまる   別HTMLで作成し、JavaScriptでajax通信にて動的に項目を作成するページをつくって   IFRAMEにて既存のページに埋め込む方法をしてみました。   見事動作したのですがこれには問題点がありました。   それは私が実装したIFRAMEの中のHTMLは、JavaScriptが読めない人には   扱えないということでした。   また、JavaScriptだけでなく、CSSも既存ページに合わせて作り直す必要もあり、   他のページに同じようにデータベースの内容を表示して!と言われたら大変な手間がかかります。 2. 既存のHTMLファイルにオリジナルのスクリプトを埋め込む方法。   たとえば<span>#todays_news;</span>のような感じです。      この方法で記述して、http://xxx.jp/解析.php?url=HTMLファイル   にアクセスすると解析.phpがオリジナルスクリプトの埋め込まれたHTMLファイル内の   スクリプトを、データベースから取得したデータに置き換えて出力します。   これの問題点は   サイトのindexからリンクをクリックしてもらえれば解析.phpを通して   データベースの内容で置き換えたページが出力されますが、   直接、HTMLファイルへアクセスされるとオリジナルスクリプトが丸見えになってしまいます。   またSEO対策で不利になるのではと考えています。 そこで、データベースの内容を変更すると、すべてのHTMLファイルを解析.phpに通して出力してしまおう、という考えです。しかしこれだとデータベースの内容を変更するたびすべてのHTMLを書き換えることになり、なんとも効率的ではない気がするのです。 データベースの内容を表示するのに、 HTMLをロードしてからJavaScriptにて動的にコンテンツを生成するのか、 なにかしらの方法で、データベースの内容を反映させたHTMLファイル(静的)を置くのか はたまた、違う方法なのか、 とーっても悩んでおります;;;;;;;; 職場にはJavaScriptやPHP,MySQL等を理解しているものはおらず、 だれにも聞けなくてここで質問させていただきました。 どうかアドバイスお願いいたします><。

  • レンタルサーバ上でのデータベースの操作について

    PHP+MySQLを最近勉強し始めましたが、ひとつ疑問に思ったことがあります。 自分のPCにApache+PHP+MySQLをインストールして環境を作り、データベースの操作にはMySQLManagerやphpMyAdminを使っています。 そこで疑問なのですが、MySQLが利用できるレンタルサーバ上で上記のようにMySQLManagerやphpMyAdminってデータベースの操作はできるのでしょうか。それともプログラム上(PHP上)でSQLを使って行うものなのでしょうか?教えてください。

  • 別サーバへのmysql接続に関して

    諸事情によりPHPプログラムで別のサーバにあるmysqlへ接続しようと 試みていますが、うまくいきません。 それぞれのサーバに入っているPHP,apache,mysqlのバージョンは 下記の通りです。 【PHPを動かすサーバ(以降:サーバA)】  Redhat Linux ES 4.0  PHP Version 4.3.9  Apache 2.0.52  mysql(入っていません) 【mysqlが動いているサーバ(以降:サーバB)】  FreeBSD 4.7  PHP Version 4.3.10  Apache 1.3.37  mysql 4.1.11 プログラムは下記のものです。 if(!$conn = mysql_connect(サーバB:3306,ユーザー名,パスワード)){  die('MySQL接続失敗'); } if(!$sts = mysql_select_db(データベース名,$conn)){  die('テーブル選択失敗'); } サーバBで同一のプログラムを 起動した場合はもちろん問題なく繋がります。 サーバAでは「MySQL接続失敗」となってしまいます。 どのような設定を行えば、サーバAからサーバBのmysqlへ接続可能に なるのか、よろしくご教授の程、お願いいたします。

    • 締切済み
    • PHP
  • PHPでMySQLのデータベースを新規で作るには?

    こんにちは PHPとMySQLを勉強しているものです。 PHPからMySQLの既存データベースの接続や、テーブル参照はわかったのですが、 新規にデータベースやテーブルを作るときには PHPからどういう記述を行えばできますでしょうか。

    • ベストアンサー
    • PHP
  • ApacheWebサーバがあるサーバから,別サーバにあるOracle8iデータベースに接続するには

    Webサーバ(ApacheWebサーバ)がインストールしてあるサーバとは別に, データベース(Oracle8i)がインストールしてあるサーバに接続したいのですが, とある文献に, ==================== Oracleの場合、データベースへの接続は「ocilogon関数」を利用します。 この関数 は、下記のように接続するデータベースとユーザーを指定します。 関数の返り値と して、接続IDが返されるので、そのIDを変数に受け取るようにしておきます。 ocilogon("ユーザー","パスワード","接続文字列"); // Oracleとの接続 $conn = OCILogon("scott", "tiger", "orcl"); ===================== という記述がありました. このような記述だけで,別サーバにあるOracle8iへ接続可能なのでしょうか? さらに, ===================== 「また、ここで「接続文字列」を指定することによって、  Webサーバとは別のサーバで稼働 しているデータベースへの接続も可能です。」 ===================== という記述もあります. 接続文字列(orcl)を入力しただけで,別サーバにあるデータベース に接続することは可能なのでしょうか?私が思うにはデータベースサーバの IPアドレスなどの情報がないと無理な気がするのですが,どうなのでしょうか? よろしくお願いします.

    • 締切済み
    • PHP
  • データベースサーバーにあるデータをWebページで表示したい

    ロリポップを使っています。ロリポップは専用のデータベースサーバー(WEBページのサーバーとは別)とMySQLがすぐ使えるので、MySQLでcsvファイルからデータを入力しました。 検索結果を、WEB上に表の形で表示をさせたいのですが、どうすれば良いのでしょうか? PHPを使えばいいらしいと言うことぐらいしかわからない初心者です。昨日丸一日ネットで調べましたがよくわかりません。 おすすめの書籍とか、おすすめのホームページ、サンプルのあるサイトなどを、教えて頂けませんでしょうか?

    • ベストアンサー
    • PHP
  • PHPから別のMySQLサーバへの接続

    宜しくお願い致します。 PHPから、localhostではなく、別にあるMySQLデータベースサーバへアクセスする際の指定の方法がわかりません。同じサーバ内にある場合は、 mysql_connect("localhost","db","password") といった形になると思うのですが別のサーバにアクセスする場合は、"localhost"の部分をどの様に指定すればよいのでしょう?仮にサーバのIPアドレスが『192.168.0.1』の場合で教えて頂けますと助かります。 宜しくお願いします!

    • ベストアンサー
    • PHP