データベースの内容をphp出力し、ブラウザで表示するプログラムを作ってます - PHPプロ!Q&A掲示板
3439
- 0P
- 0P
データベースの内容をphp出力し、ブラウザで表示するプログラムを作ってます
質問日時 / 2011年10月21日 13:03 (最終編集:10月21日 16:53) 回答数 / 10件
Questioner: secretbase
Tweet
しかし、xmlの読み込みには成功するのですが、タグの読み込みが成功していないのかマーカーを設置することができません。また、一度xmlファイルに出力し、そのxmlファイルを直接読み込んだ場合はマーカーの設置に成功しています。ブラウザはfirefoxを用いてローカルで動作させています(ローカルだとfirefoxしかうまくいかないようなので)。文字コードのせいかと疑って色々試してみたのですがやはりうまくいきません。散々調べたのですが原因が分からないのでご意見いただけると幸いです。
以下プログラム
phpプログラム↓
- $dom = new DomDocument('1.0'); // DOMを作成
- $dom->encoding = "UTF-8"; // 文字コードをUTF-8に
- $dom->formatOutput = true; // 出力XMLを整形(改行,タブ)する
- $link = mysql_connect('localhost', 'root', '***');
- if (!$link) {
- die('接続失敗です。'.mysql_error());
- }
- $db_selected = mysql_select_db('twitter', $link);
- if (!$db_selected){
- die('データベース選択失敗です。'.mysql_error());
- }
- mysql_set_charset('sjis');
- $result = mysql_query('SELECT status,X(location) as lng,Y(location) as lat FROM newstatusstream where 1');
- if (!$result) {
- die('クエリーが失敗しました。'.mysql_error());
- }
- $Markers = $dom->appendChild($dom->createElement('Markers'));
- header("Content-Type: text/xml; charset=UTF-8");
- while ($row = mysql_fetch_assoc($result)) {
- $marker= $Markers->appendChild($dom->createElement('marker'));
- $lat= $marker->appendChild($dom->createElement('lat'));
- $lat->appendChild($dom->createTextNode(mb_convert_encoding($row["lat"],"UTF-8","Shift-Jis")));
- $lng= $marker->appendChild($dom->createElement('lng'));
- $lng->appendChild($dom->createTextNode(mb_convert_encoding($row["lng"],"UTF-8","Shift-Jis")));
- $status= $marker->appendChild($dom->createElement('status'));
- $status->appendChild($dom->createTextNode(mb_convert_encoding($row["status"],"UTF-8","Shift-Jis")));
- }
- echo $xml =$dom->saveXML();
- $close_flag = mysql_close($link);
出力するxmlの内容↓(一度xmlファイルで出力し、内容が正しいことを確認済み)
<Markers>
<marker>
<lat>35.90713566</lat>
<lng>139.62467867</lng>
<status>今日は家でゆっくりしようとしたのに彼女に捕まった(´Д` )もうやだ</status>
</marker>
<marker>
<lat>35.93664</lat>
<lng>139.7752</lng>
<status>特別支援学校での実習一日目終了。こんなに疲れたのは久々だが充足感で一杯。</status>
</marker>
<marker>
<lat>35.65995282</lat>
<lng>139.66742724</lng>
<status>打ち合わせ (@ 黒川食堂) http://t.co/S8drSLG</status>
</marker>
</Markers>
jqueryを用いてGoogleMapに表示するJavaScriptプログラム一部抜粋↓
- function setPointMarker(){
- //XML取得
- $.ajax({
- url: './mysql_output.php',
- type: 'GET',
- dataType: 'xml',
- timeout: 1000,
- error: function(){
- alert("情報の読み込みに失敗");
- },
- success: function(xml){
- alert("読み込み成功");
- //帰ってきた地点の数だけループ
- $(xml).find("marker").each(function(){
- var Lat = $("lat",this).text();
- var Lng = $("lng",this).text();
- var Status = $("status",this).text();
- //マーカーをセット
- MarkerSet(Lat,Lng,Status);
- });
- }
- });
- }
xml形式で出力した場合、読み込み成功のアラートは表示されるのですが、その先が進みません。ちなみにJavaSript側の文字コードはUTF-8になってます。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。