Ejecute la function PHP en el button html.

Necesito ejecutar alguna function PHP cuando se hace clic en un button. Sé que esto no se supone que sea el uso de php, más bien js debería hacerlo, pero lo que mis funciones están haciendo al recostackr datos de un server cuando el usuario lo pregunta. Específicamente, obtiene algunos datos del usuario y los escribe en un file, y el usuario debe decidir qué datos se recostackrán.
¿Cómo puedo hacer esto? Vi la publicación Ejecutar file PHP onclick en el button, pero todavía no estoy seguro de cómo usarlo.
Estoy aprendiendo, así que por favor no seas demasiado duro

He probado onclick() y todo tipo de cosas, pero no condujo a nada útil

Un file php se ejecuta cada vez que accede a él a través de una request HTTP, ya sea GET, POST, PUT.

Puede utilizar JQuery / Ajax para enviar una request con un clic de button, o incluso simplemente cambiar la URL del browser para navegar a la dirección php.

Dependiendo de los datos enviados en POST / GET, puede tener una instrucción switch que ejecute una function diferente.

Especificando la function a través de GET

Puede utilizar el código aquí: Cómo llamar a la function PHP desde una cadena almacenada en una Variable junto con una statement de conmutación para llamar automáticamente a la function apropiada según los datos enviados.

Entonces en PHP puede tener algo como esto:

 <?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"); } ?> 

y puede hacer la request de obtención más simple usando la barra de direcciones como testing:

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

resultados en:

 Function not found or wrong input http://127.0.0.1/test.php?runFunction=hello 

resultados en:

 hello 

Envío de datos

GET Solicitud a través de JQuery

Ver: http://api.jquery.com/jQuery.get/

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

Solicitud POST a través de JQuery

Ver: http://api.jquery.com/jQuery.post/

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

GET Solicitud a través de la location de Javascript

Ver: http://www.javascripter.net/faq/buttonli.htm

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

Leyendo los datos (PHP)

Consulte PHP Turotial para leer publicaciones y get: http://www.tizag.com/phpT/postget.php

Enlaces útiles

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

Si desea realizar una request de server, debe utilizar AJAX, de modo que puede enviar los parameters deseados al server y puede ejecutar cualquier php que desee con estos parameters.

Ejemplo con javascript puro:

 <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> 

Ejemplo con 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 ); }); 

Puede tener un file con funciones llamadas, por ejemplo, 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...?> 

Usa ajax, un simple ejemplo,

HTML

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

Javascript

 var button = document.getElementById("button"); button.addEventListener("click" ajaxFunction, false); var ajaxFunction = function () { // ajax code here } 

También puede search en 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> 

Use una request AJAX en su file PHP, luego muestre el resultado en su página, sin ninguna recarga.

http://api.jquery.com/load/ Esta es una solución simple si no necesita ningún dato de POST.

Depende de qué function desee ejecutar. Si necesita algo hecho en el lado del server, como consultar una database o configurar algo en la session o cualquier cosa que no se pueda hacer en el lado del cliente, necesita AJAX, de lo contrario puede hacerlo en el lado del cliente con JavaScript. No haga que el server funcione cuando puede hacer lo que debe hacer en el lado del cliente.

jQuery proporciona una forma fácil de hacer ajax: http://api.jquery.com/jQuery.ajax/