【问题标题】:SQL Query echo loop in 2 html table colums2个html表列中的SQL查询回显循环
【发布时间】:2019-09-18 15:31:12
【问题描述】:

是否可以像循环一样将数据库数据回显到 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

【问题讨论】:

标签: php html css pdf dompdf


【解决方案1】:

这里的代码用于创建动态列和数据,可以是任意长度,

分成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

【讨论】:

  • Rasa 非常感谢你,但数组不是实际数字,而是 20 步的文本。
  • @Chocoprins18 编辑了我的答案检查
【解决方案2】:

绝对有可能。

您需要做的就是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: flexflex-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 = 'YOUR EXAMPLE';正是在这里,我的方式开始变得棘手。所以我不知道如何处理这个问题并让它发挥作用。
  • DomPDF 基本上是一个网络解析器;您只需将整个 HTML 结构添加到其中。这包括&lt;head&gt; 标签,它又可以包含内联 CSS 样式。你会想要像$html = "&lt;html&gt; &lt;head&gt; &lt;style&gt; {{STYLES HERE}} &lt;/style&gt; &lt;/head&gt; &lt;body&gt; ... &lt;/body&gt; 这样的东西。您可能希望将整个“正文”保存为独立(字符串)变量,并将其作为$html 字符串的一部分注入:$html = &lt;html&gt; ... &lt;/head&gt;&lt;body&gt;" . $body . "&lt;/body&gt;";
  • 是的,但是您的示例在 $html 中不起作用
  • 嗯,根据this answer,DomPDF 不支持 flexbox(或浮动)。您可能会被inline-block 元素所困扰。由于我本人对 DomPDF 并不熟悉,因此对于您需要的特定格式我无能为力,抱歉,但概念是相同的。我会将标签添加到问题中。
  • 好的,没问题。你能告诉我我需要把 在你的例子中。我不是 100% 肯定,但这个例子是一个计数器,所以我实际上没有数字,而是分步显示文本,所以大约 20 步。如果我正确的话,现在焦点必须在表格行而不是计数器上。
猜你喜欢
  • 2021-07-27
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2017-10-21
相关资源
最近更新 更多