Объединение ячеек в таблице
Всем привет, помогите пожалуйста. Нужно условие для объединения ячеек в столбце таблице выводящей заказы интернет магазина. Ячейка — общая сумма заказа каждого пользователя, то есть заказ большой и надо ячейку с суммой сделать для заказа общей. Подскажите пожалуйста, ни как не придумаю, пытаюсь через rowspan но нужно условие. Говорите какой код выложить, если понадобиться. Спасибо.
Объединение ячеек в таблице Mysql
Помогите объединить ячейки в таблице. В прикрепленном изображении пример. Например взять товар 57.
Динамическое заполнение и объединение ячеек таблицы
Здравствуйте! Прикрепил фото задания и примера. Вообщем не получается сделать чтобы к примеру.
Объединение ячеек таблицы на основание входных данных из БД
Здравствуйте! Подскажите, как реализовать динамическую генерацию строк и столбцов HTML-таблицы на.
Динамическое объединение ячеек таблицы средствами php
Здравствуйте! Надо написать функцию, которая будет генерировать html-таблицу по заданным.
Сообщение от IlyaKh
Всем привет, помогите пожалуйста. Нужно условие для объединения ячеек в столбце таблице выводящей заказы интернет магазина. Ячейка — общая сумма заказа каждого пользователя, то есть заказ большой и надо ячейку с суммой сделать для заказа общей. Подскажите пожалуйста, ни как не придумаю, пытаюсь через rowspan но нужно условие. Говорите какой код выложить, если понадобиться. Спасибо.
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
Последовательное заполнение ячеек в таблице номерами
Здравствуйте! Нужна помощь в решении вопроса. Задача: отрисовать с помощью html табличку и.
Суммирование значений двух ячеек в таблице
На сайте данные вводятся с помощью таблицы. Вводимые значения это числа и все. Таблица с двумя.
Цвет ячеек в таблице
Скажите, как мне изменить именно цвет определённой ячейки в таблице. Вот код: echo<<<HERE.
Объединение ячеек в таблице
Искал похожую тему — не нашел. Собственно вопрос: как объединить ячейки, которые были.
PHP создание таблицы из массива
Динамическая таблица PHP — удобное средство отображения данных, содержащихся, например, в текстовом файле. В PHP создание таблицы из массива таких данных не составляет особого труда: нужно считать текстовый файл в массив, а затем пройтись по нему циклом — for, foreach. Трудность возникает, когда необходимо сверстать HTML-таблицу с повторяющимися значениями ячеек, которые требуется объединить — colspan, rowspan. Объединить ячейки строки динамической таблицы PHP, вставив colspan, довольно просто — все делается в рамках одной итерации. Гораздо сложнее объединить ячейки столбца динамической таблицы PHP, когда значение rowspan вычисляется в процессе обхода массива в цикле. Как-то и мне пришлось столкнуться с такой задачей — я так и не нашел ни готовые решения, ни идеи, поэтому пришлось все делать самому.
Объединение ячеек динамической таблицы PHP
Итак, у нас есть массив данных $array_1, в которых хранятся коды IATA аэропортов, названия городов и стран, в которых расположены аэропорты Симферополя, Анапы, Геленджика, Краснодара, Сочи и гостиницы Краснодарского края. Нужно отобразить данные в HTML-таблице, перебрав массив циклом foreach, в котором и будет производиться верстка. Поскольку названия стран повторяются, то желательно ячейки первого столбца объединить, вставив в соответствующей ячейке первой для каждой страны строки rowspan, а заодно придав им определенный цвет.
Логика решения заключается в том, что на первой для страны итерации ей присваивается уникальный индекс $m, отформатированная строка записывается в новый массив $new_array[$m] путем склеивания двух переменных — $string_1, $string_2. При этом помечается специальный маркер для строк массива, соответствующих этой стране, в соответствии с которым на следующих итерациях будет удаляться ячейка «СТРАНА», а вместо нее путем перезаписывания $new_array[$m] вставляться переменная $rowspan. Переменная $string_1, предшествующая rowspan, не изменяется, а к переменной $string_2 дописываются последующие строки. Если в этой стране только один город, то отформатированная строка в таком виде останется в новом массиве, и на следующей итерации будет обрабатываться следующая по алфавиту страна. В общем, смотрите внимательно код, из которого программисту станет все ясно.
$array_1 = array(
‘AAQ’ => array(‘Россия’, ‘Анапа’),
‘AER’ => array(‘Россия’, ‘Адлер’),
‘FRU’ => array(‘Кыргызстан’, ‘Бишкек’),
‘GDZ’ => array(‘Россия’, ‘Геленджик’),
‘KRR’ => array(‘Россия’, ‘Краснодар’),
‘OSS’ => array(‘Кыргызстан’, ‘Ош’),
‘SIP’ => array(‘Россия’, ‘Симферополь’),
// . продолжение списка аэропортов
);
$country = »; // Инициализируем переменную маркера страны
$i = 1; // Порядковый номер строки
$m = 0; // Индекс, соответствующий стране
$rowspan = »; // Инициализируем переменную $rowspan для вставки в тег th rowspan
$new_array = array(); // Создаем новый пустой массив
foreach($array_1 as $key => $value) // Проверяем соответствие маркера стране — $value[0]
if ($value[0] != $country) $country = $value[0]; // Страна, в которой расположены один или несколько аэропортов
$m = $m+1; // Увеличиваем индекс, соответствующий стране, на 1
if ($m%2 == 0) $string_1 = ‘
>
else $string_1 = ‘
>
$string_1 .= ‘
$string_2 = ‘>’.$country.’
‘; // $string_2 может дописываться на следующей итерации
$r = 1; // Индекс для подсчета rowspan
$new_array[$m] = $string_1.$string_2; // Строка нового массива
>
else // $string_2 дописывается к $string_2 предыдущей итерации
if ($m%2 == 0) $string_2 .= ‘
>
else $string_2 .= ‘
>
$string_2 .= ‘
‘;
$r = $r+1; // Индекс для подсчета rowspan
$rowspan = ‘ rowspan=»‘.$r.'»‘; // $rowspan вставляется после $string_1 и перед $string_2
$new_array[$m] = $string_1.$rowspan.$string_2; // Перезаписываем строку нового массива, вставляя $rowspan и обновленную переменную $string_2
>
$i++; // Увеличиваем порядковый номер строки на 1
>
unset($array_1, $key, $value, $i, $m, $country, $string_1, $string_2, $r, $rowspan);
// Вывод таблицы из массива $new_array в цикле foreach
$table = ‘
№ | Страна | Город |
---|
‘;
echo $table; // Печать таблицы
unset($new_array, $value, $table);
Пример реализации задачи объединения ячеек динамической таблицы PHP здесь →
Запрещается републикация статьи без указания активной прямой ссылки на источник.
За помощью в решении различных задач по программированию на языках PHP, JavaScript (включая jQuery) обращайтесь через раздел «Контакты» .
Записки программиста
Как объединить ячейки в сгенерированной php таблице?
Я нашел решение на этом сайте для отображения пустой ячейки, когда массив xml повторяется, но я не могу найти ответ на объединение пустых ячеек. Это то, что я получаю: Это то, что я хотел бы, чтобы он выглядел (с точки зрения объединенных ячеек): Итак, мой вопрос заключается в том, как объединить эти ячейки — сообщить предыдущей ячейке использовать rowspan? (альтернативно, есть способ сообщить пустым ячейкам, что у них нет границы? Вот мой код:
$currentName = $name; ?> else < echo " "; >$currentWork = $work_name; ?> name == $previousRole) < continue; >else < echo html_encode($role_attrs->name); > $previousRole = $role_attrs->name; ?>
3 ответа
в качестве альтернативы, есть способ сообщить пустым ячейкам, что они не имеют границы
Это намного проще, просто добавьте некоторый класс в пустую ячейку (например, и создайте ее в своем css с помощью td.empty
rowspan — это, безусловно, путь. Однако, вместо того, чтобы выплевывать HTML, когда вы идете, вам нужно будет отслеживать, сколько строк нужно охватить, а затем построить HTML соответственно.
Несколько мест для запуска:
Update
Это должно иллюстрировать, что задействовано.
body < font: normal 62.5% sans-serif; >table < font-size: 1.3em; width: 420px; border: 0; border-collapse:collapse; >td 'HAYDN, Joseph', 'title' => 'Die Schöpfung', 'role' => 'Adam' ), array( 'composer' => 'HAYDN, Joseph', 'title' => 'Die Schöpfung', 'role' => 'Raphäel' ), array( 'composer' => 'HAYDN, Joseph', 'title' => 'Il mondo della luna', 'role' => 'Ernesto' ), array( 'composer' => 'HAYDN, Joseph', 'title' => 'La vera costanza', 'role' => 'Masino' ), array( 'composer' => 'MENOTTI, Gian Carlo', 'title' => 'The Telephone', 'role' => 'Ben' ), array( 'composer' => 'MOORE, Douglas', 'title' => 'Gallantry', 'role' => 'Dr Gregg' ), array( 'composer' => 'MOZART, Wolfgang Amadeus', 'title' => 'Die Zauberflöte', 'role' => 'Der Sprecher' ), array( 'composer' => 'MOZART, Wolfgang Amadeus', 'title' => 'Die Zauberflöte', 'role' => 'Papageno' ), array( 'composer' => 'MOZART, Wolfgang Amadeus', 'title' => 'La nozze di Figaro', 'role' => 'Il conte Almaviva' ), array( 'composer' => 'NICHOLSON, Alisdair', 'title' => 'Two sisters, a rose, a flood and snow', 'role' => 'baritone' ), array( 'composer' => 'OFFENBACH, Jacques', 'title' => 'Barbe-bleue', 'role' => 'Graf Oscar' ), array( 'composer' => 'OFFENBACH, Jacques', 'title' => 'La vie parisienne', 'role' => 'Bobinet' ), array( 'composer' => 'PUCCINI, Giacomo', 'title' => 'La bohème', 'role' => 'Schaunard' ), array( 'composer' => 'PUCCINI, Giacomo', 'title' => 'Madama Butterfly', 'role' => 'Il principe' ), array( 'composer' => 'PUCCINI, Giacomo', 'title' => 'Madama Butterfly', 'role' => 'Yamadori' ) ); $current_composer = ''; $current_title = ''; $composer_row_count = 1; $title_row_count = 1; $doc = new DOMDocument(); $table = $doc->createElement('table'); $doc->appendChild($table); foreach($works as $work) < $row = $doc->createElement('tr'); $table->appendChild($row); if ($current_composer !== $work['composer']) < $current_composer = $work['composer']; $composer_row_count = 1; $composer_col = $doc->createElement('td', $work['composer']); $row->appendChild($composer_col); > else < $composer_col->setAttribute('rowspan', ++$composer_row_count); > if ($current_title !== $work['title']) < $current_title = $work['title']; $title_row_count = 1; $title_col = $doc->createElement('td', $work['title']); $row->appendChild($title_col); > else < $title_col->setAttribute('rowspan', ++$title_row_count); > $role_col = $doc->createElement('td', $work['role']); $row->appendChild($role_col); > echo $doc->saveHTML(); ?>
Скопируйте код и запустите его. Макет — это именно то, о чем вы просили, но, естественно, вам нужно будет приспособить его к вашим потребностям.
Форум PHP программистов ► PHP практикум ► PHP для начинающих
Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39553
На форуме:
Карма:
Помогите объединить ячейки таблицы при генерации её на php (см. скриншот). Натолкните на мысль, как можно так сделать?
Присоединённое изображение
Сидел он, дум великих полон — и вдаль глядел
Сообщений: 15860
Пользователь №: 4190
На форуме:
Карма: 490
Сначала запиши все данные в массив, потом проанализируй (сколько и какие строки объединять), а потом уже только создавай таблицу.
* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.
* «накапливаю умение телепатии» (С) и «гуглю за ваш счет» (С)
Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39553
На форуме:
Карма:
Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39553
На форуме:
Карма:
array(
'sum' => array(
array(
'rowspan' => 2,
'value' => '10000 - 15000',
),
array(
'rowspan' => 0,
'value' => '20000 - 27000',
),
),
'instalment' => array(
array(
'rowspan' => 3,
'value' => '10%',
),
),
'period' => array(
array(
'rowspan' => 0,
'value' => '5 лет',
),
array(
'rowspan' => 0,
'value' => '7 лет',
),
array(
'rowspan' => 0,
'value' => '17 лет',
),
),
'procent' => array(
array(
'rowspan' => 0,
'value' => '3%',
),
array(
'rowspan' => 2,
'value' => '5%',
),
),
'currency' => array(
array(
'rowspan' => 3,
'value' => 'RUB',
),
),
);
Далее просто в цикле прогоняю каждый элемент (‘sum’, ‘period’ и т.д.) и если rowspan === 0, то рисую
, в противном случае
. Спасибо, что натолкнули на мысль! 🙂
Это сообщение отредактировал PendalF — 6.05.2014 — 08:17