人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP+PostgreSQL(+Javascript)の質問です。

データベースを更新するだけのPHPファイル(update.php)を作成しました。
(update.phpのソースは、<?php から始まりレコードを更新する記述のみです。HTMLに関するタグなどは一切書いていません。)
あるページからボタンをクリックしたときにupdate.phpを裏で動作させたいのですが、何か良い方法はありませんでしょうか。

今は、あるページからJavascriptのwindow.open()でupdate.phpを開いてwindow.close()で閉じている状態です。
どうもすっきりしないので、PHPでもJavascriptでもいいので他に方法があったら教えてください。

●質問者: ktoshi
●カテゴリ:ウェブ制作
✍キーワード:Date. JavaScript open PHP postgreSQL
○ 状態 :終了
└ 回答数 : 10/10件

▽最新の回答へ

1 ● jouno
●10ポイント

http://sagittarius.dip.jp/~toshi/Ajax/yui.html

?JavaScriptでXMLHttpRequest?

PHPならば、起動させる側のページのほうもphpにしてupdate.phpはなかみを関数化して、includeして関数呼び出ししては。


SSIでコマンド呼び出しができれば可能ですが、つかえないところがおおいようです。


汎用的なのはajaxで、クリックしたときに、javascriptで、update.phpを呼び出すことでしょうか。


http://d.hatena.ne.jp/keyword/Ajax

Ajaxとは - はてなダイアリー

http://www.scollabo.com/banban/ssi/

SSI$BF~Lg(B

http://www.hawk.34sp.com/stdpls/xml/xmlhttprequest.html

Hawk's W3 Laboratory : XML : XMLHttpRequestについて

◎質問者からの返答

ありがとうございます。

起動させる側のページのほうもphpにしています。

update.phpはincludeして使った方が良いのかなぁって気はしていたのですが、、、

SSIもXMLも使うような環境にないので、他に方法がなければincludeして使うことにします。


2 ● jouno
●10ポイント

訂正。こちらはポイント不要です。

SSIとPHPはつかえませんね。すいません。


ajaxともうひとつは、隠しIFRAMEをつくっておいて、

クリックのタイミングでjavascriptでよびだすという方法もあります。

◎質問者からの返答

了解しました。

ajaxというのまで勉強する余裕がないので、、、すみません。

後の方へ。PHPかJavascriptでできる別の方法をお待ちしています。


3 ● Paul
●13ポイント

http://www.zend.co.jp/tech/index.php?PHP%A5%A2%A5%D7%A5%EA%A5%B1...

PHPアプリケーション - ゼンド・ジャパン株式会社 技術情報コンテンツ

「すっきり」の意味がよく分かっていませんが、

Smartyがひとつの解決策になるかと思います。


javaScriptからDB更新のphpを呼ぶのではなく、

DB更新のphpにそのまま遷移して、

DB更新のphpでは、更新処理後にSmartyを使って画面を表示する。


こうするとHTMLをSmartyのテンプレートに分けれるので、

僕的には「すっきり」感があります。

(実際そうしています)

http://www.zend.co.jp/tech/index.php?%A5%B3%A1%BC%A5%C7%A5%A3%A5...

コーディング指針/5.Smarty - ゼンド・ジャパン株式会社 技術情報コンテンツ

http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/

◎質問者からの返答

ありがとうございます。

私の方法ですと無意味なウィンドウが一瞬開かれてしますので「すっきり」しません。

標準的(何が標準かわかりませんが)なPHPのみで、対応できる方法があればいいのですが、、、でもありがとう。


4 ● Paul
●10ポイント

http://www.devx.com/Java/Article/27685/0

iFrames + JSP = Enhanced Web Content Retrieval

すいませんやっと意味が分かりました。

隠しIframeが簡単でお勧めです。


具体的にはiFrameには

update.phpにsubmitするFormしかないHTML

を表示させ、

(Formしかないので見た目にはFrameがあるかどおかも分からない)


下のようなScriptでそのiFrameのなかのFormをSubmitする。

function checkName()

{

// Some Validation

//Set login_name field in the iframe’s page.

//Submit iFrame’s page.

window.frames[’iframe1’].document.forms[0].submit();

}


そうすると、見た目はpostしてるかどおかも分からない

◎質問者からの返答

なるほど。具体的な説明ありがとうございます。

このようにiFrameを使えばいいのですね。今までiFrameを使ったことがなかったのでこのようなやり方を想像できませんでした。

試してみます。

他にも方法がありましたらお願いします。


5 ● upride
●23ポイント

1) update.php をupdate.inc にする

2) update.incの中身全体をfncUpdate{ 中身 } とする

3) 呼び元のphpに include( ”update.inc” ); を記述する

4) inc という拡張子をweb上からアクセスできない設定をwebサーバに施す

5) 関数fucUpdateを呼ぶ処理を書く


update.phpはおそらく更新処理だと思うので

勝手に直に呼ばれたくない処理ですよね

こんな感じにすると簡単で安全かと・・。

(この方法以外にもいい方法はたくさんありますが)

◎質問者からの返答

ありがとうございます。

関数化してそれを呼び出してデータベースを更新できるような事もできるんですね。

ちょっとやり方を調べてみます。


1-5件表示/10件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ