source: branches/feature-module-update/data/class/pages/LC_Page_InputZip.php @ 16174

Revision 16174, 3.2 KB checked in by nanasess, 15 years ago (diff)

郵便番号検索の修正

  • Property svn:eol-style set to LF
  • Property svn:keywords set to HeadURL Id LastChangedBy LastChangedDate LastChangedRevision
  • Property svn:mime-type set to text/x-httpd-php
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * 郵便番号入力 のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id$
17 */
18class LC_Page_InputZip extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30        $this->tpl_message = "住所を検索しています。";
31    }
32
33    /**
34     * Page のプロセス.
35     *
36     * @return void
37     */
38    function process() {
39        $conn = new SC_DBconn(ZIP_DSN);
40        $objView = new SC_SiteView(false);
41
42        // 入力エラーチェック
43        $arrErr = $this->fnErrorCheck();
44
45        // 入力エラーの場合は終了
46        if(count($arrErr) > 0) {
47            $this->tpl_start = "window.close();";
48        }
49
50        // 郵便番号検索文作成
51        $zipcode = $_GET['zip1'].$_GET['zip2'];
52        $zipcode = mb_convert_kana($zipcode ,"n");
53        $sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
54
55        $data_list = $conn->getAll($sqlse, array($zipcode));
56        if (empty($data_list)) $data_list = "";
57
58        $masterData = new SC_DB_MasterData_Ex();
59        $arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
60        // インデックスと値を反転させる。
61        $arrREV_PREF = array_flip($arrPref);
62
63        $this->tpl_state = isset($arrREV_PREF[$data_list[0]['state']])
64            ? $arrREV_PREF[$data_list[0]['state']] : "";
65        $this->tpl_city = isset($data_list[0]['city']) ? $data_list[0]['city'] : "";
66        $town =  isset($data_list[0]['town']) ? $data_list[0]['town'] : "";
67        /*
68         総務省からダウンロードしたデータをそのままインポートすると
69         以下のような文字列が入っているので  対策する。
70         ・(1~19丁目)
71         ・以下に掲載がない場合
72        */
73        $town = ereg_replace("(.*)$","",$town);
74        $town = ereg_replace("以下に掲載がない場合","",$town);
75        $this->tpl_town = $town;
76
77        // 郵便番号が発見された場合
78        if(!empty($data_list)) {
79            $func = "fnPutAddress('" . $_GET['input1'] . "','" . $_GET['input2']. "');";
80            $this->tpl_onload = "$func";
81            $this->tpl_start = "window.close();";
82        } else {
83            $this->tpl_message = "該当する住所が見つかりませんでした。";
84        }
85
86        /* ページの表示 */
87        $objView->assignobj($this);
88        $objView->display("input_zip.tpl");
89    }
90
91    /**
92     * デストラクタ.
93     *
94     * @return void
95     */
96    function destroy() {
97        parent::destroy();
98    }
99
100
101    /* 入力エラーのチェック */
102    function fnErrorCheck() {
103        // エラーメッセージ配列の初期化
104        $objErr = new SC_CheckError();
105
106        // 郵便番号
107        $objErr->doFunc( array("郵便番号1",'zip1',ZIP01_LEN ) ,array( "NUM_COUNT_CHECK" ) );
108        $objErr->doFunc( array("郵便番号2",'zip2',ZIP02_LEN ) ,array( "NUM_COUNT_CHECK" ) );
109
110        return $objErr->arrErr;
111    }
112
113
114}
115?>
Note: See TracBrowser for help on using the repository browser.