首页 > 解决方案 > sql 使列名不重复并在同一个表中显示所有其他值

问题描述

我不希望 company_name 的列名重复,当我单击折叠引导时,它会显示与 company_name 具有相同名称的表值

这是现在的输出

 <?php 
        $stmt=$conn->prepare("SELECT DISTINCT company_name,project,po_number FROM company");
        $stmt->execute();
        $result=$stmt->get_result();
        ?>
      <div class="accordion" id="accordionExample">
      <?php  while($row = mysqli_fetch_array($result)){?>  
        <div class="card">
          <div class="card-header" >
            <h2 class="mb-0">
            <a class="btn cat" type="button" data-toggle="collapse" href="#c<?=$row['company_name']?>" role="button" aria-expanded="false">
            <?php echo $row['company_name'] ?>
            </a>
            </h2>
          </div>
         
        <div id="c<?=$row['company_name']?>" class="collapse">
        <div class="card-body">
        <div class="table-responsive ">
          <table class="table table-hover table-borderless" id="table1">
            <thead>
                <tr class="text-truncate">
                    <th>Po</th>
                    <th>ชื่อโครงการ&lt;/th>
                    <th>ผู้รับผิดชอบ</th>
                    <th>รายละเอียด</th>
                </tr>
            </thead>
              <tbody>
                <?php $c;  ?>
               <tr class="<?=($c++%2==1) ? 'odd' : 'even' ?>">
                  <td><?php echo $row['po_number'] ?></td>
                  <td><?php echo $row['project'] ?></td>
                  
                </tr> 
                </tbody> 
          </table>        
        </div>
        </div>
        </div>
      <?php  } ?>  
      </div>
      </div>

我想要这样的折叠秀希望你能理解
https://i.stack.imgur.com/ZtwEe.png

标签: phpsql

解决方案


也许从您的结果集中创建一个分组数组结构,然后使用嵌套循环从新结构生成输出是最干净的。

建议代码:

<?php
$sql = "SELECT DISTINCT company_name, project, po_number FROM company";

$grouped = [];
foreach ($conn->query($sql) as $row) {
    $grouped[$row['company_name']][] = [
        'project' => $row['project'],
        'po_number' => $row['po_number']
    ];
}

// now generate markup...
?>
<div class="accordion" id="accordionExample">
  <?php foreach ($grouped as $companyName => $details) { ?>  
    <div class="card">
      <div class="card-header">
        <h2 class="mb-0">
          <a class="btn cat" type="button" data-toggle="collapse"
             href="#c<?=$companyName?>" role="button" aria-expanded="false"
          >
            <?=$companyName?>
          </a>
        </h2>
      </div>
         
      <div id="c<?=$companyName?>" class="collapse">
        <div class="card-body">
          <div class="table-responsive">
            <table class="table table-hover table-borderless">
              <thead>
                <tr class="text-truncate">
                  <th>Po</th>
                  <th>ชื่อโครงการ&lt;/th>
                  <th>ผู้รับผิดชอบ</th>
                  <th>รายละเอียด</th>
                </tr>
              </thead>
              <tbody>
                <?php foreach ($details as $i => $detail) { ?>
                  <tr class="<?=$i & 1?'odd':'even'=>">
                    <td><?=$detail['po_number']?></td>
                    <td><?=$detail['project']?></td>
                    <td></td>
                    <td></td>
                  </tr>
                <?php } ?>
              </tbody> 
            </table>        
          </div>
        </div>
      </div>
    </div>
  <?php  } ?>  
</div>

推荐阅读