[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнивание переменной с записями в базе
DenisovVSh
Доброго времени суток!
Есть база(MySQL) с данными адресов домов, но в ней не весь список городов, районов, улиц и домов, а только тех которые нужны. Мне нужно сделать возможность добавления нового адреса с проверкой. Проблема заключается в проверке, т.е. при передаче переменной с новой улицей(а вместе с ней передаются переменные с городом и районом) нужно проверить- если город и район в базе уже существует, то добавить улицу, а если нет то добавить все. Города районы и улицы хранятся в разных таблицах.



Спустя 42 минуты, 53 секунды (4.10.2010 - 11:29) ApuktaChehov написал(а):
Нужно правильно спроектировать БД иначе будет гемор.
Нужно, как уже у вас сделано, разнести города, районы и улицы в разные таблицы. После нужно организовать связи этих таблицы, примерно так:
Москва - city_id = 3

Сокол - area_id = 88 | city_id = 3

Ленинградское шоссе - street_id = 124 | area_id = 88

Теперь мы знаем что Ленинградское шоссе имеет номер района 88. Проводим поиск по базе с номером 88 и находим район Сокол. Сокол имеет номер города 3. Проводим поиск по базе с номером 3 находим Москву.
Таким образом зная улицу, можно без труда узнать, в какой она районе и городе.

И добавлять данные в такую структуру будет крайне просто.
При добавлении ищем город в бд. Если находим, то извлекаем его номер, если нет, то присваиваем новый номер. Теперь у нас имеется номер города.
Далее так же с районом и улицей. После чего просто указываем новым записям координаты района и города. И все.

P.S. Ну это я так представляю, может это и косяк. В любом случае, эксперты не дадут соварть wink.gif

Спустя 38 минут, 49 секунд (4.10.2010 - 12:08) sergeiss написал(а):
Цитата (ApuktaChehov @ 4.10.2010 - 12:29)
Таким образом зная улицу, можно без труда узнать, в каком она районе и городе.

Да? wink.gif А ну-ка скажи мне, в каком городе и районе находится улица Горького? Исходя из твоего алгоритма.

Я так предлагаю. Делаешь форму, в которой находятся списки городов, районов и их улиц. Как это сделать - это другой вопрос smile.gif Можно грузить всё сразу (но это много данных), а можно подгружать аяксом.
Далее. В каждом списке (городов, районов, улиц) делаешь отдельную строку "Добавить новую запись". И добавляешь её, с привязкой улиц и районов к городам. И потом уже используешь новые данные.
Добавку и подгрузку нового списка можно также сделать аяксом, без перезагрузки всей страницы.

Спустя 40 минут, 30 секунд (4.10.2010 - 12:49) ApuktaChehov написал(а):
Улица Горького находится в районе area_id, по которому можно узнать и город city_id.

Вроде так huh.gif

Спустя 1 час, 18 минут, 46 секунд (4.10.2010 - 14:07) linker написал(а):
sergeiss
Импровизация
SELECT c.city_name, a.area_name, s.street_name FROM streets AS s
LEFT JOIN areas AS a ON a.id = s.area_id
LEFT JOIN citys AS c ON c.id = a.city_id
WHERE s.id = 88
Все вроде легко узнается.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.