ボタンがクリックされたときに、いくつかのPHP関数を実行する必要があります。これはphpの使用ではないことを知っています。具体的には、ユーザーデータを取得してファイルに書き込み、ユーザーは収集するデータを決定する必要があります。
これどうやってするの?投稿を見ました Run PHP File on Button Click ですが、それをどのように使うかはまだわかりません。
学習中ですので、過酷にならないでください
私はonclick()
およびあらゆる種類のことを試しましたが、それは何の有用にもつながりませんでした
GET、POST、PUTなどのHTTPリクエストを介してアクセスすると、phpファイルが実行されます。
JQuery/Ajaxを使用して、ボタンのクリックでリクエストを送信したり、ブラウザーのURLを変更してphpアドレスに移動したりすることもできます。
POST/GETで送信されたデータに応じて、異なる関数を実行するswitchステートメントを使用できます。
ここでコードを利用できます: 変数に格納された文字列から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 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
サーバーリクエストを行いたい場合は、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...?>
簡単な例である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 ajax
http://api.jquery.com/jQuery.ajax/
<?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>
AJAX PHPファイルでリクエストを行い、リロードせずに結果をページに表示します。
http://api.jquery.com/load/ これはPOST data。
実行する機能によって異なります。データベースへのクエリやセッションでの設定など、サーバー側で何かを行う必要がある場合、またはクライアント側で実行できないことを行う場合は、AJAXが必要です。クライアント側で必要なことを実行できる場合は、サーバーを動作させないでください。
jQueryはajaxを行う簡単な方法を提供します: http://api.jquery.com/jQuery.ajax/