2017-09-26 51 views
1

所以我有一个网站,我正在开发的工作。它允许销售人员进入并输入日期范围和首字母缩写,并查询我的数据库,并将表格返回给他们以及他们的数据。我拉的列数取决于他们选择的日期范围。时间越长,列数越高(我将它逐周分隔,所以更多的天数= mores周)在我的网站上使用带有动态头的数据表显示mysql结果

我遇到的问题是,当我动态地拉列标题时,使用for循环从mysql查询中抓取标题,这样它就是动态的,我不必为每个他们可以选择的每一个情况编码,标题替换了我表中的第一项,所以我失去了1行。

我想知道是否有人有任何经验,动态获取MySQL查询集的列标题,并使用它们与数据表?

我不想粘贴大量的代码和群集这篇文章,让我知道你想看到什么,我会提供它。

非常感谢您提供的所有帮助,我希望我不会对我的问题感到困惑。

下面是代码样本:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = ""; 

$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection Failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM sampleTable"; 

$result = $conn->query($sql); 
$conn->close(); 
?> 

<div class="card mb-3"> 
    <div class="card-header"> 
     <i class="fa fa-table"></i></div> 
    <div class="card-body"> 
     <div class="table-responsive"> 
      <table class="table table-bordered" id="adminTable" width="100%" cellspacing="0"> 
       <thead> 
        <?php 
        if ($result->num_rows > 0) { 
         echo "<tr>"; 
         foreach(array_keys($result->fetch_assoc()) as $field){ 
          echo "<th>" . $field . "</th>"; 
         } 
         echo "</tr>"; 
        } else { 
         echo "<h1 align=\"center\">No Results Found</h1>"; 
        } 
        ?> 
       </thead> 
       <tbody> 
        <?php 
        if ($result->num_rows > 0) { 
         while($data = $result->fetch_assoc()) { 
          echo "<tr>"; 
          foreach ($data as $field => $value){ 
           echo "<td>" . $value . "</td>"; 
          } 
          echo "</tr>"; 
         } 
        } 
        ?> 
       </tbody> 
      </table> 
     </div> 
    </div> 
    <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div> 
</div> 

<!--Not included in current file - included in base php--> 
<script type="text/javascript"> 
    $('#dataTable').DataTable({ 
     "scrollX": true, 
     "scrollY": '55vh', 
     "scrollCollapse": true, 
     "paging": false, 
     dom: 'iftB', 
     buttons: [ 
     'copy', 'csv', 'excel', 'pdf', 'print' 
     ] 
    }); 
</script> 
+0

您_need to_我们展示的代码。你是否在1个查询中获得了所有内容(标题+正文),还是分开执行?我会先从2个不同的查询开始,然后将它们结合起来。 – waterloomatt

+0

@waterloomatt我发布了代码,我在一个查询中做了它,但是我已经在两个单独的查询中尝试了它,它仍然产生了同样的问题。 – MichaelJC

+0

此任务的通用术语是* pivoting *您的表格。 –

回答

1

只要把第一个结果提取到一个变量,然后获取其他行之前呼应它:

<table class="table table-bordered" id="adminTable" width="100%" cellspacing="0"> 
      <thead> 
       <?php 
       if ($result->num_rows > 0) { 
        echo "<tr>"; 
        $firstRow = $result->fetch_assoc(); 
        foreach(array_keys($firstRow) as $field){ 
         echo "<th>" . $field . "</th>"; 
        } 
        echo "</tr>"; 
       } else { 
        echo "<h1 align=\"center\">No Results Found</h1>"; 
       } 
       ?> 
      </thead> 
      <tbody> 
       <?php 
       if ($result->num_rows > 0) { 
         echo "<tr>"; 
         foreach ($firstRow as $field => $value){ 
          echo "<td>" . $value . "</td>"; 
         } 
         echo "</tr>"; 

        while($data = $result->fetch_assoc()) { 
         echo "<tr>"; 
         foreach ($data as $field => $value){ 
          echo "<td>" . $value . "</td>"; 
         } 
         echo "</tr>"; 
        } 
       } 
       ?> 
      </tbody> 
     </table> 
0

$result->fetch_assoc()不前进结果集的下一行,但你可以手动触发,通过$result->data_seek(2)。输出标题行后执行此操作。

http://php.net/manual/en/mysqli-result.data-seek.php

但同样,你应该打破这种成2个查询,或在结果集,它会告诉你,这是否是一个标题行或正文行的标志。

相关问题