Форумы портала PHP.SU » PHP » Программирование на PHP » PHP MySQL поиск от и до

Страниц (1): [1]
 

1. Ololoshka - 16 Марта, 2018 - 09:40:41 - перейти к сообщению
Здравствуйте!
Есть таблица с GPS адресами, необходимо выполнить поиск с определенной широты и долготы до другой широты и долготы.
Например вот это я вывел одно только значение:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `gpstable` WHERE shirota  IN (45.092194) AND dolgota IN (38.974778);

или так

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `gpstable` WHERE shirota  IN ('.$gps1.') AND dolgota IN ('.$gps2.');


а как вывести все значения с этих координат 45.092194 38.974778 по эти 45.102194 38.988778
?
Спасибо
2. Мелкий - 16 Марта, 2018 - 10:43:37 - перейти к сообщению
Если нужны находящиеся в квадрате описанном вершинами диагонали - то пара between.
3. Ololoshka - 16 Марта, 2018 - 12:37:13 - перейти к сообщению
всё, разобрался, надо использовать <=, => для сравнения значений ячеек.

Тема закрыта)
4. dexter3452 - 20 Марта, 2018 - 11:57:18 - перейти к сообщению
При сортировке товаров по цене на OpenCart 1.5.4.1, если выбрать сортировку "Сначала дешевые", то вывод товара происходит без учета новых цен, только со старыми ценами. Кто знает как исправить этот вопрос? [PHP][/PHP]
5. andrewkard - 20 Марта, 2018 - 12:21:09 - перейти к сообщению
А что это за цифры? В модели /catalog/model/catalog/product.p hp в методе getProducts посмотрите на реализацию сортировки:

PHP:
скопировать код в буфер обмена
  1.  
  2.                 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
  3.                         if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
  4.                                 $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
  5.                         } elseif ($data['sort'] == 'p.price') {
  6.                                 $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
  7.                         } else {
  8.                                 $sql .= " ORDER BY " . $data['sort'];
  9.                         }
  10.                 } else {
  11.                         $sql .= " ORDER BY p.sort_order";
  12.                 }
  13.  
6. Ololoshka - 23 Марта, 2018 - 09:01:16 - перейти к сообщению
Добрый день. Подскажите еще пожалуйста, вывелись у меня координаты, от текущих координат

PHP:
скопировать код в буфер обмена
  1. select * from `gpstable` where shirota<='$shirv500' AND shirota>='$shirn500' AND dolgota<='$dolgp500' and dolgota >='$dolgl500'


а как можно получить id одинаковых координат, например чтобы отобразить не таким полным списком:

id name shirota dolgota
3 krd4444 45.096944 38.981667
6 krd4341 45.096944 38.981667
7 krd4342 45.096944 38.981667
319 krd4342 45.1003 38.9814

А например вот так:
3,6,7 - krd4444, krd4341,krd4342 - 45.096944 38.981667
319 - krd4342 - 45.1003 38.9814

Спасибо
7. andrewkard - 23 Марта, 2018 - 12:22:17 - перейти к сообщению
Проще всего в цикле пройтись и сгруппировать
8. Ololoshka - 23 Марта, 2018 - 14:03:17 - перейти к сообщению
andrewkard пишет:
Проще всего в цикле пройтись и сгрупировать

у меня в цикле вывод, только не пойму как правильно сгруппировать?
PHP:
скопировать код в буфер обмена
  1. $searchbrowse1=mysql_query("select * from `gpstable` where shirota<='$shirv500' AND shirota>='$shirn500' AND dolgota<='$dolgp500' and dolgota >='$dolgl500'") or die ("<br><b><font color=white><marquee bgcolor=Red behavior=slide direction=left scrollamount=100>Ошибка! Не возможно открыть таблицу</marquee></font></b>");
  2. if ($sb = mysql_fetch_array($searchbrowse1))
  3. {
  4. echo '<table border=0>';
  5. printf ("<tr>
  6.                
  7.                 <td bgcolor=Grey  align=center><font color=white>id</font>
  8.                 <td bgcolor=Grey  align=center><font color=white>Название</font>
  9.                 <td bgcolor=Grey  align=center><font color=white>Широта</font>
  10.                 <td bgcolor=Grey align=center><font color=white>Долгота</font>
  11.                
  12.                
  13.                 </tr>");
  14. do
  15. {
  16.        
  17.  
  18.         printf ('<tr>
  19.        
  20.         <form name="form3" action="" method="get">
  21.         <input type="hidden"name="searchid"  value='.$sb['id'].'>
  22.        
  23.         <td style="background-color: '.$color.'; color: '.$colort.'" align=center> '.$sb['id'].'
  24.         <td style="background-color: '.$color.'; color: '.$colort.'" align=center> '.$sb['name'].'
  25.         <td style="background-color: '.$color.'; color: '.$colort.'" align=center> '.$sb['shirota'].'
  26.         <td style="background-color: '.$color.'; color: '.$colort.'" align=center> '.$sb['dolgota'].'
  27.        
  28.        
  29.    </tr>');
  30. }
  31. while ($sb = mysql_fetch_array ($searchbrowse1));
9. andrewkard - 25 Марта, 2018 - 07:14:33 - перейти к сообщению
На самом деле так делать не нужно, посмотрите как это делается в MVC: контроллер обрабатывает действие, запрашивает данные у модели, и передает их в представление, а у Вас тут все в куче.
По поводу группировки:
проходитесь в цикле по данным, и создаете новый массив, в котором ключ будет, например md5 от 45.096944 38.981667, а уже потом выводите

 

Powered by ExBB FM 1.0 RC1