Memorial Application

記念日をタイプ入力して、曜日と経過日数とメッセージを表示するアプリを作成します。

プログラムの説明

  1. ビルトインサーバーで DB(sqlite) が使えるようなので、サンプルプログラムとして記念日アプリケーションを開発します。
    コンソールモードで PHP & sqlite を使える状態に設定して下さい。
    詳細は php.ini 及び PHP ⇒ DB Chat を参照して下さい。
  2. PHP はサーバー上で動作するスクリプトなのですが、ビルトインサーバーを使うとローカル環境でも動かすことが出来ます。
    JavaScript はクライアント上で動作するスクリプトで、パソコン上(ブラウザ)で動きます。
    記念日をタイプ入力するような操作は JavaScript を使います。
    PHP で DB にアクセスする操作は、サーバー(ビルトインサーバー)上で行われます。
  3. ゲームを開発する上で PHP と JavaScript が実行される順序が重要です。
    ホームページにアクセスするとサーバー(ビルトインサーバー)上のページが呼び出され PHP が使われていれば、PHP が実行されます。
    PHP が吐き出したソースコードがクライアントに送り返され、ブラウザによって JavaScript が実行されます。
    PHP から JavaScript に情報を伝達するには、PHP で JavaScript のコードを吐き出せば良いのです。
    原則的に JavaScript から PHP にアクセスすることは出来ませんが、パラメータを設定して PHP のページを呼び出すことは出来ます。
    HTTP のゲームプログラムでは、この方法が良く使われます。
  4. 記念日アプリケーションでは JavaScript で記念日をタイプ入力して、これをパラメータとして PHP のページを呼び出します。
    DB(sqlite) はサーバー(ビルトインサーバー)上に構築されているので、クライアント側(JavaScript)ではアクセスすることは出来ません。
    JavaScript で曜日や経過日数を計算するページは Days of the week を参照して下さい。

JavaScript ⇒ PHP

  1. JavaScript で記念日をタイプ入力して PHP のページを呼び出す memo_type.html です。
    prompt() で記念日をタイプ入力して、これをパラメータにして memo_view.php を呼び出します。
    <html>
    <head>
    <meta charset=utf-8">
    <link rel="stylesheet" href="php.css" type="text/css">
    </head>
    
    <body>
    <h1>記念日アプリケーション</h1>
    <script type="text/javascript">
        var str = prompt("記念日をタイプして下さい", "1995-1-17");
        var phpcall = "memo_view.php?ymd=" + str;
        location.href = phpcall;
    </script>
    
    </body>
    </html>
    
  2. memo_type.html から PHP を呼び出すので、サーバー(ビルトインサーバー)から起動して下さい。
    ビルトインサーバーの起動は built-in DB で説明しています。
    1. コマンドプロンプトを起動して phpbat.bat を実行する。
      C:\Users\maeda\ はコマンドプロンプトを起動したときの「私の既定のフォルダー」です。
          C:\Users\maeda>phpbat.bat
      
    2. ブラウザを起動して http://localhost:8000/memo_type.html をURLに貼り付ける。
      memo_type.html が呼び出される。
    3. 記念日をタイプすると "memo_view.php" が呼び出されてデータが表示される。
    4. コマンドプロンプトの画面から Ctrl+c でビルトインサーバーを終了する。
  3. JavaScript から呼び出されて記念日の曜日と経過日数とメッセージを表示する memo_view.php です。
    記念日のデータを印字する をクリックするとソースコードが印字されます。
    PHP のプログラム(PHP のページ)はサーバー(ビルトインサーバー)上でしか実行されません。
    head 内で関数を定義します。
    Msg() が DB(memorial.db) から通算日付($num)で検索してメッセージを印字する関数です。
    body でパラメータを受け取って記念日の情報を表示します。
    $day が今日の通算日数で、$num が記念日の通算日数です。
  4. ボタンのクリックで記念日のタイプ入力に戻ります。
    PHP で Javascript のコードを吐き出して、ボタンをクリックすると memo_type.html を呼び出します。
    <input type="button" value="next" onclick="next()">
    <?php
        print "<script type='text/javascript'>";
        print "function next()";
        print "{  location.href = 'memo_type.html';  }";
        print "</script>";
    ?>
    

DB を日で検索

  1. 記念日も年数を経過すると「月や日」は覚えていても「年」がわからない事が良くあります。
    そこで「日」で検索して、ヒットしたメッセージを全て印字してみます。
    JavaScript で記念日をタイプ入力して、日で検索する memo_day.php を呼び出す memo_day.html です。
    <h1>記念日アプリケーション</h1>
    <script type="text/javascript">
        var str = prompt("記念日をタイプして下さい", "1995-1-17");
        var phpcall = "memo_day.php?ymd=" + str;
        location.href = phpcall;
    </script>
    
  2. memo_day.html から PHP を呼び出すので、サーバー(ビルトインサーバー)から起動して下さい。
    1. コマンドプロンプトを起動して phpbat.bat を実行する。
      C:\Users\maeda\ はコマンドプロンプトを起動したときの「私の既定のフォルダー」です。
          C:\Users\maeda>phpbat.bat
      
    2. ブラウザを起動して http://localhost:8000/memo_day.html をURLに貼り付ける。
      memo_day.html が呼び出される。
    3. 記念日をタイプすると "memo_day.php" が呼び出されて、データが印字される。
    4. コマンドプロンプトの画面から Ctrl+c でビルトインサーバーを終了する。
  3. JavaScript から呼び出されて DB(memorial.db) を日で検索する memo_day.php です。
    DB を日付で検索する をクリックするとソースコードが印字されます。
    PHP のプログラム(PHP のページ)はサーバー(ビルトインサーバー)上でしか実行されません。
    memo_view.php と変わるのは Msg() 関数です。
    ymd like でパターンマッチングで検索条件を設定します。
    %  任意の0文字以上の文字列
    _  任意の1文字
    
        function Msg($ymd)
        {   $ary = explode("-", $ymd);
            $srh = "'%-" . $ary[2] . "'";
            print "Msg srh key:" . $srh . "<br>\n";
            $db = new SQLite3('memorial.db');
            $results = $db->query("select * from table1 where ymd like" . $srh);
            while($row = $results->fetchArray())
            {   print "$row[ymd]<br>\n";
                print "$row[msg]<br>\n";
            }
            $db->close();
        }
    
  4. ボタンのクリックで記念日のタイプ入力に戻ります。
    PHP で Javascript のコードを吐き出して、ボタンをクリックすると memo_day.html を呼び出します。
    <input type="button" value="next" onclick="next()">
    <?php
        print "<script type='text/javascript'>";
        print "function next()";
        print "{  location.href = 'memo_day.html';  }";
        print "</script>";
    ?>
    

前田稔の超初心者のプログラム入門
PHP Program