web-dev-qa-db-ja.com

PHP htmlボタンクリックで関数を実行

ボタンがクリックされたときに、いくつかのPHP関数を実行する必要があります。これはphpの使用ではないことを知っています。具体的には、ユーザーデータを取得してファイルに書き込み、ユーザーは収集するデータを決定する必要があります。
これどうやってするの?投稿を見ました Run PHP File on Button Click ですが、それをどのように使うかはまだわかりません。
学習中ですので、過酷にならないでください

私はonclick()およびあらゆる種類のことを試しましたが、それは何の有用にもつながりませんでした

10
Mihai Bujanca

GET、POST、PUTなどのHTTPリクエストを介してアクセスすると、phpファイルが実行されます。

JQuery/Ajaxを使用して、ボタンのクリックでリクエストを送信したり、ブラウザーのURLを変更してphpアドレスに移動したりすることもできます。

POST/GETで送信されたデータに応じて、異なる関数を実行するswitchステートメントを使用できます。

GETによる機能の指定

ここでコードを利用できます: 変数に格納された文字列からPHP関数を呼び出す方法 switchステートメントとともに、送信データに応じて適切な関数を自動的に呼び出す方法。

PHP側では、次のようなものを使用できます。

<?php

//see http://php.net/manual/en/function.call-user-func-array.php how to use extensively
if(isset($_GET['runFunction']) && function_exists($_GET['runFunction']))
call_user_func($_GET['runFunction']);
else
echo "Function not found or wrong input";

function test()
{
echo("test");
}

function hello()
{
echo("hello");
}

?>

また、テストとしてアドレスバーを使用して最も簡単なgetリクエストを作成できます。

http://127.0.0.1/test.php?runFunction=hellodddddd

結果:

Function not found or wrong input

http://127.0.0.1/test.php?runFunction=hello

結果:

hello

データを送信する

JQuery経由のGETリクエスト

参照: http://api.jquery.com/jQuery.get/

$.get("test.cgi", { name: "John"})
.done(function(data) {
  alert("Data Loaded: " + data);
});

JQuery経由のPOSTリクエスト

参照: http://api.jquery.com/jQuery.post/

$.post("test.php", { name: "John"} );

Javascriptロケーションを介したGETリクエスト

参照: http://www.javascripter.net/faq/buttonli.htm

<input type=button 
value="insert button text here"
onClick="self.location='Your_URL_here.php?name=hello'">

データの読み取り(PHP)

PHP Turotialを参照して投稿を読んで取得してください: http://www.tizag.com/phpT/postget.php

便利なリンク

http://php.net/manual/en/function.call-user-func.phphttp://php.net/manual/en/function function-exists.php

13

サーバーリクエストを行いたい場合は、AJAXを使用する必要があります。そのため、目的のパラメーターをサーバーに送信し、これらのパラメーターで任意のphpを実行できます。

純粋なjavascriptの例:

<input type="text" id="name" value="..."/>
<input type="text" id="location" value="..."/>
<input type="button" onclick="ajaxFunction();" value="Submit" />
<div id="ajaxDiv"></div>
<script type="text/javascript">    
    function ajaxFunction(){
        var ajaxRequest;  // The variable that makes Ajax possible!

        try{
            // Opera 8.0+, Firefox, Safari
            ajaxRequest = new XMLHttpRequest();
        } catch (e){
            // Internet Explorer Browsers
            try{
                ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e){
                    // Something went wrong
                    alert("Your browser broke!");
                    return false;
                }
            }
        }
        // Create a function that will receive data sent from the server
        ajaxRequest.onreadystatechange = function(){
            if(ajaxRequest.readyState == 4){
                var ajaxDisplay = document.getElementById('ajaxDiv');
                ajaxDisplay.innerHTML = ajaxRequest.responseText;
            }
        }
        var name = document.getElementById('name').value;
        var location = document.getElementById('location').value;
        var queryString = "?name=" + name + "&location=" + location;
        ajaxRequest.open("POST", "some.php" + queryString, true);
        ajaxRequest.send(null); 
    }
</script>

jQuery Ajaxの例:http://api.jquery.com/jQuery.ajax/

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});

例えばfunctions.phpと呼ばれる関数を含む1つのファイルを持つことができます

functions.php

<?php
  myFunction($Name, $Location) {
      // etc...
  }
  myFunction2() {
  }
  // ... many functions
?>

some.php

<?php include("functions.php");    
$Name = $_POST['name'];
$Location = $_POST['location'];

myFunction($Name, $Location);

// make what you want with these variables...?>
3
bksi

簡単な例であるajaxを使用します。

[〜#〜] html [〜#〜]

<button id="button">Get Data</button>

Javascript

var button = document.getElementById("button");

button.addEventListener("click" ajaxFunction, false);

var ajaxFunction = function () {
    // ajax code here
}

または、jquery ajaxhttp://api.jquery.com/jQuery.ajax/

2
GriffLab
<?php
if (isset($_POST['str'])){
function printme($str){
echo $str;
}

printme("{$_POST['str']}");
}
?>
<form action="<?php $_PHP_SELF ?>" method="POST">
<input type="text" name="str" /> <input type="submit" value="Submit"/>
</form>
1
Uday Hiwarale

AJAX PHPファイルでリクエストを行い、リロードせずに結果をページに表示します。

http://api.jquery.com/load/ これはPOST data。

0
piry

実行する機能によって異なります。データベースへのクエリやセッションでの設定など、サーバー側で何かを行う必要がある場合、またはクライアント側で実行できないことを行う場合は、AJAXが必要です。クライアント側で必要なことを実行できる場合は、サーバーを動作させないでください。

jQueryはajaxを行う簡単な方法を提供します: http://api.jquery.com/jQuery.ajax/

0
Virus721