Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
1

Как вывести дерево из двух таблиц MySQL PHP

02.10.2013, 03:49. Показов 2812. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!
У меня есть 2 таблицы, одна с названиями подразделений и
отделов(department_table D), вторая с сотрудниками(users_table U) где
U.DEPT_ID это D.ID подразделение где работает сотрудник.

Есть такой код
PHP
1
Почему-то код не хочет ставиться
Он выводит:
Название подразделения, ФИО сотрудника, должность
Название подразделения, ФИО сотрудника, должность
Название подразделения, ФИО сотрудника, должность

Как вывести так:
Название подразделения
ФИО сотрудника, должность
ФИО сотрудника, должность
ФИО сотрудника, должность
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2013, 03:49
Ответы с готовыми решениями:

Как вывести данные из двух более таблиц mysql?
Подскажите пожалуйста! Необходимо: 1. на одну страницу вывести информацию из двух или более...

PHP+MySQL Вывод из двух таблиц при двух условиях
Есть две таблицы. users: содержит id, foto, usermessages: содержит fromid Нужно выбрать те...

Связь двух таблиц и выпадающий список php mysql
Помогите начинающму! Есть две таблицы: tab1 id produkt - в эту таблицу добавляются...

Ошибка при выводе данных из двух таблиц PHP MYSQL
$sql = mysql_query("SELECT `title`, `pic` FROM `wow`, `wow2` ...

13
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 04:02 2
А что вы просите у MySQL ... похоже что вы пытаетесь склеить две таблицы по ID найти их пересечение так сказать или по другому - склеиваете строки двух таблиц. Вот он и выводит несколько раз название подразделения.

Добавлено через 1 минуту
Избавится от повторений можно уже в PHP. Когда будете работать с массивом.
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 06:53  [ТС] 3
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Избавится от повторений можно уже в PHP. Когда будете работать с массивом.
Как? Я тут хотел php код вывода поставить, он не ставиться почему-то
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 07:10 4
У вас после запроса к базе будет массив, так? В цикле с условием выбираете нужные вам пункты.

Добавлено через 58 секунд
PHP
1
echo "TEST";
Добавлено через 20 секунд
Все работает, не дурите маленьких

Добавлено через 11 минут
PHP
1
2
3
4
5
$result = mysql_query(''); // Запрос к БД
while($myrow = mysql_fetch_array($result))
{
        // тут выбираем что надо а что нет, каждый раз в $myrow будет новая строка. 
}
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 07:30  [ТС] 5
PHP
1
2
3
4
5
6
7
$sql = "SELECT D.ID, U.ID, concat(U.LAST_NAME,' ',U.NAME,' ',U.SECOND_NAME) as FIO, D.NAME as DEPNAME, P.NAME as STAT, DU.URL as URL FROM users_table U, department_table D, psdep_rank P, department_url DU WHERE U.DEPT_ID=D.ID AND DU.ID=D.ID AND DU.URL like '".$Sun4."%' AND U.PSDEP_CODE=P.NAME order by D.ID, P.STAT";
$results = $DB->Query($sql);   
if ($results->SelectedRowsCount() > 0) {
    while ($row = $results->Fetch()) {
        echo "<p>".$row['DEPNAME'].", ".$row['FIO'].", ".$row['STAT']."</p>";
    }
}
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 07:50 6
Я вижу решение в создании временной переменной $temp['DEPNAME'];

Добавлено через 2 минуты
Перед выводом сравнить с $row['DEPNAME'], если $row['DEPNAME'] == $temp['DEPNAME'] то не выводи, а иначе выводи и копируем в $temp['DEPNAME'] = $row['DEPNAME']

Добавлено через 20 секунд
Что то вроде этого, короче говоря.
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 08:02  [ТС] 7
PHP
1
2
3
4
5
6
7
if ($row['DEPNAME'] == $temp['DEPNAME']) {
$temp['DEPNAME']='';
}else{
$temp['DEPNAME']='$row['DEPNAME']'
}
echo "<h3>".$temp['DEPNAME']."</h3>
<p>".$row['FIO'].", ".$row['STAT']."</p>";
Так? но не понял вот это
PHP
1
$row['DEPNAME'] == $temp['DEPNAME']
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 08:09 8
Цитата Сообщение от gudicon Посмотреть сообщение
Так? но не понял вот это
Это просто для наглядности идеи. Насколько я помню вместо '==' нужно ставить 'eq' мы же строки сравниваем.
И можно просто $temp

Добавлено через 3 минуты
Можете и так как написали, пробуйте.

Добавлено через 18 секунд
Главное понять идею
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 08:40  [ТС] 9
PHP
1
2
3
4
5
if ($row['DEPNAME'] == $temp) {
$temp='';
}else{
$temp=$row['DEPNAME'];
}
постоянно равно поэтому вообще $row['DEPNAME'] не выводит
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 08:48 10
лучше использовать оператор ===

Добавлено через 1 минуту
У вас всегда выполнятся будет блок else в таком варианте, так как $temp изначально ничему ни равен
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 08:53  [ТС] 11
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
лучше использовать оператор ===
не пашет как нужно

как сделать так чтоб было так?
Название подразделения
ФИО сотрудника, должность
ФИО сотрудника, должность
ФИО сотрудника, должность
Название подразделения
ФИО сотрудника, должность
ФИО сотрудника, должность
ФИО сотрудника, должность
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 09:19 12
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ...
while(...) {
 
 if(!isset($temp)) { // если переменная не существует, то её нужно создать.
  $temp = $row['DEPNAME']; // создали.
 } // больше не выполнится ни разу, так как переменная уже существует.
 
 if($temp !== $row['DEPNAME']) { // Если не равно, то
    $temp = $row['DEPNAME']; // скопировать во временную переменную
    echo $row['DEPNAME']. ... // и вывести, так как нам нужен департамент для группы сотрудников.
 }
 else { // Тут уже равно при второй итерации цикла ...
    $row['DEPNAME'] = ''; // обнуляем департамент
    echo ... // выводим все кроме департамента.
 }
}
Примерно так.

Добавлено через 47 секунд
Идея понятна?
1
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 19
02.10.2013, 11:11  [ТС] 13
все работает и главное уже все понятно Спасибо большое
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
02.10.2013, 11:12 14


Уверен, что можно придумать варианты и лучше.
1
02.10.2013, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2013, 11:12
Помогаю со студенческими работами здесь

Средствами php и mysql пытаюсь реализовать выборку из двух таблиц
Добрый день. Есть две таблицы: Первая (tb_ain - таблица с модулями)...

MySQL + PHP запрос на выборку уникальных строк по последней дате из двух таблиц
Подскажите где ошибка, выдает первую запись по дате, а не последнюю таблицы create table...

Как соединить значения с двух таблиц в MySQL в одну связывающую через .js в форме
Всем добрый день! Помогите пож. даже идеи нет. Суть у меня 3-и таблицы в БД, мне надо как-то...

Как выводить информацию из разных таблиц Mysql на одну страницу (php), в список
Необходимо, чтоб к одному значению в базе данных прикреплялись значения из других таблиц. Например:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru