- Как создать таблицу HTML в цикле foreach
- 5 ответов
- Пример использования циклов: отрисовка HTML таблицы на PHP
- Приступим
- Как вывести данные в виде таблицы - верстка товарной сетки
- Теоретическая часть
- Как это работает в HTML
- Как вывести коллекцию
- Как разбить коллекцию на строки и ячейки
- Практическая часть
- Пример 1
- Пример 2
- Пример 3
- Пример 4
Как создать таблицу HTML в цикле foreach
Мне нужно создать таблицу HTML, состоящую из трех столбцов: адрес электронной почты, имя, фамилия в моем цикле.
Кто-нибудь может дать подсказку, как я могу начать создавать?
$i=0; foreach($result as $r) < echo ""; print_r( $i ." ". $r['aluno_email'] ."". " | ". $r['aluno_nome'] . " " . $r['aluno_sobrenome'] . " | ". strtolower(trim(($r['aluno_nome'])))."_".strtolower(trim($r['aluno_sobrenome']))); echo ""; $i++; >
5 ответов
Создайте таблицу и заголовок таблицы вне цикла.
Заполните тело таблицы в цикле и закройте цикл.
Email Name Last Name "; echo "" . $r['aluno_sobrenome'] . " " . strtolower(trim(($r['aluno_nome']))) . " " . strtolower(trim($r['aluno_sobrenome'])) . " "; echo ""; $i++; > ?>
Перебирая результаты, каждый результат выводит одну строку
echo ''; foreach ($results as $r) < echo sprintf('%s %s %s ', $r['email'], $r['name'], $r['last_name']); > echo '
';
'; foreach ($result as $r) < echo " "; $i++; > echo '';
Я обычно начинаю с проверки результатов, затем строю таблицу:
if ($result->num_rows > 0) < echo " Email Name LastName "; I run my loop and output as long as I have results: // output data of each row while($row = $result->fetch_assoc()) < echo "" . $row["Email"]. " " . $row["Name"]. " " . $row["LastName"]. " "; > echo "
";
echo " Email Name LastName "; foreach($result as $val)< echo "".$val['email']." ".$val['name']." ".$val['lastName']." " "; > echo "
";
Пример использования циклов: отрисовка HTML таблицы на PHP
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
Здравствуйте уважаемые читатели блога Site on! В прошлой статье мы рассмотрели всё о циклах в PHP, но для закрепления полученных теоритических материалов, предлагаю выполнить практическую задачу, которая довольно часто встречается в повседневной жизни разработчика сайтов.
В наших с вами любимых CMS для отрисовки любой HTML таблицы используются циклы, по-другому никак. Например, у товара (смартфона) есть характеристики: ширина, высота, глубина, цвет, размер дисплея, объём памяти и тд. Все эти свойства обычно отрисовываются в виде HTML таблицы, это очень удобно и хорошо, ровно выглядит.
Чтобы понять, как это делается, сегодня мы решим такую простую задачу, как создание таблицы умножения:
Приступим
Для начала нужно придумать и понять алгоритм, которому мы будем следовать. Из чего состоит HTML таблица? Давайте я нарисую:
Как видим из рисунка, тег table встречается всего 1 раз, поэтому он явно должен быть вне цикла. Повторяется у нас только строка (tr) и внутри неё ячейки, они же столбцы (td). Всё, больше у нас ничего не повторяется.
Теперь нужно решить, какой цикл лучше использовать для данной задачи. Это классический вариант и лучшим решением будет цикл for, хотя можно использовать и while, если вы к нему привыкли больше. Но нам понадобится не один цикл, а два: первый будет рисовать и считать строки (tr), а второй столбцы (td).
// количество строк, tr $cols = 20; // количество столбцов, td echo '
'. $tr*$td .' | '; > echo '
В первом цикле мы отрисовываем tr, внутри него td. Этот код можно было бы назвать идеальным шаблоном отрисовки любой таблицы, но я знаю, как сделать ещё лучше. Незачем каждый раз напрягать PHP и делать вывод на экран (echo) после каждой итерации, гораздо лучше поместить всё в одно место (переменную) и сделать echo в самом конце, один единственный раз:
// количество строк, tr $cols = 20; // количество столбцов, td $table = '
Для этого мы использовали оператор .= присвоение через конкатенацию. Результат будет точно таким же. Но это ещё не всё. Нам нужно привести нашу таблицу к виду, как на самом первом рисунке в этой статье. То есть сделать первую строку и столбец полужирным и поставить зелёный фон. Такого результата можно добиться двумя способами:
- С помощью CSS3 (правильный способ);
- С помощью PHP (неправильный способ, но возьмём его, так как в этом разделе учим PHP);
Итак, делаем с помощью PHP:
// количество строк, tr $cols = 20; // количество столбцов, td $table = '
'. $tr*$td .' | '; // все ячейки, кроме ячеек из первого столбца и первой строки > > $table .= ''; > $table .= '
Красота 🙂 Можете выводить таблицу хоть 100 на 100. Балуйтесь, как хотите, это полезно для опыта. Спасибо за внимание, и приятных вам выходных!
Как вывести данные в виде таблицы - верстка товарной сетки
Статья состоит из теоретической и практической частей.
В первой части вспомним, как таблицы создаются в HTMl, как работает вывод коллекций с помощью цикла и как разбить коллекцию на строки, чтобы вывести ее в виде таблицы.
Во второй части — примеры. Можете перейти сразу к ней и скопировать верстку подходящей таблицы.
Теоретическая часть
Как это работает в HTML
Например, следующая верстка:
Создает таблицу вида:
Для удобства восприятия ячейки здесь и в остальных примерах отделили друг от друга границей.
Как вывести коллекцию
Принцип работы с коллекциями заключается в том, что мы не записываем код отдельно для каждого его элемента (как в примере выше). Вместо этого мы используем цикл for. Внутри него записываем код, который применяется столько раз, сколько элементов в коллекции.
Например, для вывода названий всех продуктов из коллекции Products.GetBySegment("Novinki").Take(6) напишем:
Данные при этом выводятся в одну строку.
Добавление переноса строки (
) после названия выведет все продукты друг под другом.
Решение — найти способ проходиться циклом по строкам таблицы.
Как разбить коллекцию на строки и ячейки
Используем функцию TableRows .
Она группирует параметр-коллекцию в строки по N элементов. После этого можно вывести строки и колонки таблицы при помощи циклов.
- Index - номер строки в таблице (начиная с 1).
- IsFirst - является ли строка первой.
- IsLast - является ли строка последней.
- ValueCount - сколько в строке ячеек, у которых значение не пустое.
Например, если попытаться разместить список из 8 позиций в виде таблицы с 5 колонками, в первой строке ValueCount будет равен 5, а во второй — 3, потому что во второй строке часть ячеек не будут содержать значения. - Cells - коллекция ячеек в строке. Ячеек всегда столько, сколько указано в качестве параметра функции TableRows, даже если значений в параметре меньше. У каждой ячейки есть поля:
- Index - номер столбца в таблице (начиная с 1).
- IsFirst - является ли ячейка первой.
- IsLast - является ли ячейка последней.
- Value - содержимое ячейки, то есть элемент параметра-коллекции. Именно так обращаемся к значениям отдельных элементов.
Значение Value у ячейки может быть пустым (null), если количество элементов в параметре не делится ровно на количество ячеек. Письмо с ячейкой без значения не сможет сформироваться и отправиться. Поэтому нужно проверять, является ли Value ячейки пустым.
- разбиваем коллекцию на строки таблицы с помощью TableRows ;
- разбиваем строки на ячейки с помощью Cells ;
- проверяем, что ячейка не пустая;
- обращаемся к значению элемена в ячейке с помощью Value .
TableRows лишь отбирает строки в группы. Выводит он их всё равно подряд. Поэтому нужно использовать TableRows вместе с HTML-тегами.
Добавляем в наш пример HTML-теги:
Практическая часть
В качестве примера называем коллекцию Products и выводим название Name.
При переносе в свою рассылку замените их на нужные вам параметры.Пример 1
Выводим все элементы одинаково. Если значения нет, ячейку оставляем пустой.
Пример 2
В ячейках, где нет элемента, выводится плейсхолдер.
Пример 3
В последней строке, в случае недостатка элементов, другая верстка. Например, с объединением ячеек.
Пример 4
У последней строки другой стиль, у каждого первого элемента в строке другой стиль.
Код вёрстки: