プロが教える店舗&オフィスのセキュリティ対策術

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

A 回答 (7件)

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。

Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません
    • good
    • 2

おっと失礼。


#4です。

http://www.google.co.jp/search?hl=ja&q=xmlhttp&lr=


まぁAjaxに手を出すんだったらその前にHTTPの仕組みやら何やらを知らないと駄目ですけどね。
関係ないですがサンプルばかり欲しがっていたら嫌われます。
自分で学習しようとする意欲がないと見られるからです。
分からないからしょうがない、調べても分からないというのであれば
手を出さない方が無難でしょう。
    • good
    • 1

こんばんは、#1で回答した者です。


只今、他のカテゴリで質問中なので、他の方に回答させていただく身分じゃありませんが(汗)、自身の悩み(質問投函)に行き詰まったので、頭を冷やす意味でも改め投函させていただきます。

他に回答されている方には日頃お世話になっているので、私が同じところで回答するのも気が引けるのですが(汗)、ajaxは私も未知の領域なので、あくまでリロードしたときの処理だけを防ぐのであれば、header関数を用いて自身のファイルに渡してあげれば、リロードしても問題ないかと思われます。

(他の有識者の方すみません。この方法で問題があれば、指摘していただけると有難いです。)
    • good
    • 1

サンプルではないですが。



参考URL:http://google/search?hl=ja&q=xmlhttp&lr=
    • good
    • 0
この回答へのお礼

リンク先が開けませんでした・・・

お礼日時:2007/11/28 19:06

JavaScriptのと同じ感覚でPHPを使うことはできません。


PHP等のサーバーサイドスクリプトは、サーバーになにかしらのリクエストがあって、初めて動作します

ですから、ボタンをクリックしたら 画面が切り替わって(もしくは再読み込み)する形でしか動作させられません


ブラウザ上の画面遷移をさせたくないのであればAjaxと組み合わせてください。
    • good
    • 0
この回答へのお礼

クライアントサイドとサーバーサイドの違いをはっきりとわかっておく必要があるということですね。

Ajaxは使ったことがないのですが、
よろしければ、
ボタンを押したときにPHPを実行するサンプルを載せてくれませんでしょうか?

お礼日時:2007/11/28 13:39

「Ajax」で検索してみてください。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Ajaxを使って希望のものが実装できそうだということはわかりました。
もしよろしければ、サンプルを載せてくれませんでしょうか?

お礼日時:2007/11/28 13:41

はじめまして。


色々な方法があるかもしれませんが、私の場合は以下のようなもので対処しています。

if(isset($_POST["jikkou"])){
//実行スクリプト
}else{
//通常の画面
<form action="自身のファイル名" method="post" >
<input type="submit" value="実行" name="jikkou">
</form>
}

この回答への補足

回答ありがとうございます。
実は教えていただいた方法は試したのですが、
ブラウザでリロードするたびに
$_POSTの値を再送信するか聞かれてしまうので却下しました。
説明不足ですみません・・・

補足日時:2007/11/28 10:02
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています