Ajaxで郵便番号検索 | 闇プロジェクト::zoe

Ajaxで郵便番号検索

このサイトを見て、僕も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'?>

これじゃだめなのぉ??
ちゃーんと基礎を勉強しないとな。