Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60

Объединить повторяющиеся значения БД в одну ячейку

15.06.2017, 09:24. Показов 5537. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица PurchPlan, в которой значения столбца idCommittee могут повторяться. То есть например если его значение = "131", то оно относится сразу к нескольким полям, данные в которых разные. Как изменить мой код и сделать табличный вывод так, чтоб в одной строке было всего лишь одно "131", а в другой - подчинённые ему несколько полей? Вот как на изображении.
П.С.: в php и вёрстке совсем новичок...

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
    $strSQL = "SELECT * FROM `PurchPlan` ORDER BY `idComittee`";
    $rs = mysql_query($strSQL);
    while($row = mysql_fetch_array($rs)) {
    echo "<tr><td>".$row['idComittee']."</td>";
    echo "<td></td></tr>";
    echo "<tr><td align='left'>Годовой план закупки на ".$row['year']." год</td>";
    echo "<td align='left'>От ".$row['pubdate']."</td></tr>";
      }
    mysql_close();
?>

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2017, 09:24
Ответы с готовыми решениями:

Как записать значения массива в виде простого текста в одну ячейку в БД?
Друзья, очень прошу помощи - сломала уже весь мозг! Есть массив $cart Array ( =&gt; Array ( =&gt;...

Как объединить в одну ячейку повторяющиеся ячейки в столбце datagridview?
Доброго времени суток! Назрела у меня еще одна проблема. Пытаюсь через цикл (for ... then...next ) объединить повторяющиеся ячейки в...

Объединить несколько строк столбца отчета в одну ячейку
Добрый день! Целый день бьюсь с задачей- как объединить несколько сгруппированных строк столбца отчета в одну ячейку. Смотрел решения...

10
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.06.2017, 10:05
Tim Grey, нужно сгруппировать элементы массива по ключу.
Например так:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
/**
 * @param array $data
 * @param string $key
 * @return array 
 */
function array_group_by($data, $key)
{
    $result = [];
    foreach($data as $item)
    {
        $result[$item[$key]][] = $item;
    }
    return $result;
}
 
$sql = 'SELECT * FROM `PurchPlan` ORDER BY `idComittee`';
$group_key = 'idComittee';
 
$raw_data = $db->query($sql)->fetchAll(\PDO::FETCH_ASSOC);
$data = array_group_by($raw_data, $group_key);
?>
 
<table>
<?php foreach($data as $key => $list): ?>
    <tr>
        <td><?= $key ?></td>
        <td>
        <?php foreach($list as $line): ?>
            <pre><?= print_r($line, true) ?></pre>
        <?php endforeach; ?>
        </td>
    </tr>
<?php endforeach; ?>
</table>
0
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60
15.06.2017, 10:10  [ТС]
Max Dark, выдаёт ошибку: "Parse error: syntax error, unexpected '[' in S:\home\test1.ru\www\act.php on line 44", то есть на этой строке
PHP
1
$result = [];
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.06.2017, 10:18
Цитата Сообщение от Tim Grey Посмотреть сообщение
выдаёт ошибку
у вас старая версия php.
Цитата Сообщение от Tim Grey Посмотреть сообщение
то есть на этой строке
для старых версий php ее можно заменить на
PHP
1
$result = array();
Для использования сокращенного синтаксиса массивов нужен php не старее версии 5.4, обновитесь.
0
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60
15.06.2017, 10:21  [ТС]
Max Dark, теперь во эта ошибка "Call to a member function query() on a non-object" в строке
PHP
1
$raw_data = $db->query($sql)->fetchAll(\PDO::FETCH_ASSOC);
Это тоже со старой версией php связано?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.06.2017, 10:31
Цитата Сообщение от Tim Grey Посмотреть сообщение
Это тоже со старой версией php связано?
Не совсем.
Переменную $db нужно создать - это объект подключения к базе данных.
В примере я использовал PDO.
Функции, начинающиеся на mysql_ считаются устаревшими начиная с php 5.5 и были удалены в 7-й версии php.
Не используйте их для написания нового кода.
0
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60
15.06.2017, 10:59  [ТС]
Max Dark, снова ошибка... Уже не знаю, что и делать. "Call to a member function query() on a non-object"
PHP
1
$raw_data = $db->query($sql)->fetchAll(\PDO::FETCH_ASSOC);
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.06.2017, 11:20
Лучший ответ Сообщение было отмечено Tim Grey как решение

Решение

Цитата Сообщение от Tim Grey Посмотреть сообщение
Уже не знаю, что и делать
читать документацию по PDO
код
PHP
1
2
3
4
5
$sql = 'SELECT * FROM `PurchPlan` ORDER BY `idComittee`';
$group_key = 'idComittee';
 
$raw_data = $db->query($sql)->fetchAll(\PDO::FETCH_ASSOC);
$data = array_group_by($raw_data, $group_key);
равносилен
PHP
1
2
3
4
5
6
7
8
9
10
$sql = 'SELECT * FROM `PurchPlan` ORDER BY `idComittee`';
$group_key = 'idComittee';
 
$raw_data = array();
$rs = mysql_query($sql);
while($row = mysql_fetch_assoc($rs))
{
    $raw_data[] = $row;
}
$data = array_group_by($raw_data, $group_key);
1
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60
15.06.2017, 16:07  [ТС]
Max Dark, спасибо большое! Теперь всё понятно.

Добавлено через 43 минуты
Max Dark, можно последний вопрос, пожалуйста? Вот в этих строчках выводится код idComittee:
HTML5
1
2
3
4
<?php foreach($data as $key => $list): ?>
    <tr>
        <td><?= $key ?></td>
        <td>
Как сделать так, чтоб из связанной таблицы Comittee (поля id, namee), которая связана с PurchPlan по id -> idComittee, выводились вместо id - namee?
Я пробую так, но теперь все названия комитетов вразнобой:
PHP
1
2
    $key = $line['namee'];
    echo "<tr><td align='center'>".$key."</td><td></td></tr>";
Запрос я изменила на такой:
MySQL
1
"SELECT idComittee, name, year, pubdate, isProcedure, path, namee FROM `PurchPlan`, `Comittee` WHERE `Comittee`.`id` = `PurchPlan`.`idComittee` ORDER BY `idComittee`"
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.06.2017, 16:17
Лучший ответ Сообщение было отмечено Tim Grey как решение

Решение

Цитата Сообщение от Tim Grey Посмотреть сообщение
Как сделать так, чтоб
Можно изменить значение переменной $group_key
PHP
1
$group_key = 'namee';
1
 Аватар для Tim Grey
6 / 6 / 3
Регистрация: 29.09.2012
Сообщений: 60
15.06.2017, 16:20  [ТС]
Max Dark, спасибо огромное за всю помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2017, 16:20
Помогаю со студенческими работами здесь

Как объединить повторяющиеся значения построчно?
Добрый вечер! :) Здравствуйте уважаемые форумчане. Есть таблица - 1, в ней содержатся строки с повторами. Повторы это результат работы...

Вывести на экран в одну строку повторяющиеся значения списка
&quot;Напишите программу, которая принимает на вход список чисел в одной строке и выводит на экран в одну строку значения, которые повторяются в...

Как собрать в одну ячейку значения из столбца ч группировкой по номерам?
Доброго времени суток! Уважаемые гуру VBA, Появилась потребность собрать список мест хранения. Есть список мест хранения (Лист2). Места...

Вставляются все найденные значения в одну ячейку, исправить код
Sub teeest() ' ' ' Dim oCell Dim sAddress As String Workbooks.Open...

Вывести все значения под одним номером в одну ячейку
Нужно вывести все значения под одним номером в одну ячейку через запятую. Не могу сообразить как сделать. Сводная таблица выводит все в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru