本日は、イースマイル株式会社のホームページのお問い合わせページを江口さんと作ることになりました。まだPHPを勉強して3日目だったので、できるか不安でしたがいろいろ調べながらコツコツと作業を行いました。
作業の内容
1・ユーザーがお問い合わせページで氏名などの情報を入力し、その情報を確認画面で表示します。
2・確認画面では取得した情報を表示させ、入力した情報でよければ送信します。
3・送信されたのであれば、「送信が完了しました」などの表示を出す。
大きく分けてこの3つが作業内容になります。
ここではフォームのinputタグで入力された情報をスーパーグローバル変数であるPOSTやif文を使い、文字列などを取得し、確認画面で表示させるという作業を行いました。
ここでのポイントは、POSTで文字列を取得し、元のレイアウトのままで取得した文字列を表示させるということです。私がPHPの絵本で勉強したときは、POSTで文字列を取得し、printで表示させるといったもので、ただ単に真っ白な所に文字だけを表示させればよかったのでそこまで悩みはありませんでした。しかし今回は元のレイアウトの中に取得した文字列をいれないといけないので、「あれ?全然わからない。」と頭の中がちんぷんかんぷんに。。。確認画面のイメージはつかめているのですが、それをどういう風に表示させればいいのかと。
まず、さっぱりわからないのでとりあえず調べることに。「フォーム、確認画面、」で検索し、いろいろフォームでの確認画面の作り方がでてきました。しかし確認画面といっても、載っているのはただ真っ白なページにPOSTで取得した文字列の表示方法ばっかり。
なかなかいいヒントが見付からず、時間だけがすぎていきます。するとあるサイトにほぼ答えとなるようなヒントが載っていたのです!それはPOSTで取得した情報を変数に代入してあげるというやり方です。さらに、<input>タグのvalue属性に<?php print htmlspecialchars(変数名,ENT_QUOTES);?>を入れてあげると本来の値を表示させることができるそうです。つまり、POSTで取得した情報を変数に代入し、その変数をinputタグのvalue属性の中でprintするというやり方です。私のやりたいことはまさにこれでした。
ちなみにhtmlspecialchars()関数はhtmlにおいて特殊な意味を持つものがあり、それら本来の値を表示したければhtmlの表現方式に変換してやらなければなりません。この関数はこれらの変換を行った結果の文字列を返します。ENT_QUOTESはシングル、ダブルクォーテーション共に変換するという意味です。
さっそく試して見ることに。それぞれ取得したいnameをPOSTで引っ張ってきます。
それを$a =$_POST[\'$~\'];のように変数に代入します。次に、inputタグ内のvalue属性に先ほどの<?php print htmlspecialchars(変数名,ENT_QUOTES);?>を挿入します。たったこれだけです。分かってしまえばこんなにも簡単なはずのにこの答えを探すのに時間をかけすぎてしまい本日はここで終了しまいた。。。とりあえずレイアウトを変えずに文字列を挿入することはできたので明日はその続きをやります。
11月20日 宮本 勇