Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Подскажите как в Mysql. Сделать поиск по диапозону. (https://forum.antichat.xyz/showthread.php?t=93635)

троль909 26.11.2008 19:07

Подскажите как в Mysql. Сделать поиск по диапозону.
 
Подскажите как в Mysql. Сделать поиск по диапозону.

У меня есть база Ip адресов. по диапозонам.
записаны они в 3 столбика. где 1 столбик начало диапозона 2 конец диапозона.
но я не могу понять как сделать запрос который делал поиск примерно по такой схеме 1 столбик<значение<2 столбик.

FeoЩту 26.11.2008 19:46

$temp = '255.255.';
...
$sql = 'SELECT * FROM ip_table WHERE ip LIKE "'.$temp.'%"
...

Выдаст тебе все адреса, начинающиеся на 255.255.

kolpeex 26.11.2008 20:01

Все просто. Поля диапозонов должны быть числами, т.е. ip в формате longip. Это IP записанный в бинарном формате. Т.е. четыре байта abcd. В общем, по лонгайпи погугли.
Далее просто конвертишь адрес в целое и ищешь по БД типа:
$ip = 0x79000001;
select * from `ips` where `ip_from` <= $ip and `ip_to` >=$ip

Может не так объяснил, но, думаю, смысл ясен.

j0ker13 27.11.2008 00:11

если это для определения страны то легче выдрать все это из админки напрмер связки armitage ;)))

VDShark 27.11.2008 01:57

.... where val >= v1 AND val <=v2
либо
.... where val between v1 AND v2

krypt3r 27.11.2008 09:18

для диапазона IP-адресов, возможно, будет лучше применять INET_ATON для границ диапазона для преобразования ипов в целочисленное представление

VDShark 27.11.2008 11:01

krypt3r как я понял - там они и так уже представлены в таком виде :)

krypt3r 27.11.2008 14:52

Не, это я писал, если вдруг ипы в поле типа varchar хранятся)


Время: 02:29