首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在表中每一个i ==1th时间回显元素?

问如何在表中每一个i ==1th时间回显元素?
EN

Stack Overflow用户
提问于 2018-05-26 20:58:58
回答 2查看 43关注 0票数 0

Note "$db“是我的数据库类的一个实例,"getRows()”是该类中的一个自定义函数。

我有一个jQuery数据表,我需要用数据(域名和MX记录)填充它。我需要把它印在桌子上:

代码语言:javascript
复制
domain1 |   MX Record1
        |   MX Record2

domain2 |   MX Record1
        |   MX Record2
        |   MX Record3

它以纯文本的形式使用以下代码:

代码语言:javascript
复制
foreach ($records = $db->getRows("select name, group_concat(content) from records where type='MX' group by name", ['']) as $record) {

    $strings = explode(",", $record['group_concat(content)']);
    $name = $record['name'];
    $count = 0;
    foreach($strings as $string => $mx) {
        $count++;
        if($count <= 1 ) {
            echo "<strong>" . $name . "</strong> | " . $mx;
        }
        else {
            echo "----------------------- | " . $mx;
        }
        echo " -- Count: " . $count . "<br>";

    }
    echo "<br>";

}

产出如下:

代码语言:javascript
复制
domain1.com | xxxx.xxxxxxxxxxxxx.com -- Count: 1
----------- | xxxx.xxxxxxxxxxxxx.com -- Count: 2
----------  | xxxx.xxxxxxxxxxxxx.com -- Count: 3

domain2.net | xxxx.xxxxxxxxxx.net -- Count: 1
----------- | xxxx.xxxxxxxxxx.net -- Count: 2

domain3.com | xxxx-xxxxxx.xxxxxxxxxxxxxxxxx.com -- Count: 1
----------- | xxxx-xxxxxxx.xxxxxxxxxxxxxxxxx.com -- Count: 2
----------  | xxxx-x.xxxxxxxxxxxxxxxxxxxx.com -- Count: 3

然而,在我的表中,输出是可怕的。以下是所有内容的代码(减去CSS):

代码语言:javascript
复制
<div class="container">
     <table id="mx_report_table" class="table table-bordered" >
          <thead>
          <tr>
               <th>Name</th>
               <th>MX Record</th>
          </tr>
          </thead>
          <tbody>
          <?php

          foreach($records = $db->getRows("SELECT name, group_concat(content) FROM records WHERE type='MX' GROUP BY name", ['']) as $record) {
              $strings = explode(",", $record['group_concat(content)']);
              $name = $record['name'];
              $count = 0;


              foreach($strings as $string => $mx) {
                  $count++;
                  if($count <= 1) {
                      echo "<tr><td>$name</td><td>$mx</td></tr>";
                  }
                  else {
                      echo "<tr><td></td><td>$mx</td></tr>";
                  }

              }
          }
          ?>
          </tbody>
     </table>
</div>
</body>
<script>
    document.title='MX Report';
    $(function() {
        $('#mx_report_table').DataTable({
            "scrollY":"400px",
            "scrollCollapse":true,
            "paging":true,
            "lengthMenu":[10,25,50,100],
            "pageLength":25
        });
    });
</script>

这张表是这样的:

​

​

如果我基本上(至少我认为)在我的桌子上做同样的事情的话,我哪里出了问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-26 21:47:27

正如我在注释中已经提到的,是DataTable插件(有意)通过根据第一列的值对所有行进行排序而造成混乱。将"order": false添加到数据表选项中,以禁用排序能力。

代码语言:javascript
复制
$('#mx_report_table').DataTable({
    "scrollY":"400px",
    "scrollCollapse":true,
    "paging":true,
    "lengthMenu":[10,25,50,100],
    "pageLength":25,
    "order": false
});

演示:https://jsfiddle.net/bep6uvfo/1/

票数 1
EN

Stack Overflow用户

发布于 2018-05-26 21:50:22

是的,每个域都有相应的mx记录。

您只需循环并将数据输出到表:

代码语言:javascript
复制
foreach($strings as $string => $mx) {
    echo "<tr>
              <td>$name</td>
              <td>$mx</td>
          </tr>";
}

您的表只需一行一行地看起来相同,在name列下保留一个单元格空白,这就使读者不得不“假定”实际上并不缺少域名,但他们应该考虑到前面的域名与多个MX记录有关。

我建议将标题作为域名和每个域名标题下的所有相应MX记录的单独章节。比如空行之类的。

我会取消对db调用的循环,因为所有的事情都可能出错。只需从数组中的DB中获取数据,用数组中的所有名称对应的MX记录循环数组中的每个域名,并将名称作为标题行,然后MX记录在下面的行中,然后下一个名称作为标题行,其MX记录在下面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50546949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档