Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как хранить следующие данные?? (https://forum.antichat.xyz/showthread.php?t=144879)

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

Цитата:

Сообщение от Pashkela
да, так и хранить, одна таблица
зачем усложнять двумя таблицами - не совсем понятно

Ну как правило это делается потому что в последствии название города может быть связано не только с университетами, а ещё и с другими таблицами...

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)
PHP код:

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



Время: 21:44