Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie w promieniu
crew123
post
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Witam.
Mam bazę z miejsc, w której mam dane dot. położenia geograficznego względem google maps i teraz mam do Was pytanie, jakim sposobem robilibyście wyszukiwanie tych wszystkich miejsc wpisując kod pocztowy i np: szukaj w promieniu 25km? Jakby ktoś znał dobry sposób na to byłbym bardzo wdzięczny (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
crew123
post
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Jak dla mnie wszystko jest ok, zamieszcę tutaj plik na którym pracuje:
  1. <?
  2. include ('../include/config.php');
  3. db_connect();
  4. $ustawienia=mysql_fetch_array(mysql_query("SELECT * FROM config"));
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  8. <head>
  9. <title>Wyszukiwarka - <?php echo $ustawienia['tytul']; ?></title>
  10. <?php include('../theme/head.php') ?>
  11. </head>
  12. <body>
  13. <div id="content">
  14. <?php
  15. // pobieramy dane usera
  16. $user_data = get_user_data();
  17.  
  18. <div id="header">
  19. <div id="hdr_lewa">
  20. <div class="logo"></div>
  21. </div>
  22. <div id="hdr_prawa">';
  23. include('../theme/login.php');
  24. echo '
  25. </div>
  26. </div>';
  27. include('../theme/menu.php');
  28. <div id="wrapper">
  29. <table cellpadding="0" cellspacing="0" width="1002">
  30. <tr>
  31. <td valign="top" width="234" style="background:#f6f6f6;">';
  32. include('../theme/lewa.php');
  33. echo '</td><td valign="top" width="534">';
  34. echo '<div class="naglowek">Wyszukiwarka</div>';
  35. include('pagination.php');
  36. $limit = $ustawienia['ogloszen_na_strone']; // Ilość pozycji na stronę...
  37. $pg = $_GET['page']; // Pobranie do zmiennej numeru strony...
  38. if(!isset($pg)) {
  39. $l1 = 0;
  40. $l2 = $limit; //Jeśli zmienna $pg ma pustą zawartość nastawiamy granice od 0 do wartości $limit
  41. } else {
  42. $l1 = $limit * $pg - $limit; //W przeciwnym wypadku oblicz dolną granicę...
  43. $l2 = $limit; //Oraz górną granicę...
  44. }
  45. $kat = $_POST['kategoria'];
  46. $frazy = $_POST['slowa_szukaj'];
  47. $promien = $_POST['promien_szukaj'];
  48. $kodpoczt = $_POST['miasto_szukaj'];
  49. if (!empty($kat))
  50. $wh[] = "id_cat = '$kat'";
  51.  
  52. if (!empty($frazy))
  53. $wh[] = "tytul LIKE '%$frazy%'";
  54.  
  55. if (!empty($wh))
  56. $where = 'WHERE '.implode(' AND ', $wh);
  57. else
  58. $where = '';
  59.  
  60. $qqq = mysql_query("SELECT * FROM kody_new WHERE kod='$kodpoczt'");
  61. $dane = mysql_fetch_array($qqq);
  62.  
  63. $sql = mysql_query("SELECT *,
  64. ( 6371 * acos( cos( radians({$dane['lat']}) ) * cos( radians(o.lat ) ) * cos( radians(o.lng ) - radians({$dane['lng']}) ) + sin( radians({$dane['lat']}) ) * sin( radians(o.lat ) ) ) ) AS distance
  65.  
  66. FROM ogloszenia o
  67. $where
  68. GROUP BY o.id
  69. HAVING distance<$promien
  70. ORDER BY distance LIMIT $l1, $l2");
  71. while($row = mysql_fetch_array($sql)){
  72. $zebra++;
  73. $reszta = $zebra % 2;
  74. if($reszta === 0) {
  75. $kolor = '#f6f6f6; border-bottom:1px solid #fff;';
  76. }
  77. else {
  78. $kolor = '#e9e9e9; border-top:1px solid #dedede; border-bottom:1px solid #fff;';
  79. }
  80. echo '<table cellpadding="0" cellspacing="0" class="oglo_row" style="background:'.$kolor.'">
  81. <tr>
  82. <td valign="middle" width="80">
  83. ';
  84. $id22 = (int)$row['id'];
  85. $result12 = mysql_query("SELECT * FROM zdjecia WHERE id_oglo='$id22'");
  86. $img = mysql_fetch_array($result12);
  87. if(count($img['id']) == 0) {
  88. echo '<img src="theme/images/brak.png" width="80" height="65" style="vertical-align:middle;"> ';
  89. } else {
  90. echo '<img src="'.$img['img'].'" width="80" height="65" style="vertical-align:middle;">';
  91. }
  92. echo '</td><td valign="middle" width="230">';
  93. echo '<a href="ogloszenie-'.$row['id'].'-'.przyjazny_string($row['tytul']).'.html">'.stripslashes($row['tytul']).'</a><br />';
  94. $idwoj = $row['id_woj'];
  95. $wojq = mysql_query("SELECT * FROM wojewodztwa WHERE id='$idwoj'");
  96. $woj = mysql_fetch_array($wojq);
  97. echo '<div style="margin-top:5px;">'.$row['miasto'].' / '.$woj['nazwa'].'</div>';
  98. echo '</td>';
  99. $idk = (int)$row['id_cat'];
  100. $result2 = mysql_query("SELECT * FROM ogloszenia_categories WHERE id='$idk'");
  101. $row2 = mysql_fetch_array($result2);
  102. echo '<td valign="middle" width="120">';
  103. echo '<div style="margin-top:6px;">'.$row2['tytul'].'</div>';
  104. echo '</td><td valign="middle">';
  105. $q = mysql_query("SELECT * FROM dodatkowo WHERE id_oglo='$id22' LIMIT 3");
  106. echo '<table cellpadding="0" cellspacing="5" style="margin-top:6px; margin-left:20px;">';
  107. echo '<tr>';
  108. echo '<td align="left" style="color:#005c9f; font-size:11px;">';
  109. while($q2 = mysql_fetch_array($q)) {
  110. echo '&raquo; '.$q2['id_oglo_opcje'].'<br>';
  111. }
  112.  
  113. echo '</td></tr></table>';
  114. echo '</td><td valign="middle" align="right" width="18">';
  115. echo '<a href="ogloszenie-'.$row['id'].'-'.$row['url'].'-'.przyjazny_string($row['tytul']).'.html"><img src="theme/images/arrow.png" style="border:0;"></a>';
  116. echo '</td></tr></table>';
  117.  
  118. }
  119. list($records)=mysql_fetch_row(mysql_query("SELECT count(*) ogloszenia"));
  120.  
  121. if($records >= 1) {
  122.  
  123. $pag['posts'] = $records; //Ilość rekordów...
  124. $pag['limit'] = $limit; //Rekordów na stronę...
  125. $pag['page'] = $_GET['page']; //Aktualna strona...
  126. $pag['separator'] = '?'; //Separatror - ? lub & więcej o tym w dalszej części.
  127. $pag['url_class'] = 'pages'; //Klasa linków paginowania w CSS...
  128. $pag['a_pg_class'] = 'active_pg'; //Klasa numeru aktywnej strony.
  129. $pag['page_label'] = 'Strona:'; //Etykieta z napisem ''Strona: x/x'' obok paginacji.
  130.  
  131. ECHO print_pagination($pag);
  132. }
  133.  
  134. echo '</td>';
  135. echo '</tr></table></div>';
  136. include('../theme/stopka.php');
  137.  
  138. ?>
  139. </div>
  140. </div>
  141. <? db_close(); ?>
  142. </body>
  143. </html>


Dopiero po wpisaniu kod: 00-001 prmien np:200 wyskakują rekordy

Ten post edytował crew123 1.11.2012, 22:12:55
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 07:25