前提
ここに質問の内容を詳しく書いてください。
phpとHTMLを連動させ、HTML内でphpの変数を使用したい
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
HTML内のボタンを押したとき、onclick=””でphpの関数を呼び出したい
まずphpで変数$a=1を定義し、セッションに保存しておく。
次に、$aに1を加え、変更後をセッションに保存する関数funcを定義しておく。
ボタンを押す前は1が表示されており、ボタンを押すと2が表示されるようにしたい。
最終的には並行で1画面にいくつもの変数(変数同氏は連動していない)と、対応するボタンを表示する予定のため、
phpファイルに遷移ではなく、関数のみを呼び出し変数を変更する機能を実装したい。
発生している問題・エラーメッセージ
初めから関数実行後の変数が表示されてしまう。 もしくは、初めから関数実行後の変数が表示されてしまいかつ関数実行後の結果のみが表示されてしまう
該当のソースコード
第一案
<?php session_start(); $count = 1; $_SESSION['count']= $count; echo $count; function func() { global $count; $count++; $_SESSION['count']=$count; echo $_SESSION['count']; } ?> <script type="text/javascript" async> function test(){ document.getElementById("php_code").innerHTML='<?php func();?>'; } </script> <p><?php echo $_SESSION['count'] ?></p> <a href="#" onclick="test(); return false;"> test </a> <p id="php_code"></p>第二案
<?php session_start(); $count = 1; $_SESSION['count']= $count; echo $count; function func() { global $count; $count++; $_SESSION['count']=$count; echo $_SESSION['count']; } ?> <script type="text/javascript" async> function clickMe(){ var result ="<?php func(); ?>" document.write(result); } </script> <p><?php echo $_SESSION['count'] ?></p> <button type="button" onclick="clickMe()"> Click </button>試したこと
ここに問題に対して試したことを記載してください。
①javascriptを経由することで、onclick→javascriptの関数→phpの関数という流れでPHPの関数自体の呼び出しには成功した。
②button属性のtype="button"を指定する、もしくはjavascript関数の呼び出しをreturn false;で中断することで、画面遷移なしのonclick機能の実行が可能になった。
③しかしながら、javascriptの関数の戻り値をPHPの関数の結果そのものにする方法が分からない。(php関数自体に出力をさせてその結果を返すのではなく、php関数自体は変数の書き換えのみに終始したい)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
PHPバージョン8.0.1 1