このサイトを見て、僕もajaxやってみようと思い会社のマシンでajaxで郵便番号検索をやってみることにした。
1.郵便番号データをもらってくる
贅沢に全国一括を落とす。
2.MySQLに「yubin」テーブルを作成
CREATE TABLE `yubin` (
`jiscode` int(5) default NULL,
`old` varchar(5) default NULL,
`new` varchar(7) default NULL,
`fuken_kana` varchar(50) default NULL,
`si_kana` varchar(50) default NULL,
`mati_kana` varchar(100) default NULL,
`fuken` varchar(100) default NULL,
`si` varchar(100) default NULL,
`mati` varchar(100) default NULL,
`a` tinyint(1) default NULL,
`b` tinyint(1) default NULL,
`c` tinyint(1) default NULL,
`d` tinyint(1) default NULL,
`e` tinyint(1) default NULL,
`f` tinyint(1) default NULL
) TYPE=MyISAM;
3.1で落としたcsvデータをなんとかして「yubin」テーブルへ作成
phpMyAdminなどで~。
4.HTMLとjavascriptは上記サイト様から借用させて頂きました。
HTMLの変更箇所は、エンコード部分
前:<?xml version="1.0" encoding="EUC-JP"?>
後:<?xml version="1.0" encoding="Shift_JIS"?>
ajaxzip.jsの変更箇所は、サーバ側スクリプト呼出部分
前:xmlHttp.open('GET', 'ajaxzip.cgi?z=' + escape(zip), true);
後:xmlHttp.open('GET', 'xmlHttp.php?z=' + escape(zip), true);
5.サーバサイドの郵便番号検索のPHP(xmlHttp.php)は
<?php
require("DBconf.php");
// データベースへの接続
$db_link = mysql_connect('host', 'user', 'pass');
$db = "work";
$sql = "select * from yubin where new like '" . $_GET['z'] . "%'";
$rs = mysql_db_query($db,$sql);
$rows = mysql_num_rows($rs);
if ($rows > 0) {
$row=mysql_fetch_array($rs);
print "Content-Type: text/xml\n\n";
print ("<?xml encoding=\"Shift_JIS\" version=\"1.0\" standalone=\"yes\"?><zip><pref>"
. $row["fuken"] . "</pref><city>" . $row["si"] . "</city><ville>"
. $row["mati"] . "</ville></zip>");
}
mysql_free_result($rs);
mysql_close($db_link);
?>
6.でもうごかないんだが ...orz
一応、サーバからXMLを取得してはこれるんだけど、エンコードがミスってるようで、文字化けを起こしている。。
なんかXMLはUTF8かUTF16のUnicodeが基本らしく、それ以外の文字コードを使うときは「encoding=」で指定するらしいんだけど、どうにもだめ。
<?xml version='1.0' encoding='Shift_JIS'?>
これじゃだめなのぉ??
ちゃーんと基礎を勉強しないとな。