Lancer la fonction PHP sur le bouton html
j'ai besoin d'exécuter une fonction PHP quand un bouton est cliqué. Je sais que ce n'est pas supposé être l'utilisation de php, js devrait plutôt le faire, mais ce que mes fonctions font dans la collecte de données à partir d'un serveur lorsque l'utilisateur le demande. Plus précisément, il obtient les données de l'utilisateur et l'écrit dans un fichier, et l'utilisateur doit décider quelles données seront recueillies.
Comment puis-je faire cela? J'ai vu le post lancer le fichier PHP sur le bouton Cliquer mais je ne sais toujours pas comment l'utiliser.
Je suis l'apprentissage, donc ne soyez pas trop dur
j'ai essayé onclick()
et toutes sortes de choses, mais cela n'a pas mené à quoi que ce soit d'utile
6 réponses
un fichier php est lancé à 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 sur un clic de bouton, ou même changer L'URL du navigateur pour naviguer à l'adresse php.
selon les données envoyées dans le POST/GET, vous pouvez avoir une instruction switch qui exécute une fonction différente.
spécifier une fonction via GET
Vous pouvez utiliser le code suivant: Comment appeler la fonction PHP à partir d'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é de 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 le plus simple requête get à l'aide de la barre d'adresse que de test:
http://127.0.0.1/test.php?runFunction=hellodddddd
résultat:
Function not found or wrong input
http://127.0.0.1/test.php?runFunction=hello
résultat:
hello
envoi des données
obtenir la demande via JQuery
voir: http://api.jquery.com/jQuery.get/
$.get("test.cgi", { name: "John"})
.done(function(data) {
alert("Data Loaded: " + data);
});
POST Request via JQuery
voir: http://api.jquery.com/jQuery.post/
$.post("test.php", { name: "John"} );
OBTENIR une Demande via 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'">
Lecture des Données (PHP)
voir PHP Turotial pour la lecture post et get: http://www.tizag.com/phpT/postget.php
Liens Utiles
http://php.net/manual/en/function.call-user-func.php http://php.net/manual/en/function.function-exists.php
si vous voulez faire une requête de serveur, vous devez utiliser AJAX, de sorte que vous pouvez envoyer vos paramètres désirés au serveur et il peut exécuter n'importe quel php que vous voulez avec ces paramètres.
Exemple avec 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>
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 les fonctions appelées par exemple fonction.php
fonctions.php
<?php
myFunction($Name, $Location) {
// etc...
}
myFunction2() {
}
// ... many functions
?>
quelques-uns.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
}
alternativement regarder dans 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 souhaitez exécuter. Si vous avez besoin de faire quelque chose du côté du serveur, comme interroger une base de données ou définir quelque chose dans la session ou tout ce qui ne peut pas être fait du côté du client, vous avez besoin D'AJAX, sinon vous pouvez le faire du côté du client avec JavaScript. Ne faites pas fonctionner le serveur lorsque vous pouvez faire ce que vous devez faire du côté client.
jQuery fournit un moyen facile de faire ajax:http://api.jquery.com/jQuery.ajax/