tpl_message = "住所を検索しています。";
}
/**
* Page のプロセス.
*
* @return void
*/
function process() {
$conn = new SC_DBconn(ZIP_DSN);
$objView = new SC_SiteView(false);
// 入力エラーチェック
$arrErr = $this->fnErrorCheck($_GET);
// 入力エラーの場合は終了
if(count($arrErr) > 0) {
$this->tpl_start = "window.close();";
SC_Utils::sfDispSiteError(CUSTOMER_ERROR);
}
// 郵便番号検索文作成
$zipcode = $_GET['zip1'].$_GET['zip2'];
$zipcode = mb_convert_kana($zipcode ,"n");
$sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
$data_list = $conn->getAll($sqlse, array($zipcode));
if (empty($data_list)) $data_list = array();
$masterData = new SC_DB_MasterData_Ex();
$arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
// インデックスと値を反転させる。
$arrREV_PREF = array_flip($arrPref);
if (!empty($data_list)) {
$this->tpl_state = isset($arrREV_PREF[$data_list[0]['state']])
? $arrREV_PREF[$data_list[0]['state']] : "";
$this->tpl_city = isset($data_list[0]['city']) ? $data_list[0]['city'] : "";
$town = isset($data_list[0]['town']) ? $data_list[0]['town'] : "";
} else {
$town = "";
}
/*
総務省からダウンロードしたデータをそのままインポートすると
以下のような文字列が入っているので 対策する。
・(1~19丁目)
・以下に掲載がない場合
*/
$town = ereg_replace("(.*)$","",$town);
$town = ereg_replace("以下に掲載がない場合","",$town);
$this->tpl_town = $town;
// 郵便番号が発見された場合
if(!empty($data_list)) {
$func = "fnPutAddress('" . $_GET['input1'] . "','" . $_GET['input2']. "');";
$this->tpl_onload = "$func";
$this->tpl_start = "window.close();";
} else {
$this->tpl_message = "該当する住所が見つかりませんでした。";
}
/* ページの表示 */
$objView->assignobj($this);
$objView->display("input_zip.tpl");
}
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
/* 入力エラーのチェック */
function fnErrorCheck() {
// エラーメッセージ配列の初期化
$objErr = new SC_CheckError($array);
// 郵便番号
$objErr->doFunc( array("郵便番号1",'zip1',ZIP01_LEN ) ,array( "NUM_COUNT_CHECK" ) );
$objErr->doFunc( array("郵便番号2",'zip2',ZIP02_LEN ) ,array( "NUM_COUNT_CHECK" ) );
// 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
if (!$this->lfInputNameCheck($array['input1'])) {
$objErr->arrErr['input1'] = "※ 入力形式が不正です。
";
}
if (!$this->lfInputNameCheck($array['input2'])) {
$objErr->arrErr['input2'] = "※ 入力形式が不正です。
";
}
return $objErr->arrErr;
}
/**
* エラーチェック
*
* @param string $value
* @return エラーなし:true エラー:false
*/
function lfInputNameCheck($value) {
// 半角英数字と_(アンダーバー)以外の文字を使用していたらエラー
if(strlen($value) > 0 && !ereg("^[a-zA-Z0-9_]+$", $value)) {
return false;
}
return true;
}
}
?>