Как хранить следующие данные??

Discussion in 'PHP' started by superboy4, 1 Oct 2009.

  1. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Работаю над страницей регистрации пользователя.
    На этой странице есть два поля для выбора: город и университет. Как только пользователь выбирет свой город, ему аяксом тут же подгрузится список университетов в его городе. Понятно, что для каждого города свой набор университетов.
    В форму для первого поля для выбора, названия городов у меня подгружаются из массива, который объявлен в моделе.


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

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

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Хранить данные в двух таблицах, например, city, где будут поля id (ключевое) и name (название города), и univer - поля id (ключевое), city_id (это поле связано с первой таблицей по полу id) и univ_name (название универа)
     
    1 person likes this.
  3. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    ты говоришь об ассоциациях???
     
  4. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Он говорит о 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="ВЫБЕРЕТЕ ГОРОД"
     
    #4 spider-intruder, 1 Oct 2009
    Last edited: 1 Oct 2009
    1 person likes this.
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    да, так и хранить, одна таблица (univer), три поля:

    1. id
    2. univer_naz
    3. gorod

    select * from `univer` where `gorod`='выбранный_город' order by `univer_naz` DESC

    зачем усложнять двумя таблицами - не совсем понятно
     
  6. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Ну как правило это делается потому что в последствии название города может быть связано не только с университетами, а ещё и с другими таблицами...
     
  7. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    2 pashkella

    для каждого города ведь должны быть ОПРЕДЕЛЕНЫ свои университеты.
    напрмер. Томск --- ТГУ, ТПУ и т.д.
    поле селект получит университеты всей россии!!! Зачем же так?
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    rrrrrrrrrrr
     
  9. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    вопрос актуален!
    определённому городу принадлежат строго определённые университеты.
     
  10. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    krypt3r же сказал как это сделать...
    Вот картинка:
    [​IMG]
    Точно так-же подцепляем к городам анкету и всё остальное.
     
    #10 Gray_Wolf, 1 Oct 2009
    Last edited: 1 Oct 2009
    1 person likes this.
  11. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Создаем две таблички
    Code:
    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. Например
    Code:
    city
    ==========================
    id	city_name
    --------------------------
    1	Москва
    2	Санкт-Петербург
    3	Екатеринбург
    
    Во второй будут храниться названия университетов
    Code:
    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'");
     
Loading...