Mineaki Gotoh
gij****@peak*****
2002年 12月 13日 (金) 14:05:10 JST
西村さん、こんにちは。後藤です。 西村さんみたいに積極的にご自身で試していただける方だと、レスをつける 私としても非常にやりがいがあります。 > 》という関数の、3番目の引数に、'style="ime-mode:disabled"' を与えます。 > 詳細なわかりやすい解説、ありがとうございます。さっそく試してみました。 > IMEが自動的に無効になると、スムースに入力ができて、とても使いやすくなり > ました。初心者が登録を迷わないようにするという意味では、この方法は非常に > 有効ですね。 そうですね。最初から半角でしか入力できないのですから、迷いようがない と思います。 > なお、Netscape6.1とOpera6でもやってみましたが、両ブラウザは上記CSS非対応 > のようでした。 確認ありがとうございます。私もOpera6で試してみましたが、確かにこの CSSは無視されているようでした。 日本語のフォーム入力において、IMEコントロールって意外に重要な要素だと 思うだけに、ちょっと残念ですね。 > 》もちろん、バイト数の制限はあるので、最初から、各カラムのサイズを大き > 》くしておけば、データを落とすことはなくなると思います。(郵便番号が全 > 》角で入力されていても、7桁すべてが読めれば、それを管理者が半角に修正 > 》することは簡単ですので) > これは、例えば、郵便番号を全角入力してもデータが切れないようにするには > > /catalog/address_book_process.php(name="postcode") > /admin/customers.php(entry_postcode) > の、maxlength="8"を"16"に書き換え、 > > SQLサーバーの以下の値の長さを16にするということでよろしいのでしょうか? > > entry_postcode varchar(10) →(16) > customers_postcode varchar(10) →(16) > delivery_postcode varchar(10) →(16) > > いまのところ、全角で入力してもデータが切れることは無く、問題なく動いてい > るようですが、間違いがありましたら、ご指摘いただけたらありがたいです。 恥ずかしながら、input='text' における maxlength という属性を、今はじ めて知りました。(おかげさまで勉強になりました) ただ、IE5およびOpera6で試した限りにおいては、maxlength は、全角でも半 角でも1字という解釈なので、ここが問題になることはないでしょう。 そんなわけで、修正はMySQL側だけで済むと思います。(ソースをいろいろい じると、後が大変ですし) 少なくとも、現時点では、西村さんがご指摘なされているように各postcode は10キャラクターしか用意してないので、全角文字で入力されると、お尻が 切れます。(実際に切れました) 〒100−0000 といった形式で入力されてしまうことも考えると16キャラクターではちょっ と足りず、20キャラクターくらいを用意しておけば良いと思います。(とい うか、varchar型については、あえてデータを打ち切るという目的さえなけれ ば、無条件で255キャラクター用意しても良いような気もするのですが) 運営しているショップだと、すでにデータが存在しているでしょうから、 mysqlコマンドラインから入って、 alter table address_book modify entry_postcode varchar(20) NOT NULL default ''; alter table orders modify customers_postcode varchar(20) NOT NULL default ''; alter table orders modify delivery_postcode varchar(20) NOT NULL default ''; とやるのがベストでしょうか。 mysqlコマンドラインが使えないのであれば、一度、バックアップという形で データをダンプして、ダンプしたファイルの該当部分を書き換え、リストア するしかないでしょう。この場合、お客さんが来ないタイミングを見図る必 要があります。 -- 株式会社PEAK ネットワーク技術担当 後藤 <gij****@peak*****>