質問の背景は下記でのsprintf関数での%Sについてです。
https://developers.google.com/maps/articles/phps …
上記での流れは、添付画像のように、
・住所を入力することで 緯度経度が算出され、(center.lat() center.lng())
・また、半径('radiusSelect)が選択(この場合は20Km)されることで、
・選択住所(center.lat() center.lng())から選択半径内の登録店舗がgooglemapに表示される。
というものです。
(1)<「phpsqlsearch_genxml.php」に選択値を渡す。>(62行目)
var radius = document.getElementById('radiusSelect').value;
var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
(※ 例えばcenter.lat()を緯度37 center.lng()を経度-122とします)
(2)<「phpsqlsearch_genxml.php」において、該当する店舗を見つけ出す。>
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];
・・・・・・
// Search the rows in the markers table
$query = sprintf("SELECT address, name, lat, lng, ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 200",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
$result = mysql_query($query);
(※ ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat )は中心地からの半径を求める公式)
上記(2)で書式指定(string)の%Sが使用されていますが、そこには下記数値文字が入ります。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 20
同じ%Sに対してそれぞれ、37・-122・20の異なった数値文字が対応される仕組みが分かりません。
ご教示お願いいたします。
No.1ベストアンサー
- 回答日時:
関数の動作に疑問を持ったならば、まずマニュアルを読みましょう。
http://www.php.net/manual/ja/function.sprintf.php
上記を読んでもわからなければどのあたりがわからないかを補足願います。
(以下、独り言)
しかし、大本の printf() の記述がスカスカで、そっちよりもこっちの記述が充実してるのはどういう事なんだろう?
この回答への補足
hitomuraさん、ありがとうございます。
下記見させていただきました。
http://www.php.net/manual/ja/function.sprintf.php
そうすると、下記にある
$query = sprintf("SELECT address, name, lat, lng, ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 200",
の4つの'%s'は
(1)
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
の4つの置換指示子として、(1)の順番とおりの引数(数値文字)が'%s'に入る。という理解でよろしいのでしょうか。
No.2
- 回答日時:
> そうすると、下記にある
(中略)
> の4つの'%s'は
>
> (1)
> mysql_real_escape_string($center_lat),
> mysql_real_escape_string($center_lng),
> mysql_real_escape_string($center_lat),
> mysql_real_escape_string($radius));
>
> の4つの置換指示子として、(1)の順番とおりの引数(数値文字)が'%s'に入る。という理解でよろしいのでしょうか。
その理解で正しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP+MYSQL IF文の初歩
-
Resource id #3 をフィールドの...
-
select文
-
sqlから多次元配列に要素を格納...
-
すいません。
-
stringaddslashes 半角¥が消える
-
DB(MySQL)から複数行のデータを...
-
データベースから,そのレコー...
-
PHPでCSVをダウンロード/アッ...
-
テーブルのレコード数を取得し...
-
SQLで検索:表示の仕方
-
データベースから多次元連想配...
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
PHPのプルダウンメニューにDBの...
-
MySQLでデータベースにデータin...
-
ヒアドキュメントでSQLを書く事...
-
zend(phpフレームワーク)でトラ...
-
PHPで[]の使い方について
-
dbに登録したデータをphpのプル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql_fetch_objectのエラー
-
phpのエラーについてです
-
Resource id #3 をフィールドの...
-
XAMMPが起動しません。
-
縦に長い<table>でなく横に長い...
-
sqlから多次元配列に要素を格納...
-
ボタンのonclick時における関数...
-
stringaddslashes 半角¥が消える
-
CSVをダウンロードさせた際、CS...
-
MySQLのデータを使ってプルダウ...
-
【PHP】クエリーの実行に失敗し...
-
PHPで絞り込み検索結果の件数を...
-
DB(MySQL)から複数行のデータを...
-
配列に値が入らない
-
住所録を作りたい
-
リストから詳細画面に遷移する...
-
テーブルのレコード数を取得し...
-
子プロセス終了で閉じてしまうm...
-
PHP+mysqlでSQL文に文字数制限...
-
PHPのSQLインジェクションはspr...
おすすめ情報