スレッド表示 | フラット表示〕 全トピック 920 件中 669 番目 次≫ ≪前

久しぶりに質問させてください。

created: 2004-02-29 04:42 | modified: 2004-03-07 03:12 | reply: 17

[1332] 久しぶりに質問させてください。

user: ジョイ | created: 2004-02-29 04:42
以前お世話になりましたジョイです。
そのせつはありがとうございました。

本題ですが以前からMySQL+PHP+Flashの組み合わせでデータベースをなんとかものにしたいと思っていたのですが、今回ほんとに簡単な検索(郵便番号検索)に取り組んだのですが・・・
サーバ、クライアント共に文字コードをSJISとして (DOS上で status で確認しました)あるのですが 以下のPHPプログラムを走らせると ASCIIを返してくるんです
これでは 郵便番号(アンク)のみを返されて
漢字を返してくれません、(var_dumpmb_detect_encoding(tyouiki,'auto')にて確認しました);)なぜこうなったのか
解りません今回も何卒ご教授下さいお願いします。

<?php
mysql_connect("localhost", "ABC", "ABCpass");
mysql_select_db("zipdb");

$zip = "501-0435";

$result = mysql_query("select * from zipaddrs where zipcode='$zip'");
//while ($row = mysql_fetch_assoc($result)) {
//$row = mysql_fetch_object($result);
$row = mysql_fetch_object($result);
echo $row->zipcode;
echo $row->todouhuken;
echo $row->sikutyouson;
echo $row->tyouiki;

var_dump(mb_detect_encoding(tyouiki,'auto'));


//}
mysql_free_result($result);
?>
reply: 1333 返信 編集 削除

[1333] $row->tyouiki

user: ゆうじ | created: 2004-02-29 19:49
こんばんは。お久しぶりです。

> var_dump(mb_detect_encoding(tyouiki,'auto'));

ここのところ、以下が正しいのではありませんか。

var_dump(mb_detect_encoding($row->tyouiki,'auto'));
Parent: 1332  reply: 1334 返信 編集 削除

[1334] ありがとうございます。

user: ジョイ | created: 2004-02-29 22:02
ゆうじさん できました。
ありがとうございます。

但し肝心な検索データが郵便番号しか表示されません(phpを動かして)こんな簡単なプログラムなのになんで出来ないのかへこんでしまいます ゆうじさんどこが悪いんでしょうか?
検索プログラムが動いてくれると一歩すすめるのですが・・・(ふ?)
よろしくおねがいします。
Parent: 1333  reply: 1336 返信 編集 削除

[1336] データベース側では

user: ゆうじ | created: 2004-03-02 22:21
お返事遅くなりました。
PHPのコードは良いと思います。
データベース側に問題があるのではないでしょうか。

先ずはデータベースに正しくデータが登録されてるか、
コマンドラインから確かめるところからですね。
Parent: 1334  reply: 1338 返信 編集 削除

[1338] 郵便番号のテキストをインポートしたんです。

user: ジョイ | created: 2004-03-03 00:11
DBにインポートしたデータは正しく表示されるんですが検索をかけるとアンクしかでてこないんです。
データベース側を調べるにはどのようにしたらいいのでしょうか? 
どれだけstatusで見てもサーバー、クライアント共にsjisなんですが・・・
Parent: 1336  reply: 1340 返信 編集 削除

[1340] Re.郵便番号のテキストをインポートしたんです。

user: ゆうじ | created: 2004-03-03 14:44
> DBにインポートしたデータは正しく表示されるんですが

これはどのようにして確かめられました。
(コマンドラインからとかphpMyAdminからとか)



> アンクしかでてこない

これが気になりますが、
インポートしたデータというのは、
郵便局のページからダウンロードしたものでしょうか。

そうならば、
読み仮名の部分は JIS、漢字の部分は、SJIS、と変則的になってますが、
インポート時に考慮されてますか。
Parent: 1338  reply: 1342 返信 編集 削除

[1342] 確認は・・

user: ジョイ | created: 2004-03-03 16:43
DOSコマンドで検索して正しく表示されたのと、かねやんMySQLAdmin(SJIS版)を使用して確認しました。

郵便局からではなく書籍にあったEUCのテキストデータをSJISに変換してインポートしました、ワードパッドで開いて正しく表示されたのでOKだと思いました。
Parent: 1340  reply: 1344 返信 編集 削除

[1344] 環境

user: ゆうじ | created: 2004-03-03 23:05
DOSコマンドで表示されるならば、
きちんと登録されてますね。
ここまでに挙げていただいた情報では、
原因は思いあたりません。

残るは環境でしょうか。
Parent: 1342  reply: 1345 返信 編集 削除

[1345] 環境ですか・・・

user: ジョイ | created: 2004-03-04 02:09
そうですか・・・
たとえばphp.iniの設定とかですか?
Parent: 1344  reply: 1346 返信 編集 削除

[1346] バージョンなど

user: ゆうじ | created: 2004-03-04 02:58
> たとえばphp.iniの設定とかですか?

いえいえ。はじめにうかがっておくべきことでしたが、
OS、WEBサーバー、PHP、MySQL、ブラウザなど、
関連のあるアプリケーション名とバージョンのことです。

バグのあるバージョンや、
組み合わせによる不具合が
あるのではないかと思いまして。


それと、
郵便番号しか表示されないとのことでしたが、
ブラウザに出力されたページのソースも、
郵便番号以外表示されていませんでしたか。
Parent: 1345  reply: 1349 返信 編集 削除

[1349] 失礼しました。

user: ジョイ | created: 2004-03-05 01:38
こちらこそ大変失礼しました、最初にお知らせするべきでした。

現在の環境は以下です。
WinMySQLadmin 1.4
phpは4.3.1.1
サーバー AN HTTPDDaemon 1.42k

これでやってます。
Parent: 1346  reply: 1354 返信 編集 削除

[1354] すみません。

user: ゆうじ | created: 2004-03-06 02:34
ちょっと調べてみましたが、
それらしき問題を見つけることが出来ませんでした。
力になれずにすみません。


あとは、ウェブザーバやMySQLのエラーログを読むなどして、
原因を探るしかないでしょうね。
(ちなみに私はエラーログを見てもわからないです)


ちょっと前にも書きましたが、
PHPがブラウザに出力したページのソースでも、
郵便番号だけしか表示されていませんでしたか。
Parent: 1349  reply: 1359 返信 編集 削除

[1359] 書き忘れましたw

user: ジョイ | created: 2004-03-06 23:25
そうなんですいままで質問していたのはphpを動かしてブラウザ表示したもののことで、それが出来てからFlashに表示させようとおもってました。
Parent: 1354  reply: 1361 1362 返信 編集 削除

[1361] ページのソース

user: ゆうじ | created: 2004-03-07 00:00
その、ブラウザに表示されたページのソースを確認してみました?
Parent: 1359  reply: 1363 返信 編集 削除

[1363] ページのソース

user: ジョイ | created: 2004-03-07 00:27
メニューの<表示><ソース>でみたところ

郵便番号 :064-0941都道府県 : k C 校垓萃・次 y 翊・茵 P ustring(4) "SJIS"

でした。
Parent: 1361  返信 編集 削除

[1362] 追伸

user: ジョイ | created: 2004-03-07 00:24
下のphpをEUCで書いて動かすとブラウザに下記のように表示されます。

<?php

//header('Content-Type: text/html; charset=euc-jp');

mysql_connect("localhost", "iwao", "iwaopass");
mysql_select_db("zipdb");

$zip = "064-0941";

$result = mysql_query("select * from zipaddrs where zipcode = '$zip'");
//while ($row = mysql_fetch_assoc($result)) {
//$row = mysql_fetch_object($result);
$row = mysql_fetch_object($result);
echo "郵便番号 :" . $row->zipcode;
echo "都道府県 :" . $row->todouhuken;
echo "市区町村 :" . $row->sikutyouson;
echo "町域 :" . $row->tyouiki;

var_dump(mb_detect_encoding($row->tyouiki, 'auto'));

//}
mysql_free_result($result);
?>


<ブラウザ表示>

郵便番号 :064-0941都道府県 :kC校垓萃・次y翊・茵Pustring(4) "SJIS"

なんか変なんですよ。
Parent: 1359  reply: 1364 返信 編集 削除

[1364] 勘違いでした

user: ゆうじ | created: 2004-03-07 00:59
私、MySQLから、
zipcode以外のデータが獲得できないので、
それが問題になっているのだと勘違いしてました。

問題は文字化けで、
その解決法が必要だったのですね。
えらい勘違い、大変失礼しました。


PHPのソースは、EUC-JP、
MySQLのデータは、SJIS、
これでは化けて当然なのでは。

マルチバイトを含む変数を、mb_convert_encoding で、
SJIS→EUC-JPの文字コード変換を行なってみてはいかがでしょう。

echo "郵便番号 :" . $row->zipcode;
echo "都道府県 :" . mb_convert_encoding($row->todouhuken, 'EUC-JP', 'SJIS');
echo "市区町村 :" . mb_convert_encoding($row->sikutyouson, 'EUC-JP', 'SJIS');
echo "町域 :" . mb_convert_encoding($row->tyouiki, 'EUC-JP', 'SJIS');
Parent: 1362  reply: 1367 返信 編集 削除

[1367] ありがとうございます。

user: ジョイ | created: 2004-03-07 03:12
とうとう 表示してくれましたほんとにありがとうございます。
こんなことだったんですね(しっかり覚えておきます)

ところでこの結果をFlashに渡すには
mb_convert_encoding($row->todouhuken, 'UTF-8', 'SJIS'); のようにすればよいのですね。
Parent: 1364  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 669 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑