Je dois exécuter une fonction PHP lorsqu'un clic est fait sur un bouton. Je sais que ce n'est pas censé être l'utilisation de php, mais plutôt que js devrait le faire, mais ce que mes fonctions font pour collecter des données d'un serveur lorsque l'utilisateur le demande. Plus précisément, il récupère certaines données utilisateur et les écrit dans un fichier. L'utilisateur doit choisir les données à rassembler.
Comment puis-je faire ceci? J'ai vu le post Exécuter PHP Fichier sur le bouton Cliquez sur mais je ne sais toujours pas comment l'utiliser.
J'apprends, alors s'il vous plait, ne soyez pas trop sévère
J'ai essayé onclick()
et toutes sortes de choses, mais cela n'a mené à rien d'utile
Un fichier php est exécuté à chaque fois que vous y accédez via une requête HTTP, que ce soit GET, POST, PUT.
Vous pouvez utiliser JQuery/Ajax pour envoyer une demande en un clic, ou même simplement changer l'URL du navigateur pour accéder à l'adresse php.
En fonction des données envoyées dans le POST/GET, vous pouvez avoir une instruction switch exécutant une fonction différente.
Vous pouvez utiliser le code ici: Comment appeler la fonction PHP depuis une chaîne stockée dans une variable avec une instruction switch pour appeler automatiquement la fonction appropriée en fonction des données envoyées.
Donc, du côté PHP, vous pouvez avoir quelque chose comme ceci:
<?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");
}
?>
et vous pouvez faire la requête get la plus simple en utilisant la barre d'adresse comme test:
http://127.0.0.1/test.php?runFunction=hellodddddd
résulte en:
Function not found or wrong input
http://127.0.0.1/test.php?runFunction=hello
résulte en:
hello
Demande GET via JQuery
Voir: http://api.jquery.com/jQuery.get/
$.get("test.cgi", { name: "John"})
.done(function(data) {
alert("Data Loaded: " + data);
});
POST Requête via JQuery
Voir: http://api.jquery.com/jQuery.post/
$.post("test.php", { name: "John"} );
GET Demande via l'emplacement Javascript
Voir: http://www.javascripter.net/faq/buttonli.htm
<input type=button
value="insert button text here"
onClick="self.location='Your_URL_here.php?name=hello'">
Voir PHP Turotial pour lire le post et obtenez: 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
Si vous souhaitez faire une demande de serveur, vous devez utiliser AJAX, afin que vous puissiez envoyer vos paramètres souhaités au serveur et qu'il puisse exécuter le php de votre choix avec ces paramètres.
Exemple avec du javascript pur:
<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>
Exemple avec 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 );
});
Vous pouvez avoir un fichier avec des fonctions appelées par exemple 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...?>
Utilisez ajax, un exemple simple,
HTML
<button id="button">Get Data</button>
Javascript
var button = document.getElementById("button");
button.addEventListener("click" ajaxFunction, false);
var ajaxFunction = function () {
// ajax code here
}
Vous pouvez également consulter 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>
Utilisez une requête AJAX sur votre fichier PHP, puis affichez le résultat sur votre page, sans aucun rechargement.
http://api.jquery.com/load/ C'est une solution simple si vous n'avez pas besoin de données POST.
Cela dépend de la fonction que vous voulez exécuter. Si vous avez besoin de faire quelque chose côté serveur, comme interroger une base de données ou configurer quelque chose dans la session ou quelque chose qui ne peut pas être fait côté client, vous avez besoin d'AJAX, sinon vous pouvez le faire côté client avec JavaScript . Don Ne faites pas fonctionner le serveur lorsque vous pouvez faire ce que vous devez faire côté client.
jQuery fournit un moyen facile de faire ajax: http://api.jquery.com/jQuery.ajax/