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

Discussion in 'PHP' started by троль909, 26 Nov 2008.

  1. троль909

    троль909 Member

    Joined:
    12 Sep 2008
    Messages:
    19
    Likes Received:
    38
    Reputations:
    -3
    Подскажите как в Mysql. Сделать поиск по диапозону.

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

    FeoЩту New Member

    Joined:
    13 Nov 2008
    Messages:
    29
    Likes Received:
    4
    Reputations:
    0
    $temp = '255.255.';
    ...
    $sql = 'SELECT * FROM ip_table WHERE ip LIKE "'.$temp.'%"
    ...

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

    kolpeex Member

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

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

    j0ker13 Elder - Старейшина

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    если это для определения страны то легче выдрать все это из админки напрмер связки armitage ;)))
     
  5. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    .... where val >= v1 AND val <=v2
    либо
    .... where val between v1 AND v2
     
  6. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    для диапазона IP-адресов, возможно, будет лучше применять INET_ATON для границ диапазона для преобразования ипов в целочисленное представление
     
  7. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    krypt3r как я понял - там они и так уже представлены в таком виде :)
     
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Не, это я писал, если вдруг ипы в поле типа varchar хранятся)