За последние 24 часа нас посетил 16671 программист и 1632 робота. Сейчас ищут 817 программистов ...

Творческое задание :)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Allin777, 11 дек 2009.

  1. Allin777

    Allin777 Активный пользователь

    С нами с:
    8 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    Творческое задание :).

    Представти землю, поделите мысленно ее на 1,000 секторов, представти Москву за нулевую меридиану, от которой отчитываеться широта и долгота.

    У меня есть глобальные переменные $longitude (долгота) и $latitude (широта), в которых храниться место положение человека от нулевой меридиане (москва).

    Теперь у меня есть база данных в которой храниться координаты квадратных территорий состоящих из 11 секторов.

    // задаем координаты секторов, где находиться человек
    $longitude = 5;
    $latitude = 4;

    // находим квадратную территорию, где находиться человек.
    // по идии в это базе есть столбец подходящий нам. вот он:
    //id locname x1 x2 y1 y2
    // 1 Ромашковое Поле 0 11 0 11
    // где столбцы x1, x2, y1, y2 - это соответственно углы квадратной территории.
    $locationquery = doquery("SELECT * FROM {{table}} WHERE x1>='$longitude' AND x2<='$longitude' AND y1>='$latitude' AND y2<='$latitude' LIMIT 1", "location");

    // но почему то этот столбец не находиться!
    $locationrow = mysql_fetch_array($locationquery);


    Помогите решить проблему. Буду рад любой помощи :)!
     
  2. Allin777

    Allin777 Активный пользователь

    С нами с:
    8 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    $locationquery = doquery("SELECT * FROM {{table}} WHERE x1>='".$userrow["longitude"]."' AND x2<='".$userrow["longitude"]."' AND y1>='".$userrow["latitude"]."' AND y2<='".$userrow["latitude"]."' LIMIT 1", "location");

    doquery($sql, $nametable) - это моя функция. Где $sql - это запрос, а $nametable - это название таблицы к которой будет проводиться запрос.
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Посмотрите на конечный запрос отправляемый в БД.
    Если я правильно понял, то он выглядит, вот так:

    [sql]SELECT * FROM location WHERE x1>='5' AND x2<='5' AND y1>='4' AND y2<='4' LIMIT 1[/sql]

    Он не должен возвращать приведенную Вами строку.
     
  4. Allin777

    Allin777 Активный пользователь

    С нами с:
    8 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    Volt(220), спасибо, что показал мне на мою глупость!
    Это же надо было мне так тупонуть :)!

    Я просто не так искал. Надо было поменять знаки:

    [sql]SELECT * FROM location WHERE x1<='5' AND x2>='5' AND y1<='4' AND y2>='4' LIMIT 1.[/sql]

    Вот теперь все прекрасно находиться! Спасибо!