Run PHP function on html button click
Use ajax, a simple example,
HTML
<button id="button">Get Data</button>
Javascript
var button = document.getElementById("button");
button.addEventListener("click" ajaxFunction, false);
var ajaxFunction = function () {
// ajax code here
}
Alternatively look into jquery ajax
http://api.jquery.com/jQuery.ajax/
If you want to make a server request you should use AJAX, so you can send your desired parameters to the server and it can run whatever php you want with these parameters.
Example with pure 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>
Example with 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 );
});
You can have one file with functions called for example functions.php
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...?>
A php file is run whenever you access it via an HTTP request be it GET,POST, PUT.
You can use JQuery/Ajax to send a request on a button click, or even just change the URL of the browser to navigate to the php address.
Depending on the data sent in the POST/GET you can have a switch statement running a different function.
Specifying Function via GET
You can utilize the code here: How to call PHP function from string stored in a Variable along with a switch statement to automatically call the appropriate function depending on data sent.
So on PHP side you can have something like this:
<?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");
}
?>
and you can make the simplest get request using the address bar as testing:
http://127.0.0.1/test.php?runFunction=hellodddddd
results in:
Function not found or wrong input
http://127.0.0.1/test.php?runFunction=hello
results in:
hello
Sending the Data
GET Request via JQuery
See: http://api.jquery.com/jQuery.get/
$.get("test.cgi", { name: "John"})
.done(function(data) {
alert("Data Loaded: " + data);
});
POST Request via JQuery
See: http://api.jquery.com/jQuery.post/
$.post("test.php", { name: "John"} );
GET Request via Javascript location
See: http://www.javascripter.net/faq/buttonli.htm
<input type=button
value="insert button text here"
onClick="self.location='Your_URL_here.php?name=hello'">
Reading the Data (PHP)
See PHP Turotial for reading post and get: http://www.tizag.com/phpT/postget.php
Useful Links
http://php.net/manual/en/function.call-user-func.php http://php.net/manual/en/function.function-exists.php