web-dev-qa-db-fra.com

Courir PHP fonction sur le bouton html cliquez

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

10
Bujanca Mihai

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.

Spécification d'une fonction via GET

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

Envoi des données

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

Lecture des données (PHP)

Voir PHP Turotial pour lire le post et obtenez: http://www.tizag.com/phpT/postget.php

Liens utiles

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

13

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...?>
3
bksi

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 ajaxhttp://api.jquery.com/jQuery.ajax/

2
GriffLab
<?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
Uday Hiwarale

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
Piry

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/

0
Virus721