onclickでPHP関数を実行する

a-tagがクリックされたときだけPHP関数**を呼び出す簡単な解決策を探しています。

PHP:

function removeday() { ... }

HTML:

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

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

質問へのコメント (4)
ソリューション

まず、3つの言語が一緒に機能していることを理解しよう:

  • PHP:PHPはサーバー側でのみ動作し、リンクのクリック(GET)やフォームの送信(POST)といったリクエストに応答します。

  • HTML & JavaScript:NodeJSを除く)。

このようなファイルを想定しています:



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

PHPはリクエスト($_REQUEST経由のGET, POST, PUT, PATCH, DELETE)にのみ応答するため、同じファイル内であってもこのようにPHP関数を実行しなければなりません。 これにより、「このユーザーに対してこのスクリプトを実行すべきか否か」というセキュリティレベルを確保することができます。

ページを更新したくない場合は、非同期JavaScriptおよびXML(AJAX)と呼ばれる方法で、更新せずにPHPにリクエストすることができます。

これはYouTubeで調べることができます。 jquot;jquery ajax&quotで検索してみてください;

http://laravel.com/

解説 (5)

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
}
解説 (2)

これは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/

解説 (4)

それはかなり単純なphpで実行できます。 これがあなたのボタンなら。

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

これがphpコードです。

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

ボタンをクリックすると発生する、送信getが投稿されたときにコードが呼び出されます。

解説 (1)

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


<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>
解説 (0)

ページのリロードなしのソリューション。

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

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

Days

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

解説 (0)

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


    test


    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>
解説 (1)

これを試してみてください。

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

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

?>

Say Hello
解説 (1)