Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Odnajdywanie "najbliższego" rekodru
Forum PHP.pl > Forum > Przedszkole
MatriXirtaM
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?
stefik4
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.
thek
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ą.
MatriXirtaM
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.