За последние 24 часа нас посетили 53646 программистов и 1705 роботов. Сейчас ищут 1142 программиста ...

Нужна помощь с работой в БД

Тема в разделе "PHP и базы данных", создана пользователем Alone, 27 ноя 2014.

  1. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Код (Text):
    1.  $studentsdmp = $db->fastQuery("SELECT gid, fullname, id  FROM ".DBPREF."_students WHERE 1", true);
    2.     $groupsdmp = $db->fastQuery("SELECT id, name  FROM ".DBPREF."_groups WHERE 1", true);
    3.     foreach($groupsdmp as $gdmp )
    4.     foreach($studentsdmp as $sdmp )
    5.     $contenttwo .="<tr><td>" . $sdmp['id'] . "</td><td>" . !!WARNING!! . "</td><td>" .$sdmp['fullname'] . "</td><td>sd</td></tr>";
    Собственно там где варнинг нужно выводить $gdmp['name'], однако их 2, и поэтому выводится дважды $sdmp набор с двумя вариантами расстановки gdmp['name']
    Как к конкретному $sdmp выгрести нужный $gdmp, учитывая что $sdmp['gid'] == $gdmp['id']
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    через if или тернарный оператор
     
  3. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Та вот не канает. Как не пытался уже
     
  4. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    так напиши по пунктам, что ты хочешь реализовать, можно на псевдо коде
     
  5. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Я вытаскиваю две таблицы. 1 с юзерами, вторая с группами юзеров. Соответственно gid столбец в таблице юзеров = id столбцу в таблице групп.
    У групп есть названия, допустим админы. Нужно сделать дамп юзеров, а группы разные. Названия так же вывести. Названия вывести могу, но все юзеры повторяются по колчичеству групп со всеми названиями групп
     
  6. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Хочешь вывести для каждого пользователя в каких группах он состоит?
     
  7. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    да! Именно оно.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    типа джоин таблицы с группами по гид.группы = гид.юзера?
     
  9. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Джоин таблицы? Объяснить можешь?
     
  10. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    а что в $gdmp (группы)? сделай var_dump($gdmp) и для $sdmp
     
  11. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    [​IMG] вот var_dump
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну это ж теория реляционных баз данных. матчасть учить хорошая идея. всегда.
    есть юзеры и группы. если пользователь может содержаться в одной группе то связь 1-1. и при выборе пользователя/лей можно сразу дополнить кортежи пользователей сведениями об их группах. если пользователь может быть в нескольких группах то получается связь 1-N. но для того чтоб не создавать одинаковую по назначению группу для каждого отдельного юзера - заводят отдельную таблицу связей юзер-группа. и вот мы обращаемся к этой таблице с просьбой показать нам все группы в которые входит юзер по его ид. ну и нам ничего не мешает сразу дополнить кортеж сразу инфой и о группах. объединение кортежей разных таблиц происходят лексемой join.
     
  13. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Странный вывод var_dump, мало что понятно, так один пользователь только к одной группе принадлежит?
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я кажется врубился что "так" у тс. он выбрал группы в массив и потом итерируя массив школьников для каждого итерирует и массив групп. поэтому на автомате получается что каждый школьник сидит сразу во всех группах.
     
  15. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Да. В итоге каждый школяр во всех группах. Как сделать правильно распределение?
    У школьников есть id класса
    У таблицы классов есть id равный id класса у школьника
     
  16. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Ответил бы на мой вопрос, поискал бы mysql join
     
  17. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Да, 1 юзер = 1 группа
     
  18. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    ну вот можно сделать выборку из двух таблиц FROM _students, _groups
    переделать SELECT `gid`.`_students`, `id`.`_groups` ... для всех
    Потом WHERE `gid`.`_students` = `id`.`_groups`
     
  19. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Чего-то я не понял, как тогда код выглядеть должен?
    Можно подробнее?
     
  20. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в раздел новичков/блондинок/фриланс?
     
  21. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Новичек
     
  22. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Так что не понятно? Есть же основы sql для mysql которые можно почитать, ты не хочешь читать? Если проблема в другом, пиши, поможем, подскажем.
     
  23. Alone

    Alone Новичок

    С нами с:
    9 июн 2014
    Сообщения:
    32
    Симпатии:
    0
    Я конкретно не понимаю, как зная ID_group юзера вывести название группы
     
  24. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Через select и сравнение
    SELECT ... `_groups`.`name` ... WHERE `_students`.`gid` = `_groups`.`id`
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    join и оно будет просто в кортеже юзера. блябуду