Есть база(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. Ну это я так представляю, может это и косяк. В любом случае, эксперты не дадут соварть
Нужно, как уже у вас сделано, разнести города, районы и улицы в разные таблицы. После нужно организовать связи этих таблицы, примерно так:
Москва - city_id = 3
Сокол - area_id = 88 | city_id = 3
Ленинградское шоссе - street_id = 124 | area_id = 88
Теперь мы знаем что Ленинградское шоссе имеет номер района 88. Проводим поиск по базе с номером 88 и находим район Сокол. Сокол имеет номер города 3. Проводим поиск по базе с номером 3 находим Москву.
Таким образом зная улицу, можно без труда узнать, в какой она районе и городе.
И добавлять данные в такую структуру будет крайне просто.
При добавлении ищем город в бд. Если находим, то извлекаем его номер, если нет, то присваиваем новый номер. Теперь у нас имеется номер города.
Далее так же с районом и улицей. После чего просто указываем новым записям координаты района и города. И все.
P.S. Ну это я так представляю, может это и косяк. В любом случае, эксперты не дадут соварть

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

Я так предлагаю. Делаешь форму, в которой находятся списки городов, районов и их улиц. Как это сделать - это другой вопрос

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

Спустя 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