Можно ли отображать данные базы данных в 2 столбца таблицы html, например, в цикле? Я не могу заставить это работать. Или мне нужен другой подход?
Мне нужно, чтобы это повторялось как цикл в 2 столбца <?php echo $row['data']; ?>
Вот что у меня есть:
HTML Table
Col 1 | Col 2
1. aaaa
2. bbbb
3. cccc
4. dddd
5. eeee
6. ffff
7. gggg
8. hhhh
9. iiii
10. jjjj
Это то, что я хочу:
HTML Table
Col 1 | Col 2
1. aaaa 6. ffff
2. bbbb 7. gggg
3. cccc 8. hhhh
4. dddd 9. iiii
5. eeee 10. jjjj
@Chocoprins Хороший сценарий. . . Я ответил на ваш ожидаемый результат, позвольте мне проверить, есть ли у вас какие-либо опасения, вернитесь с комментариями. . .






Это абсолютно возможно.
Все, что вам нужно сделать, это echo чередовать классы, что можно сделать, используя счетчик, который увеличивается по мере того, как вы перебираете строки. Например:
<?php
$count = 0;
foreach ($rows as $row) {
$count++; // Increment a counter
if ($count % 2 == 0 && $count != count($rows)) {
echo "<div class='odd'></div>";
}
else {
echo "<div class='even'></div>";
}
}
?>
И отсюда вы можете использовать CSS для оформления строк в два столбца:
.odd, .even {
width: 50%;
float: left;
}
Или, если вы хотите сделать это с помощью чистого CSS, вы можете использовать flexbox. Все, что вам нужно, это display: flex и flex-wrap: wrap на родителях, а также flex: 50% на дочерних элементах:
.container {
display: flex;
flex-wrap: wrap;
}
.container div {
flex: 50%;
}<div class = "container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>Это также позволит вам сначала заполнить левый столбец, если хотите, используя flex-flow: column wrap и фиксированный height:
.container {
display: flex;
flex-flow: column wrap;
height: 100px;
}<div class = "container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>Спасибо за ваше объяснение. Я понимаю ваше объяснение на 100%. Я хочу интегрировать это в DOMPDF, поэтому весь ваш пример должен быть внутри $html = 'ВАШ ПРИМЕР'; И вот тут на моем пути начинаются сложности. Так что я не знаю, как справиться с этим и заставить его работать.
DomPDF — это, по сути, веб-парсер; вы просто добавляете в него всю структуру HTML. И это включает в себя тег <head>, который, в свою очередь, может включать встроенные стили CSS. Вы бы хотели что-то вроде $html = "<html> <head> <style> {{STYLES HERE}} </style> </head> <body> ... </body>. Вы, вероятно, захотите сохранить все свое «тело» как независимую (строковую) переменную и внедрить его как часть строки $html: $html = <html> ... </head><body>" . $body . "</body>";.
Да, но ваш пример не работает внутри $html
Хм, согласно этот ответ, DomPDF не поддерживает flexbox (или float). Скорее всего, вы застряли с элементами inline-block. Поскольку я сам не знаком с DomPDF, я не могу сильно помочь с конкретным форматированием, которое вам понадобится, извините, но концепция та же. Я добавлю тег к вопросу.
Хорошо, нет проблем. Можете ли вы сказать мне, куда мне нужно поместить <?php echo $row['data']; ?> в вашем примере. Я не уверен на 100%, но пример представляет собой счетчик, поэтому на самом деле у меня нет чисел, но есть текст в шагах, поэтому около 20 шагов. Теперь фокус должен быть на строке таблицы, а не на счетчике, если я прав.
Здесь код для создания динамического столбца и данных, которые могут быть любой длины,
Разделить на 5 групп и сделать это значением столбца. Рабочий результат ниже
<?php
//$row=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
$row=array('aaa','bbbb','cccc','ddddd','eeeee','ffff','gggg','hhhh','iiii','jjjjj','kkkk','llll','mmmm','nnnnn','ooooo');
?>
<table style = "width:50%">
<?php
echo'<tr>';
$i=0;
foreach ($row as $key => $value) {
if (($key)%5==0)
{
$i++;
echo'<th>Col'.$i.'</th>';
}
$a[$i][]=$value;
}
echo'</tr>';
$forcount=count($a);
$innerforcount=count($a[1]);
for ($j=0; $j <$innerforcount ; $j++) {
echo'<tr>';
for($i=1;$i<=$forcount;$i++)
echo'<td>'.$a[$i][$j].'</td>';
echo"</tr>";
}
?>
</table>
//Выход
Col1 Col2 Col3 Col4
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
// Образец с текстом
Col1 Col2 Col3
aaa ffff kkkk
bbbb gggg llll
cccc hhhh mmmm
ddddd iiii nnnnn
eeeee jjjjj ooooo
Раса, большое спасибо, но массив - это не фактические числа, а тексты в 20 шагах.
@Chocoprins18 Отредактировал проверку моего ответа