首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过PHP中的其他列获取表组中的数据

如何通过PHP中的其他列获取表组中的数据
EN

Stack Overflow用户
提问于 2019-03-12 05:52:15
回答 2查看 54关注 0票数 0

我在数据库里有这样的记录:

代码语言:javascript
复制
section_id    description    level_id
1             Amethyst       1
2             Betelguise     1
3             Daisy          2
4             Rose           2

我希望它显示在我的php表中,如下所示:

代码语言:javascript
复制
Level 1      
Amethyst     
Betelguise   

Level 2
Daisy
Rose

有人能帮帮我吗?我是新来的。这是我的密码:

代码语言:javascript
复制
<table>
<thead>
<tr>
<th>Descriptions</th>
<th>Level</th>
</tr>
</thead>
                <?php $sql = "SELECT * FROM tbl_sectiontaken"; ?>
                <?php $result = $db->query($sql); ?>
                <?php if ($result->num_rows > 0) { ?>
                    <?php while($row = $result->fetch_assoc()) { ?>
                        <?php $id = $row['section_id'];
                        $desc = $row['description'];
                        $gr = $row['level_id']; ?>
 <tbody>
            <tr>
                <td style="text-transform:capitalized;">
                    <?php echo $desc; ?>
                </td>
                <td style="text-transform:capitalized;">
                    <?php echo $gr; ?>
                </td>
            </tr>
                <?php } ?>
                <?php } ?>
</tbody>
</table>

但它给了我这个表中的结果:

代码语言:javascript
复制
Descriptions    Level
Amethyst        1
Betelguise      1
Daisy           2
Rose            2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 06:36:59

为此,您可以使用group_concat函数。如果适合您的要求,请使用下面的代码

代码语言:javascript
复制
<?php $sql = "SELECT level_id,GROUP_CONCAT(description) AS description FROM series group by level_id"; ?>
<?php $result = $db->query($sql); ?>
<?php if ($result->num_rows > 0) { ?>
    <?php while ($row = $result->fetch_assoc()) { ?>
        <?php
        $id = $row['section_id'];
        $desc = $row['description'];
        $gr = $row['level_id'];
        $leveArr[$gr][] = $desc;// Create an array with level and description
    }  } ?>
</tbody>

<table>
    <tr><!-- header-->
        <?php foreach ($leveArr as $key => $value) { ?>
            <td><?php echo "LEVEL " . $key ?></td>
        <?php } ?>
    </tr>

    <tr>
        <?php foreach ($leveArr as $key => $value) { 
            foreach ($value as $key_1 => $data) { ?>
                <td><?php
                $data = explode(",", $data);

                foreach ($data as $key_2 => $final) {
                    echo $final . "<br>";
                }
                ?></td>
                <?php }


             } ?>
    </tr>

</table>
票数 1
EN

Stack Overflow用户

发布于 2019-03-12 06:24:39

更新的

检查沙箱示例

GROUP_CONCAT更改查询

代码语言:javascript
复制
SELECT  GROUP_CONCAT(if (description ='', null, description)) as description,count(description) as heigher,level_id FROM yourtablename WHERE 1 GROUP BY level_id

和After.They返回数组如下

代码语言:javascript
复制
$arr=[['description'=>'a,b,c,d','level_id'=>'1','heigher'=>'4'],['description'=>'a,b,c,d','level_id'=>'2','heigher'=>'4']]; ?>

然后,最后创建如下表

代码语言:javascript
复制
$sql="SELECT  GROUP_CONCAT(if (description ='', null, description)) as description,count(description) as heigher,level_id FROM yourtablename WHERE 1 GROUP BY level_id";
$result = $conn->query($sql);
   $arr =[];
   if ($result->num_rows > 0) {
     while($row = $result->fetch_assoc()){
       $arr[]=$row;
     }
    }
        <table>
      <thead>
        <tr>
          <?php foreach ($arr as $key => $value): ?>
            <th><?='level'.$value['level_id']?></th>
          <?php endforeach; ?>
        </tr>
      </thead>
      <tbody>
        <?php
           $arr = array_filter($arr,function($a=[]){
             return $a['level_id'] != 0
            }) //filter level not a zero
        $h = max(array_map(function($a=[]){
          return $a['heigher']; //filter array['heigher only']
        },$arr)); // its get the heighest length of description value like [10,15,100]=>100
        foreach ($arr as $key => $value){
           $value['description'] = !empty($value['description']) ?explode(',',$value['description']):'';
           $arr[$key]=$value;
         }
         ?>
          <?php for ($i=0; $i < $h[0]; $i++) {?>
            <tr>
              <?php foreach ($arr as $key => $value): ?>
                <th><?=isset($value['description'][$i])? $value['description'][$i] :''?></th>
              <?php endforeach; ?>
            </tr>
        <?php }?>
      </tbody>
    </table>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55114927

复制
相关文章

相似问题

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