Guest User

Untitled

a guest
Nov 1st, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. ■DB情報
  2. title,latitude,longitude
  3. タイトルA,111111,222222
  4. タイトルB,333333,444444
  5. タイトルC,555555,666666
  6. タイトルD,777777,888888
  7.  
  8. ※取得したGPSデータは「333334」「444445」としまして、近似値である
  9. 「333333」「444444」の「タイトルB」のみが結果で帰ってくるのが理想です。
  10.  
  11. <?php
  12. //DatabaseClassを読み込み
  13. include_once "DatabaseClass.php";
  14.  
  15. //テーブル名が選択されているかどうか確認
  16. if($_POST["table_name"] )
  17. {
  18. //DB名設定
  19. $db_name = "test";
  20.  
  21. $database = new Database($db_name);
  22. $table_name = $_POST["table_name"];
  23. // 取得したデータが緯度「latitude」が333334、経度「longitude」444445と設定しています。
  24. // 比較後は、近似値の「title」のみを返す
  25. $sql = ("SELECT *, sqrt(power(abs(333334 - latitude),2) + power(abs(444445 - longitude),2))
  26. FROM {$table_name}
  27. order by title
  28. LIMIT 1
  29. ");
  30.  
  31. //クエリ送信
  32. $query = pg_query($sql);
  33. $json= array();
  34.  
  35. //テーブル名に「m_test」という文字列が入っているテーブルのデータをJSON形式で書き出し
  36. if(strstr($table_name, 'm_test')){
  37. while ($row = $database->jsonparse($query)) {
  38. $json[] = array(
  39.  
  40. 'title' => $row->title
  41. ,
  42.  
  43. );
  44. }
  45. }
  46.  
  47. //JSON形式で出力
  48. header("Content-Type: application/json; charset=utf-8");
  49. echo json_encode($json);
  50.  
  51. //DBを閉じる
  52. $database->close();
  53.  
  54. }
  55. ?>
  56.  
  57. //内部文字コードを変更
  58. mb_language("uni");
  59. mb_internal_encoding("utf-8");
  60. mb_http_input("auto");
  61. mb_http_output("utf-8");
  62.  
  63. class Database{
  64.  
  65. var $dbServer;
  66. var $dbName;
  67. var $dbUser;
  68. var $dbPass;
  69. var $link;
  70. var $db;
  71. var $query;
  72.  
  73. //DB接続
  74. function __construct($db_name)
  75. {
  76. //DBの情報
  77. $this->dbServer="localhost";
  78. $this->dbName=$db_name;
  79. $this->dbUser="XXXXXX";
  80. $this->dbPass="XXXXXX";
  81.  
  82. //ポスグレに接続
  83. $this->link=pg_connect("host={$this->dbServer} dbname={$this->dbName} user={$this->dbUser} password={$this->dbPass}")
  84. or
  85. die(exit);
  86.  
  87.  
  88. //UTF-8の文字コードに変更
  89. $this->query=pg_query($this->link,'SET NAMES utf8');
  90. }
  91.  
  92. //DBを閉じる
  93. public function close()
  94. {
  95. return pg_close($this->link);
  96. }
  97.  
  98. //読み込むテーブルの選択
  99. public function select($query)
  100. {
  101. $result=pg_query($query);
  102. $row=array();
  103. $row=pg_fetch_assoc($result);
  104. return $row;
  105. }
  106.  
  107. //指定したクエリの実行
  108. public function query($query)
  109. {
  110. return pg_query($this->link,$query);
  111. }
  112.  
  113. //JSON形式に変換用の出力
  114. public function jsonparse($query)
  115. {
  116. $row = pg_fetch_object($query);
  117. return $row;
  118. }
  119. }
  120. ?>
  121.  
  122. PHP Warning: pg_query(): Query failed: ERROR: syntax error at or near "utf8"
  123. LINE 1: SET NAMES utf8 
  124. in /Applications/MAMP/htdocs/DatabaseClass.php on line 36
Add Comment
Please, Sign In to add comment