SQLServer2005のデータでXML作成。 - PHPプロ!Q&A掲示板

2591

  • 0P

SQLServer2005のデータでXML作成。

質問日時 / 2010年3月5日 17:53    回答数 / 2件

Questioner:  sikuminalex  このエントリーをはてなブックマークに追加 

キーワード / SQLServer2005EXPRESS    エンコード    ドライバ   

[ 環境 ]
OS:WindowsXP Pro
PHP:5.3.1
Apache:2.2.14
DBServer:SQLServer2005 EXPRESS

[ 質問 ]
phpより、DBにアクセスして結果をXMLで取得したいのですが
DBサーバ側のエンコードがSHIFT_JISという事で思った様にい
きません。対象がMSSQLServerの場合、どの様に対処するのが
スマートでしょうか。


以下のソースコードを実行すると、画面上には表示されませんでした。
が、IE上から”ソースの表示”を行うと取得はできていました。
タグの中には入っていない為表示が出来ていない模様です。

ご指摘、アドバイスなど、よろしくお願いいたします。

※ まだ、プログラム経験自体が浅いのでソース丸ごと掲載いたします。

[実際に使用したソース]
  1. <?php
  2. // SQLServerとの接続
  3. require("connect-sqlserver.php")
  4.  
  5. // XML 生成
  6. $dom = new DOMDocument("1.0");
  7. $node = $dom->createElement("markers");
  8. $parnode = $dom->appendChild($node);
  9.  
  10. // MSSQLSERVR への接続セット
  11. $db = mssql_connect($server$userid$passwd);
  12. mssql_select_db($dbName$db);
  13.  
  14. // [SYSW_LEVEL]テーブルからフィールド情報取得
  15. $query = "SELECT * FROM SYSW_LEVEL";
  16. $result = mssql_query($query$db);
  17. header("Content-type: text/xml");
  18.  
  19. //フィールドを動的に取得する部分は後で作成
  20. // XMLへフィールドの値を渡す
  21. while ($row = mssql_fetch_assoc($result))
  22. {
  23. $node = $dom->createElement("marker");
  24. $newnode = $parnode->appendChild($node);
  25. $newnode->setAttribute("level"$row['LVL_LEVEL']);
  26. $newnode->setAttribute("level_name"$row['LVL_LEVELNAME']);
  27. }
  28. /* 
  29. * フィールドはあとで動的に取得
  30. */
  31. $dom->encoding="UTF-8";
  32. echo $dom->saveXML();
  33. ?>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>DBサーバ側のエンコードがSHIFT_JISという事で思った
 ┗A01-1sikuminalexご連絡、ありがとうございます。 頂いたご意見を元に

回答一覧

並び替え:

A01
answerershimix [3月5日 17:58]

>DBサーバ側のエンコードがSHIFT_JISという事で思った様にいきません。

文字コード『だけ』の問題であれば、mb_convert_encodingで(内部エンコーディングに)変換して使えばいいだけだと思います。それでもダメだったのでしょうか?

$newnode->setAttribute("level_name", $row['LVL_LEVELNAME']);
  ↓
$newnode->setAttribute("level_name", mb_convert_encoding($row['LVL_LEVELNAME'], 'utf-8', 'sjis'));

 ※mb_internal_encodingがutf-8として

この意見に回答する

ツリーへ TOPへ

A01-1
replyersikuminalex [3月5日 18:44]

ご連絡、ありがとうございます。
頂いたご意見を元に調整したところ、無事に表示が出来る様になりました。

お恥ずかしい話ですが、mb_convert_encoding()というのは見掛けており
ましたが使い方(所)が分りませんでした。

ありがとうございます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)