1

これは基本的な質問のようですが、解決方法がわかりません。

ボタンを使用して、php の変数の値を変更する必要があります。具体的には、ボタンを押すたびに、変数の値を増やす必要があります。

コードは次のとおりです。

     <!DOCTYPE html>
     <html lang="en">
     <head>
        <meta charset="utf-8">
        <title>Test</title>
     </head>
     <body>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script>
             function echoVal()
             {
                 alert("<?php val(); ?>");
             }
        </script>

        <?php
             function val() {
                static $a = 0;
                $a++;
                echo $a;
             } 
        ?>

        <button onclick="echoVal()"> Increase </button>
     </body>
     </html>

主な問題は、変数 $a の値が常に 1 であり、ボタンが押されても値が増加しないことです。拡張子 .php を付けてファイルを保存しました (違いがあるかどうかはわかりませんが、言及しただけです)。

この問題を解決するための提案はありますか?

ご提案いただきありがとうございます。

編集されたコード:

     <!DOCTYPE html>
     <html lang="en">
     <head>
        <meta charset="utf-8">
        <title>Test</title>
     </head>
     <body>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script>
             function echoVal()
             {
                 alert("<?php val(); ?>");
             }
        </script>

        <?php
             function val() {
                static $a = 0;
                $a++;
                $filename ='infoX.txt';
                if (is_writable($filename)) {
                    if (!$handle = fopen($filename, 'w')) {
                        echo "Cannot open file";
                    } else {
                        if (fwrite($handle, $a) == FALSE) {
                            echo "Cannot write to file";
                        } else {
                            echo $a;
                        }
                        fclose($handle);
                    }  
               } else {
                    echo "The file is not writable";
               }
             } 
        ?>

        <button onclick="echoVal()"> Increase </button>
     </body>
     </html>
4

1 に答える 1

3

更新: この例: https://stackoverflow.com/a/3410025/49251は、あなたがやろうとしていることを正確に示すことができると思います。以下の私の答えは、最初の試みがうまくいかない理由についての文脈を提供する試みです。


PHP の static は、スクリプトが実行されている間だけ「存続」します。

スクリプトはサーバー上でのみ実行されます。スクリプト内の静的は、サーバーが要求に関連付けられたファイル/スクリプトを処理している間だけ「有効」になります。リクエストが処理され、レスポンスが送信されると、PHP はなくなります。終わり。生きていない。終了した。

ブラウザー側には PHP はなく、応答が送信された後、サーバーは要求に関して何も実行していません (一部のメモリ キャッシング戦略はこれの例外になる可能性がありますが、一般的に、私が説明しているのは通常の方法です)。 PHPの仕組み)。

PHP の Web 実行モデルは、(1) 要求、(2) サーバー (多くの場合 Apache) が PHP を実行して要求のコードを処理し、応答を送信し、(3) 完了します。

あなたがやろうとしていることをするために:

  1. ブラウザ側のコード全体 (javascript) を使用するか、
  2. ボタンクリックの結果をサーバーに送信してデータベースに永続化し、ページをリロード/再生成するか、ajax を使用してサーバー上のコードを実行し、その一部を更新することにより、更新された結果を再要求できます。それに応じてページ。
于 2013-01-12T19:21:21.893 に答える