質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

1回答

1284閲覧

地域検索から該当企業の所在地を地図で表示させてるページがあるのですが、一部ページで同じ企業が2件表示されてしまいます。

KKsall

総合スコア25

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2021/04/20 13:02

編集2021/04/20 13:03

地域検索から該当企業の所在地を地図で表示させてるページがあるのですが、一部ページで同じ企業が2件表示されてしまいます。
例)検索結果xx件
・A社
・B社
・C社
・A社

DBから住所と経度、緯度を取得して、GoogleMapをJSで表示させているのですが、原因がわからず。
アドバイスいただけば幸いです。

※DBには該当企業情報は1件しかないことは確認済み
※2件取得されずに期待通りに表示されるページもあります。

<script type="text/javascript" charset="utf-8"> //<![CDATA[ var sidebar_html = ""; var markers = []; var marker_html = []; var counter = 0; var icon = Array(); function initialize() { var i = 0; <?php while ( $facility = mysql_fetch_array( $result ) ) { ?> if(i == 0){ //GoogleMapの地図を表示する位置(地図の中心点の緯度経度) if(<?=$sm?>==3){ var init_pos = new google.maps.LatLng(<?= $facility['lat'] ?>,<?= $facility['lng'] ?>); var init_zoom = 15; }else{ var init_pos = new google.maps.LatLng(35.653735,139.637003); var init_zoom = 13; } //地図のオプションを設定 var myOptions = { zoom: init_zoom, //拡大の度合い設定 center: init_pos, //地図の中心の緯度経度設定 navigationControl: true, //拡大縮小のナビを表示 mapTypeControl: true, // 地図の種別切り替えを表示 scaleControl: true //縮尺の表示 }; //GoogleMapの地図 var gmap = new google.maps.Map(document.getElementById("map_canvas"),myOptions); } //mapにピンを設定 var point = new google.maps.LatLng(<?= $facility['lat'] ?>,<?= $facility['lng'] ?>); var gmarker = new google.maps.Marker({ position: point, map: icon[i], }); //所在地の一覧を表示する var title_name = "<?= $facility['name'] ?></a> <?= $facility['address'] ?>"; var maphtml = "<div class=\"mapinfo\"><a href=\"shika.php?shika_id=<?= $facility['shika_id'] ?><?= $back ?>\"><?= $facility['name'] ?></a><br /><span style=\"font-size:13px;\">休診日:<?= $facility['holiday'] ?><br />所在地:<?= $facility['address'] ?><br />TEL:<?= $facility['tel'] ?></span><br /><a href=\"shika.php?shika_id=<?= $facility['shika_id'] ?><?= $back ?>\">詳しくはこちら</a></div>"; markers[counter] = gmarker; marker_html[counter] = maphtml; if(i < <?=$num_rows?>){ sidebar_html += '<div class=\"mapside\"><a href=\"javascript:click_sidebar(' + counter + ')\">' + title_name + '</div>'; } counter++; //mapの表示 gmarker.setMap(gmap); i++; <?php } if ( $sm == '3' ) { $sql = "select * from `shika_data` where `chiku_id` = '" . mysql_real_escape_string( $_GET['chiku'] ) . "' and `shika_id` >= 1 order by `cyoume` asc"; $result = mysql_query( $sql ); $num_rows = mysql_num_rows( $result ); while ( $facility = mysql_fetch_array( $result ) ) { ?> //mapにピンを設定 var point = new google.maps.LatLng(<?= $facility['lat'] ?>,<?= $facility['lng'] ?>); var gmarker = new google.maps.Marker({ position: point, map: icon[i], }); //所在地の一覧を表示する var title_name = "<?= $facility['name'] ?></a> <?= $facility['address'] ?>"; var maphtml = "<div class=\"mapinfo\"><a href=\"shika.php?shika_id=<?= $facility['shika_id'] ?><?= $back ?>\"><?= $facility['name'] ?></a><br /><span style=\"font-size:13px;\">休診日:<?= $facility['holiday'] ?><br />所在地:<?= $facility['address'] ?><br />TEL:<?= $facility['tel'] ?></span><br /><a href=\"shika.php?shika_id=<?= $facility['shika_id'] ?><?= $back ?>\">詳しくはこちら</a></div>"; markers[counter] = gmarker; marker_html[counter] = maphtml; if(i < <?=$num_rows?>){ sidebar_html += '<div class=\"mapside\"><a href=\"javascript:click_sidebar(' + counter + ')\">' + title_name + '</div>'; } counter++; //mapの表示 gmarker.setMap(gmap); i++; <?php } } ?> document.getElementById("sidebar_map").innerHTML = sidebar_html; /* alert("お使いのブラウザ設定ではGoogle Mapsを表示できません。<br />Javascriptの設定をお確かめの上、再度ページを表示してください。"); */ } function click_sidebar(idx) { var infoWindow = new google.maps.InfoWindow({ content: marker_html[idx] }); infoWindow.open(marker_html[idx], markers[idx]); } //]]> </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/21 00:22

企業マスターデータは重複がないことは確認済みですか? id違うけど登録情報が同じってことだってありえますので。
KKsall

2021/04/21 01:28

確認済みです。 サイドバー部分だけ重複して表示されてしまう状態です。 mapピン、一覧数は合ってるですが
退会済みユーザー

退会済みユーザー

2021/04/21 01:35

jsコード内にphpコードを混ぜるのをやめて、いっそphpの出力をjsonで受け取って処理する、って変えたらjsのコードの見通しが改善できそう。phpのコードとjsのコードの境目がわかりにくいからデバッグしづらい。
guest

回答1

0

if ( $sm == '3' ) {のあたりを境に2つのブロックがあるようだけど、
どっちでもmarkers[]marker_html[]を作っているよね。
ここにダブりのヒントがあるんじゃないかなと。

仕様がよくわからないし、手元で再現できるわけじゃないから、
そっから先は質問者さんのデバッグ能力次第かな。
webブラウザ上でブレークポイントを張って、jsのステップ実行をしてみるといいかも。

投稿2021/04/21 01:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問