web-dev-qa-db-ja.com

実行する PHP onclickによる機能

a-tag がクリックされた場合にのみ、 PHP関数 を呼び出す簡単な解決策を探しています。

PHP:

function removeday() { ... }

HTML:

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

更新: htmlとPHPコードは同じPHPファイルにあります

82
Mike

まず、3つの言語が連携していることを理解してください。

  • PHP:サーバーによってのみ実行され、リンクのクリック(GET)やフォームの送信(POST)などの要求に応答します。

  • HTMLとJavaScript:誰かのブラウザ(NodeJSを除く)でのみ実行されます。

あなたのファイルは次のようになっていると思います。

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

PHPは要求(GET、POST、PUT、PATCH、および$ _REQUESTを介したDELETE)にしか応答しないため、これらの関数があってもPHP関数を実行する必要があります同じファイルこれにより、「このユーザーに対してこのスクリプトを実行する必要があるかどうか」というセキュリティレベルが得られます。

ページを更新したくない場合は、Asynchronous JavaScript and XML(AJAX)と呼ばれるメソッドを使用して、更新せずにPHPにリクエストを送信できます。

それはあなたがYouTubeで調べることができるものです。 「jquery ajax」を検索するだけです。

私はLaravelを初めて始める人にはお勧めです: http://laravel.com/

126

JavaScriptで、Ajax関数を作ります。

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

      });
 }

その後、HTMLから呼び出し、

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

そしてあなたのajax.phpの中で、

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

_ ajax _ でこれをしなければならないでしょう。私はあなたがこれをより簡単にするためにあなたがjQueryを使うことをお勧めします....

$("#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.

これがあなたのボタンであれば、それはかなり単純なphpで行うことができます。

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

これはあなたのPHPコードです

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

ボタンがクリックされたときに発生する送信取得時にコードが呼び出されます。

9
Vamps

このようなことをしてみてください。

<!--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

あなたはこのようなコードが必要です。

<?php

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

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

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

</form>
0
Rayobeats

ページをリロードしないで解決する

<?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

これが最も簡単な方法です。フォームがpost経由で投稿されている場合は、php機能を実行します。 (ページをリロードする必要なしに)非同期に機能を実行したい場合は、AJAXが必要になります。

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

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

これを試してくださいそれはうまくいきます。

<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