webentwicklung-frage-antwort-db.com.de

Ausführen PHP Funktion mit onClick

Ich suche nach einer einfachen Lösung, um eine PHP - Funktion aufzurufen nur wenn ein Tag angeklickt wird.

PHP:

function removeday() { ... }

HTML:

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

UPDATE: Die HTML- und PHP - Codes befinden sich in derselben PHP -Datei

79
Mike

Verstehen Sie zunächst, dass Sie drei Sprachen zusammenarbeiten.

  • PHP: Wird nur vom Server ausgeführt und beantwortet Anfragen wie das Klicken auf einen Link (GET) oder das Senden eines Formulars (POST).

  • HTML & JavaScript: Wird nur im Browser eines anderen Benutzers ausgeführt (außer NodeJS).

Ich gehe davon aus, dass Ihre Datei ungefähr so ​​aussieht:

<html>
<?php
  function runMyFunction() {
    echo 'I just ran a php function';
  }

  if (isset($_GET['hello'])) {
    runMyFunction();
  }
?>

Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>

Da PHP nur auf Anforderungen (GET, POST, PUT, PATCH und DELETE über $ _REQUEST) reagiert, müssen Sie auf diese Weise eine PHP - Funktion ausführen, obwohl sie sich in derselben Datei befinden. Dies gibt Ihnen eine Sicherheitsstufe: "Soll ich dieses Skript für diesen Benutzer ausführen oder nicht?".

Wenn Sie die Seite nicht aktualisieren möchten, können Sie eine Anfrage an PHP senden, ohne die Aktualisierung über eine Methode namens Asynchronous JavaScript und XML (AJAX) zu starten.

Das ist etwas, das du auf YouTube nachschlagen kannst. Suchen Sie einfach "Jquery Ajax"

Ich kann Laravel jedem empfehlen, der neu beginnt: http://laravel.com/

122

In Javascript eine Ajax-Funktion erstellen,

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'your_url/ajax.php',
           data:{action:'call_this'},
           success:function(html) {
             alert(html);
           }

      });
 }

Dann rufen Sie von HTML an,

<a href="" onclick="myAjax()" class="deletebtn">Delete</a>

Und in Ihrer Ajax.php,

if($_POST['action'] == 'call_this') {
  // call removeday() here
}
34
devo

Sie müssen dies über AJAX tun. HEAVILY empfehle Ihnen, jQuery zu verwenden, um Ihnen dies zu erleichtern.

$("#idOfElement").on('click', function(){

    $.ajax({
       url: 'pathToPhpFile.php',
       dataType: 'json',
       success: function(data){
            //data returned from php
       }
    });
)};

http://api.jquery.com/jQuery.ajax/

12
A.O.

Es ist möglich und mit ziemlich einfachen PHP, wenn dies Ihre Schaltfläche ist

<input type="submit" name="submit>

und das ist dein PHP-Code

if(isset($_POST["submit"])) { php code here }

der Code wird aufgerufen, wenn Submit get gepostet wird. Dies geschieht, wenn der Button angeklickt wird.

10
Vamps

Versuche so etwas zu tun:

<!--Include jQuery-->
<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script>

<a href="#" onclick="doSomething();">Click Me!</a>
1
Simpel

Sie brauchen einen solchen Code.

<?php

if ((isset($_POST['del'])))
{
    //your code here
	echo "DELETED";
	
}
?>

<form action="" method="post">

	<button type="submit" name="del">Delete</button>

</form>

0
Rayobeats

Lösung ohne Neuladen der Seite

<?php
  function removeday() { echo 'Day removed'; }

  if (isset($_GET['remove'])) { return removeday(); }
?>


<!DOCTYPE html><html><title>Days</title><body>

  <a href="" onclick="removeday(event)" class="deletebtn">Delete</a>

  <script>
  async function removeday(e) {
    e.preventDefault(); 
    document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text();
  }
  </script>

</body></html>
0

Dies ist der einfachste Weg. Wenn das Formular per Post gebucht wird, führen Sie die PHP-Funktion aus. Wenn Sie die Funktion asynchron ausführen möchten (ohne die Seite neu laden zu müssen), benötigen Sie AJAX.

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>
0
csandreas1

Versuchen Sie dies, es wird gut funktionieren.

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>

<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }

?>

<button onclick="echoHello()">Say Hello</button>
0
Vidya