首页 > 解决方案 > 迭代 for 循环以形成自定义 html 表

问题描述

我想通过 db 查询在 php 中形成一个自定义 html 表。我的 sql 查询是

$query = db_select('taxonomy_term_data','td');
    $query->join('drone','dg','dg.tid = td.tid ');
    $query->fields('td',array('tid','name'));
    $query->fields('dg',array('drone_name'));
    $result=$query->execute()->fetchAll(); 

查询返回的数据如下所示:

Drone Name        Drone Assigned
Huge                DJI
Huge                Parrot
Beginner            Skydio
Beginner            Insitu
Beginner            EHANG
 $drone_table='<br/>
  <table id =  width="40%" cellspacing="5" cellpadding="5" border="1" align="center";">
    <th>Drone Name</th> 
    <th>Drones Assigned</th>';

我写了一个for循环语句

foreach ($result as $ts){

      $drones_assigned[] = $ts->name;
      $drn_name = $ts->drone_name;      

    $com_arr = implode(",",$drone_assigned);

    $drone_table.='<tr>
    <td>'.$drn_name.'</td>
    <td>'.$com_arr.'</td>
    </tr>';
}

这不构成我想要的表格。t 形成一个表格,由所有分配的无人机和一架无人机组成。

我想要类似的东西

Drone Name           Drone Assigned
     Huge                 DJI, Parrot
     Beginner             Skydio,Insitu,EHANG

但我越来越

Drone Name        Drone Assigned
    Beginner             DJI, Parrot, Skydio,Insitu,EHANG

标签: phpmysqldrupal-7

解决方案


您可以更改您的 sql 查询以获得如下格式的结果:

$result = db_query("SELECT  dg.drone_name , GROUP_CONCAT(td.name) FROM taxonomy_term_data td
                        INNER JOIN drone dg ON dg.tid = td.tid GROUP BY dg.drone_name")->fetchAllKeyed();


foreach ($result as $drone_name => $drones_assigned){

    $drone_table.='<tr>
    <td>'.$drone_name.'</td>
    <td>'.$drones_assigned.'</td>
    </tr>';
}

你也可以看看drupal的主题表渲染来轻松创建html表https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7.x


推荐阅读