Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zakres miedzy 2 ip w bazie mysq i wybieranie wyniku
Forum PHP.pl > Forum > Bazy danych > MySQL
Therronis
witam

mam taka tabele

id - kluczyk ; )
ip_ - zakres od ktorego dane pastwo posiada ip
_ip - zakres do ktorego dane panstwo posiada ip
symbol - symbol panstwa
name - nazwa panstwa

w tym problem ze nie wiem jak zapytac mysql o wynik, kiedy mam ip np 221.12.14.13, ktory znajduje sie w wierszu powiedzmy id = 35 i jest w zakresie ip_ = "221.0.0.0", _ip = "221.12.191.255".

chce znajac tylko ip uzyskac id wiersza majacego potrzebne mi dane (chodzi o kraj) uzywajac ip_ i _ip... nie wiem jak, prosze o pomoc, jakakolwiek podpowiedz lub rozwiazanie mojego problemu.
Ludvik
Hmmm...nie wiem jak to jest z pulami ip, ale skoro pierwsze 8 bitów będzie tylko się różniło w bazie, to możesz zapisać tylko je. czyli wpis do bazy - pole typu int i zapisujesz np. 221 - tak jak w przykładzie. Potem podany adres ip tylko rozkładasz na kawałki funkcją explode i porównujesz pierwszą część do wpisu w bazie. Wybierasz dane zapytaniem i tyle smile.gif Mam nadzieję, że dobrze cię zrozumiałem.
switch
Jeżeli dla każdego kraju masz inny numer IP to go w ten sposób przypisz w bazie. Wtedy zadasz pytanie:
[sql:1:4c7098e4a4] ("SELECT kraj FROM tabela WHERE id='$wartosc_szukana'");[/sql:1:4c7098e4a4]
Albo :
[sql:1:4c7098e4a4]("SELECT kraj FROM tabela WHERE ip ='$szukana_wartosc' ");[/sql:1:4c7098e4a4]
Jeżeli zależności będziesz miał więcej to je dodaj do pytania stosując AND i zadając kolejną zależność.
Jojo
Możesz skorzystać z funkcji MySQL'a INET_ATON(). Przelicza ona adres IP na liczbę. Zapytanie mogłoby wyglądać tak:
[sql:1:b11d0bc052]SELECT symbol, name FROM tabela WHERE INET_ATON(ip_) <= INET_ATON( $ip ) AND INET_ATON(_ip) >= INET_ATON( $ip )[/sql:1:b11d0bc052]
(nie dam głowy, że od razu zadziała, bo pisałem to z głowy)
BzikOS
php => Bazy danych
Therronis
dzieki, zadzialalo : )
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.