Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Odnajdywanie "najbliższego" rekodru
MatriXirtaM
post 29.12.2010, 13:23:46
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.12.2010

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


Witam,

Mam problem: posiadam w bazie danych tabele punkt z 3 kolumnami => numer, dlugosc, szerokosc ; posiada także skrypt php, dzięki któremu użytkownik wpisuje z ręki do zmiennych swoje wartości: $dlugosc i $szerokość ;

A teraz chciałbym, żeby moja baza danych zwróciła numer, który ma najbardziej zbliżoną dlugosc i szerokosc do tych, które wpisuje użytkownik.

Ktoś ma pomysł jak ułożyć takie zapytanie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
stefik4
post 29.12.2010, 14:47:25
Post #2





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


MYSQL: LIKE

  1. <?
  2. $wykonaj = mysql_query("SELECT `id` FROM `punkt` WHERE `dlugosc` LIKE '%".$_POST['dlugosc']."%' AND `szerokosc` LIKE '%".$_POST['szerokosc']."%' LIMIT 1");
  3. ?>


W zapytaniu możesz zastosować OR lub AND, zależy które chcesz.

Ten post edytował stefik4 29.12.2010, 15:01:52
Go to the top of the page
+Quote Post
thek
post 29.12.2010, 15:33:04
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ta... I dostaniesz głupoty, a w 99.99% brak wyniku biggrin.gif
Weź sobie policz różnicę pomiędzy wpisanymi przez usera i tymi w bazie. Przykładowo policz sobie dla wszystkich wyników w bazie takim czymś

  1. SELECT *, abs($szerokosc_usera-szerokosc)+abs($dlugosc_usera-dlugosc) AS minimum FROM punkty ORDER BY minimum ASC LIMIT 1
, no chyba, że chcesz kilka wyników, to daj większy limit smile.gif

EDIT: to Ci powie wszystko, włącznie z obliczoną różnicą.
Powód edycji: [thek]: ok... zamiast wskazówki dałem rozwiązanie, bo byś się zamotał ;)


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
MatriXirtaM
post 29.12.2010, 16:48:25
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.12.2010

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


Cytat(thek @ 29.12.2010, 15:33:04 ) *
Ta... I dostaniesz głupoty, a w 99.99% brak wyniku biggrin.gif
Weź sobie policz różnicę pomiędzy wpisanymi przez usera i tymi w bazie. Przykładowo policz sobie dla wszystkich wyników w bazie takim czymś

  1. SELECT *, abs($szerokosc_usera-szerokosc)+abs($dlugosc_usera-dlugosc) AS minimum FROM punkty ORDER BY minimum ASC LIMIT 1
, no chyba, że chcesz kilka wyników, to daj większy limit smile.gif

EDIT: to Ci powie wszystko, włącznie z obliczoną różnicą.


Wielkie dzięki - pomogło smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:30