選択してから表にする 1

データを選択

元のデータはこれです。 2to3nen.txtという名前でサーバーに保存してあります。tbltxt.txt と同様に php でこれを読んで選択した後tableにして送信します。

2A	1	有馬	礼奈	女	ありま	れいな	3E	2
2A	2	上野	加奈	女	うえの	かな	3G	2
2A	3	岡本	愛	女	おかもと	あい	3A	2
2A	4	工藤	麗子	女	くどう	れいこ	3A	6
2A	5	桑田	明菜	女	くわた	あきな	3C	4
2A	6	佐々木	五月	女	ささき	さつき	3B	9
2A	7	佐藤	詩織	女	さとう	しおり	3B	11
2A	8	須藤	菜摘	女	すとう	なつみ	3G	9
2A	9	舘山	郁子	女	たてやま	いくこ	3C	10
2A	10	田中	智美	女	たなか	さとみ	3G	10
2A	11	千葉	紗千	女	ちば	さち	3H	10
2A	12	直井	絵洋	女	なおい	えみ	3E	17
........2Hまで288人

データは右クリックでダウンロードして使ってください。tbltxt.txt と同様に.php ファイルと同じ場所に保存します。

2to3nen.txt のダウンロード

これからクラスを選択して選択したクラスだけの表にする。cssであらかじめスタイルを作っておきます。

選択のボタンが必要です。select1.phpは自分自身

<form action="select1.php" method="post">
<p>
<button name="hr" value="2A">2A</button>
<button name="hr" value="2B">2B</button>
<button name="hr" value="2C">2C</button>
<button name="hr" value="2D">2D</button>
<button name="hr" value="2E">2E</button>
<button name="hr" value="2F">2F</button>
<button name="hr" value="2G">2G</button>
<button name="hr" value="2H">2H</button>
</p>
</form>

余談ですがbutton要素はhtml5から使えるようになりました。以前は次のように書いていました。valueの値とボタンに表示される文字列が必ず同じになるので、不便でした。

<input type="submit" name="hr" value="2A">

PHPプログラムはこれ。<table></table>はそのまま書き、その間にPHPプログラムを書く

<table>
<?php
$fp = fopen("2to3nen.txt","r");        
$shr="2Z";
if( isset($_POST["hr"]) ){ $shr =$_POST["hr"];}
while(!feof($fp)){
    $line = fgets($fp);
    if (trim($line) != null){
        list($hr,$no,$sei,$mei,$seib,$ysei,$ymei,$newhr,$newno) = explode("\t",$line);
        if ($hr === $shr){
            print "<tr>\n";
            print "<td>$hr</td><td>$no</td><td>$sei</td><td>$mei</td>";
            print "<td>$seib</td><td>$ysei</td><td>$ymei</td>\n";
            print "<td>$newhr</td><td>$newno</td>\n";
            print "</tr>\n";
        }
    }
}
fclose($fp);
?>
</table>
$shr="2Z";
if( isset($_POST["hr"]) ){ $shr =$_POST["hr"];}
本来は、$shr =$_POST["hr"]; だけでもいいところです。つまり、hr="2B" として呼び出されると、$shr="2B"; となるわけです。しかし、hrの値がセットされずにphpが呼び出される可能性があります。その場合、$shr="2Z";となるようにしているのです。
hrの値がセットされているかどうかを調べる関数が isset($_POST["hr"]) です。
$hr == $shr
$hr == $shr は比較ですが、型の変換をしてから比較します。
数値を比較するには便利です。$a=2 と $b="02" でも $a==$b で同じと判断してくれるからです。( 2 is same to 02)
文字列として比較する場合、副作用があります。$a=2 と $b="2B" で $a==$b とすると同じと判断されてしまうことです。( 2 is same to 2B)
$hr === $shr
$hr === $shr は型の変換をせずに比較します。同じ型でないと等しいとしません。文字列の比較に適しています。
$a=2 と $b="02" で $a===$b とすると異なると判断します。( 2 is NOT same to 02)
$a=2 と $b="2B" で $a===$b とすると異なると判断します。( 2 is NOT same to 2B)

課題

課題1

上記のページを作りなさい。phpのページファイルは select1.php という名前で保存します。index.htmlに「phpで選択1」という名前の リンクを作ります。

表には項目名をいれること。

課題2

上記のページにさらに3年のクラスでも選択できるようにしなさい。phpのページファイルは select2.php という名前で保存します。index.htmlに「phpで選択2」という名前の リンクを作ります。