郵便番号住所検索付き Pear フォ-ム

Pear ZIP フォ-ム作成

63Pear Village のトップの左サイドナビ「Pear フォ-ム作成」の中の
Pear フォ-ム作成 PHP ファイル
を基本に改造していきます。
Pear フォ-ム作成 PHP ファイル form_quick.php の中に、
63Pear Villageのトップの左サイドナビ「郵便番号住所検索」の中の「郵便番号住所検索 PHP ファイル」 Yubin.php の一部を組入れます。
組入れ部分は、
元祖 郵便番号住所検索 PHP ファイル(赤字色付)
Yubin.php の赤字部分です。

textarea フォームの生成

今回、住所とコメント入力は複数行の入力欄にしたいと思います。
addElement メソッドを使用して form(textarea) 部品を作ります。
書式は、
form 部品の種類, Name属性, Label 入力欄の名称等の表示文字
の順に記入します。
textarea を作成します。
住所入力欄を例として説明します。
$form->addElement
('textarea', 'addre',
'住所:<br>
全角なら<br>
40文字以内',
array('rows'=> 4, 'cols' => 20, 'maxlength' => 120,));
となりますが、Label の部分が複雑です。
'rows'=> 4 で入力行を指定します。今回は4行です。
'cols' => 20 で入力列を指定します。
今回は半角換算20列、全角文字10文字分の行を確保します。
ただこの指定はブラウザによって表示のされ方が多少変わるようです。
これで全角で40文字分の枠を確保、ここに全角なら40文字が入れられるようにします。
utf-8 は全角では1文字3バイト必要なので 40×3=120バイトを maxlength に指定します。
コメント欄も同様に設定します。
その他、text、submit form の作成については、
63Pear Village のトップの左サイドナビ「Pear フォ-ム作成」の中の
Pear フォ-ム作成ファイル
のなかで説明していますのでそちらを参照してください。

合体は難しい

郵便番号住所検索を実行した後、その結果を住所フォ-ムの中に書込むかが難しいのです。
今回は、入力内容と検索結果を一旦、SESSION に保存し、ファイルの先頭に戻り、 SESSION 値を入力フォーム Value 値に取込んで再表示させます。

HTML_QuickForm で Value 値を設定

Pear::HTML_QuickForm で Value 値を設定するには、setDefaults メソッドで value 値をセットします。
今回の場合で、入力フォームの名前の value 値を設定するならば、
$defaultValue['uname'] = '山田'
として
$form->setDefaults($defaultValue);
とすれば value 値を'山田'に設定することができます。

foreach 拡張構文で Value 値を設定

value 値は複数ありますので、foreach 拡張構文で Value 値を設定していきます。
基本書式は、
foreach( 配列 $defaultValue as $key => $value )
ループ処理;
となり、「キーと値」を参照します。
$defaultValue = array(
'uname' => '',
'email' => '',
'come' => '',
'postnum' => '',
'addre' => ''
);
と定義し、

  foreach
   ($defaultValue
     as $key => $value){
    if(isset($_SESSION[$key])){
      $defaultValue[$key] =
       $_SESSION[$key];
    }
  }

とすると、$key に 'uname' が設定され、$_SESSION[uname] が存在すればこれを参照し、 $value に入れ、そのあと $value の値が $defaultValue[uname] に設定されます。
この作業は、今回キーは5個ありますので5回繰返されます。

郵便番号住所検索終了

郵便番号住所検索が終わったら、住所検索結果と
$_POST に入力されている
郵便番号、名前、メールアドレス、コメント
を $_SESSION に保存し、
$_SESSION["addre"] =
 $address['pref'].$address['city'].
 $address['town'].$addess['other'];
$_SESSION["postnum"] = $_POST["postnum"];
$_SESSION["uname"] = $_POST["uname"];
$_SESSION["email"] = $_POST["email"];
$_SESSION["come"] = $_POST["come"];
として、このファイルの先頭に戻ります。

ファイルの先頭に戻るには

よく使われる定跡は
header("Location:" . $_SERVER['SCRIPT_NAME']);
です。
'SCRIPT_NAME' は現在のスクリプトのパス。
スクリプト自身のページを指定するのに有用です。
カレント(読込まれている)ファイルのパスのファイル名に飛んでいきます。

Pear ZIP フォ-ムファイル完成

やっと Pear ZIP フォ-ムファイルが完成しました。
完成ファイルは、
63Pear Village のトップの左サイドナビ「郵便番号住所検索付き Pear フォ-ム」の中の
Pear ZIP フォ-ム PHP ファイル
から見てください。
Pear フォ-ム作成 PHP ファイル form_quick.php からの流用部分は黒字
郵便番号住所検索 PHP ファイル Yubin.php からの流用部分は赤字
新規追加部分は青字
で明示しています。


Pear ZIP フォ-ム確認に続く
Pear ZIP フォ-ム概要に戻る

63Pear Village に戻る