php

郵便番号から変換した住所をJavaScriptで取得する

 

Webアプリケーションの申し込み画面等で住所を入力させる場合に、郵便番号から住所を参照させたい時がよくあります。

こんな感じですね

form1.png

 

これをJavaScript(クライアントサイド)とPHP(サーバーサイド)の組合せで作ってみます。

郵便番号のデータは、日本郵便のサイトから取得することができます。

 

ここでは、「読み仮名データの促音・拗音を小書きで表記するもの」の全国版を取得しました。

get_csv.png

 

HTTPのページからJavaScriptでHTTPSで通信する方法

今回は久しぶりにWebネタです。

HTTPのページからHTTPSを使ってJavaScriptでサーバと通信するのは特に問題無さそうにも思えますが、普通にAjaxを使おうとしても拒否されてしまいます。

 

MacでPostfixを起動

PerlやPHPを使った開発でメールを送信する機能を実装することがありますが、Macの場合、標準の状態ではメールが送信されないようです。

※sendmailコマンドや、mail関数(phpの場合)を使って送信する場合の話です。以下は、Mac OSX 10.7.5で試しました。環境によっては違うかもしれません。

 

Macには最初からPostfixがインストールされているのですが、自動起動はしないので設定して起動する必要があります。

ps_postfix.png

sudoを使ってルートユーザで起動します。

postfix_start.png

警告が出ていますが、とりあえず起動はしたようです。

CakePHPでデータを一括登録する

CakePHPでちょっとハマったので、メモ

 

CakePHPのモデルを使うと、SQL文を書かなくてもレコードの登録や更新ができます。

例えば、citiesというテーブルがあるとします。


CREATE TABLE `cities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `post_code` char(7) NOT NULL,
  `name` tinytext NOT NULL,
  PRIMARY KEY(`id`),
  UNIQUE KEY `post_code` (`post_code`)
);

このテーブルにレコードを登録する場合は、Cityというモデルクラスを用意して、

※テーブル名が英語の複数形で、モデルクラス名が単数形なのは、CakePHPの既定の命名規則で、この規約に従って命名すると、いろいろ記述を省略できて便利なんですが、この規約に従わないように記述することもできます。

PHPで可変引数を使う

phpで引数を受け取る関数を定義する時、普通は、


function add($a, $b) {
    return $a + $b;
}

といった感じで定義しますが、実は次のようにも書けます。


function add() {
    $args = func_get_args();
    return $args[0] + $args[1];
}

func_get_args()で、関数に渡された引数が配列で返されます。

この書き方だと、引数の数も限定されません。


function add() {
    $args = func_get_args();
    $sum = 0;
    foreach ($args as $v) {
        $sum += $v;
    }
    return $sum;
}

echo add(10, 20, 30, 40, 50);	// 150が出力される。

関数定義で引数を宣言しても構いません。