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

10
demandé sur Community 2013-04-12 00:04:18

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

13
répondu Menelaos Bakopoulos 2017-05-23 11:47:33

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...?>
3
répondu bksi 2013-04-11 20:27:26

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/

2
répondu GriffLab 2013-04-11 20:08:41
<?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>
1
répondu Uday Hiwarale 2013-10-13 08:31:07

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.

0
répondu Piry 2013-04-11 20:07:27

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/

0
répondu Virus721 2013-04-11 20:08:13