今回はもっとも簡単な例として、計算は足し算に限定しました。また未入力のチェックも行っていません。その分プログラムがシンプルなので、フォームとスーパーグローバル変数の関係を理解しやすいと思います。
【1】test フォルダの中に sample007 フォルダを新たに作成します。
【2】sample007 フォルダの中に calc.html と calc.php を新たに作成します。
*「\」はWindowsではエンマークのことです。
保存先 C:\phpdev\www\test\sample007
ファイル名 calc.html
<html>
<head>
<title>calc.html</title>
</head>
<body>
<form name="form1" action="calc.php" method="post">
<input type = "text" name = "txtA"> +
<input type = "text" name = "txtB"> = ?
<br>
<input type="submit" value="計算">
</form>
</body>
</html>
保存先 C:\phpdev\www\test\sample007
ファイル名 calc.php
<html>
<head>
<title>calc.php</title>
</head>
<body>
<?php
$a = $_POST['txtA'];
$b = $_POST['txtB'];
$c = $a + $b;
print ($a." + ".$b." = ".$c."\n");
?>
</body>
</html>
*上記のプログラムはページの都合上、インデント(字下げ)が半角スペース2つになっていますが、実際には半角スペース4つにするのが好ましいです。インデントはプログラムの動作には影響しません。
【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。
準備ができたら作成したPHPプログラムを実行してみましょう。
【4】ブラウザのアドレスに http://localhost/test/sample007/calc.html と入力し、実行します。
【5】calc.html の画面が表示されました。
【6】テキストボックスに半角数字を入力します。
【7】「計算」ボタンをクリックします。
【8】ブラウザのアドレスが calc.php に変わっていることを確認します。
【9】計算結果が表示されました。
【10】ブラウザの「戻る」ボタンをクリックします。
【11】calc.html に戻りました。
【12】テキストボックスの値をいろいろ変えて、動作を確認してください。
テキストボックスの入力チェックはしていないので、未入力があった場合は計算がおかしくなります。
【解説】
■calc.html側
(1)formタグで囲んだ中にある部品の値は、PHPで変数として受け取れます。 action で処理を渡すPHPを指定し、 method で渡し方を指定しています。
<form name="form1" action="calc.php" method="post">
省略
<input type="submit" value="計算">
</form>
*method には post と get があります。
(2)部品の名前はPHP側で受け取る時、配列のキーとなりますので重要です。
<input type = "text" name = "txtA">
<input type = "text" name = "txtB">
■calc.php側
(1)$_POST はスーパーグローバル変数といい、フォームから送られてきた値を連想配列として持っています。連想配列から値を取り出すときは、フォームの部品に付けた名前をキーとして指定します。取り出した値は変数に代入しておいて、プログラムで使いやすいようにしています。
$a = $_POST['txtA'];
$b = $_POST['txtB'];
*method にget を指定した場合や、URL を使って値を渡す場合は $_GET を使います。
URLで値を渡す例 URL?変数名=値&変数名=値
http://localhost/test/sample007/calc.php?txtA=10&txtB=20
(2)代入しておいた変数を使って計算し、画面に出力しています。
$c = $a + $b;
print ($a." + ".$b." = ".$c."\n");
【ワンポイント】
データの受け渡しにはいくつかパターンがあります。今回の例は1でした。
1.HTML → PHP
2.他のPHP → PHP
3.PHP → PHP(自身)
他にも、クッキーやセッションを使ってデータを受け渡しできますが、その方法はまたの機会に解説します。