PDA

Просмотр полной версии : Как хранить следующие данные??


superboy4
01.10.2009, 11:58
Работаю над страницей регистрации пользователя.
На этой странице есть два поля для выбора: город и университет. Как только пользователь выбирет свой город, ему аяксом тут же подгрузится список университетов в его городе. Понятно, что для каждого города свой набор университетов.
В форму для первого поля для выбора, названия городов у меня подгружаются из массива, который объявлен в моделе.


Вопрос а как мне теперь хранить названия университетов? Ведь если хранить в таблице с двумя полями: в первом - название города, а во втором - названия университетов. Как их правильно записать в одно поле? Чтобы можно было без труда их оттуда изъять?

может хранить названия университетов в массиве??
Но я не представляю как до них можно будет добраться, ведь когда юзер выбирает свой город, ему должен будет подгрузиться соответствующий список университетов в его городе!!!!! :(

krypt3r
01.10.2009, 12:02
Хранить данные в двух таблицах, например, 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
Точно так-же подцепляем к городам анкету и всё остальное.

krypt3r
01.10.2009, 14:30
Создаем две таблички

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'");