• ベストアンサー

ボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・ <input type="button" onClink="<?php~?>"> でいけるかと思ったのですが、 ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。 onClink="window.open(test.php)" という方法以外でお願いします。

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.5

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でコレと同じことを、画面を切り替えずに行っているだけに過ぎません

その他の回答 (6)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.7

おっと失礼。 #4です。 http://www.google.co.jp/search?hl=ja&q=xmlhttp&lr= まぁAjaxに手を出すんだったらその前にHTTPの仕組みやら何やらを知らないと駄目ですけどね。 関係ないですがサンプルばかり欲しがっていたら嫌われます。 自分で学習しようとする意欲がないと見られるからです。 分からないからしょうがない、調べても分からないというのであれば 手を出さない方が無難でしょう。

  • sadacha
  • ベストアンサー率60% (6/10)
回答No.6

こんばんは、#1で回答した者です。 只今、他のカテゴリで質問中なので、他の方に回答させていただく身分じゃありませんが(汗)、自身の悩み(質問投函)に行き詰まったので、頭を冷やす意味でも改め投函させていただきます。 他に回答されている方には日頃お世話になっているので、私が同じところで回答するのも気が引けるのですが(汗)、ajaxは私も未知の領域なので、あくまでリロードしたときの処理だけを防ぐのであれば、header関数を用いて自身のファイルに渡してあげれば、リロードしても問題ないかと思われます。 (他の有識者の方すみません。この方法で問題があれば、指摘していただけると有難いです。)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

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

参考URL:
http://google/search?hl=ja&q=xmlhttp&lr=
madman666
質問者

お礼

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

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

JavaScriptのと同じ感覚でPHPを使うことはできません。 PHP等のサーバーサイドスクリプトは、サーバーになにかしらのリクエストがあって、初めて動作します ですから、ボタンをクリックしたら 画面が切り替わって(もしくは再読み込み)する形でしか動作させられません ブラウザ上の画面遷移をさせたくないのであればAjaxと組み合わせてください。

madman666
質問者

お礼

クライアントサイドとサーバーサイドの違いをはっきりとわかっておく必要があるということですね。 Ajaxは使ったことがないのですが、 よろしければ、 ボタンを押したときにPHPを実行するサンプルを載せてくれませんでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

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

madman666
質問者

お礼

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

  • sadacha
  • ベストアンサー率60% (6/10)
回答No.1

はじめまして。 色々な方法があるかもしれませんが、私の場合は以下のようなもので対処しています。 if(isset($_POST["jikkou"])){ //実行スクリプト }else{ //通常の画面 <form action="自身のファイル名" method="post" > <input type="submit" value="実行" name="jikkou"> </form> }

madman666
質問者

補足

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

関連するQ&A