Просмотр полной версии : Как хранить следующие данные??
superboy4
01.10.2009, 11:58
Работаю над страницей регистрации пользователя.
На этой странице есть два поля для выбора: город и университет. Как только пользователь выбирет свой город, ему аяксом тут же подгрузится список университетов в его городе. Понятно, что для каждого города свой набор университетов.
В форму для первого поля для выбора, названия городов у меня подгружаются из массива, который объявлен в моделе.
Вопрос а как мне теперь хранить названия университетов? Ведь если хранить в таблице с двумя полями: в первом - название города, а во втором - названия университетов. Как их правильно записать в одно поле? Чтобы можно было без труда их оттуда изъять?
может хранить названия университетов в массиве??
Но я не представляю как до них можно будет добраться, ведь когда юзер выбирает свой город, ему должен будет подгрузиться соответствующий список университетов в его городе!!!!! :(
Хранить данные в двух таблицах, например, city, где будут поля id (ключевое) и name (название города), и univer - поля id (ключевое), city_id (это поле связано с первой таблицей по полу id) и univ_name (название универа)
superboy4
01.10.2009, 12:08
Хранить данные в двух таблицах, например, city, где будут поля id (ключевое) и name (название города), и univer - поля id (ключевое), city_id (это поле связано с первой таблицей по полу id) и univ_name (название универа)
ты говоришь об ассоциациях???
spider-intruder
01.10.2009, 12:20
Он говорит о 2 массивах ил 2 таблицах типа:
--------------------------
1ГОРОД | 1
2ГОРОД | 2
3ГОРОД | 3
--------------------------
1универ | 1
2универ | 1
3универ | 1
4универ | 2
5универ | 2
6универ | 2
7универ | 3
8универ | 3
9универ | 3
--------------------------
а дальше select univer from tbl_univer where univer_id=gorod_id and gorod="ВЫБЕРЕТЕ ГОРОД"
Pashkela
01.10.2009, 12:31
Вопрос а как мне теперь хранить названия университетов? Ведь если хранить в таблице с двумя полями: в первом - название города, а во втором - названия университетов. Как их правильно записать в одно поле? Чтобы можно было без труда их оттуда изъять
да, так и хранить, одна таблица (univer), три поля:
1. id
2. univer_naz
3. gorod
select * from `univer` where `gorod`='выбранный_город' order by `univer_naz` DESC
зачем усложнять двумя таблицами - не совсем понятно
Gray_Wolf
01.10.2009, 12:42
да, так и хранить, одна таблица
зачем усложнять двумя таблицами - не совсем понятно
Ну как правило это делается потому что в последствии название города может быть связано не только с университетами, а ещё и с другими таблицами...
superboy4
01.10.2009, 12:50
2 pashkella
для каждого города ведь должны быть ОПРЕДЕЛЕНЫ свои университеты.
напрмер. Томск --- ТГУ, ТПУ и т.д.
select * from `univer` where `gorod`='выбранный_город' order by `univer_naz` DESC
поле селект получит университеты всей россии!!! Зачем же так?
Pashkela
01.10.2009, 12:54
поле селект получит университеты всей россии!!! Зачем же так?
where `gorod`='выбранный_город'
rrrrrrrrrrr
superboy4
01.10.2009, 13:05
вопрос актуален!
определённому городу принадлежат строго определённые университеты.
Gray_Wolf
01.10.2009, 13:13
krypt3r же сказал как это сделать...
Вот картинка:
http://pic.ipicture.ru/uploads/091001/Er01OngVak.jpg
Точно так-же подцепляем к городам анкету и всё остальное.
Создаем две таблички
CREATE TABLE city (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(100));
CREATE TABLE univer (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, city_id INT, univer_name VARCHAR(100));
В первой таблице хранятся названия городов и их id. Например
city
==========================
id city_name
--------------------------
1 Москва
2 Санкт-Петербург
3 Екатеринбург
Во второй будут храниться названия университетов
univer
==========================
id city_id univ_name
--------------------------
1 1 МГУ
2 1 МФТИ
3 3 Уральский государственный педагогический университет
4 2 Технический университет
5 1 МГИМО
6 2 Морской технический университет
7 3 Уральский государственный горный университет
8 2 Петербургский государственный университет путей сообщения
9 3 Уральский государственный лесотехнический университет
Где университеты с city_id = 1 - московские, city_id = 2 - питерские, city_id = 3 - ёбургские
Ну и связь таблиц может быть такой (city.id = univer.city_id)
$city_id = intval ($_GET['city_id']);
mysql_query ("SELECT c.id, c.name, u.id, u.univ_name FROM city c
LEFT JOIN univer u ON c.id = u.city_id
WHERE c.id = '$city_id'");
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot