画面遷移せずに PHP に変数を渡す

html 画面に form などを配置して何らかのデータを入力した場合に、 普通は「action="test01.php"」などとして test01.php に画面が遷移して処理がおこなわれますが、遷移をせずに php に変数を送りたいことがあります。

これまでそんなことができるとは思っていなかったのですが、ajax を使えば比較的簡単にできるようです。
ここを参考にさせて頂きました。というよりそのまんまですが。

プログラムの流れ

参考ページを最初に見た時、何がどのように動いているのかが理解できませんでした。
なので、まずはそれを説明します。

  1. このページの下の方に入力フォームがありますが、ここにデータを入力します。
  2. 入力されたデータは、test01.php に送られて処理されます。
  3. 処理の方法は、hoge と moge にデータが設定されていたら送信された日付と内容を追記モードでテキストファイルに書き込むというものです。
  4. そのテキストファイルを読み込んで、その内容をこのページの div タグに書き込みます。

この4番目がどうにも理解できませんが、こんなことが ajax を使えばできるようなのです。

PHP プログラム

PHP プログラムは以下のようになっています。hoge と moge 両方入力しないと処理されないようになっています。


<?php
if($_POST['hoge']&&$_POST['moge']){ 
   //  data.txt に書き込む
   $hizuke = date("Y/m/d H:i:s") ;  
   $hoge = $_POST['hoge'] ;
   $moge = $_POST['moge'] ;
   $str = $hizuke." : ".$hoge." --- ".$moge."<br>" ;     
   file_put_contents('data.txt',$str, FILE_APPEND);
   //  data.txt を読み込む
   $filename = 'data.txt';
   $content = file_get_contents($filename);  
   echo $content;
}

入力フォーム

こういうことができるということは、何らかのフォームに入力したデータをページ遷移することなく mysql にも記録できるということです。 これは非常に便利です。

なお、jQuery の配置は<body ></body >でなければならないようです。この理由はよくわかりません。

(2018年3月3日)