2017-09-26 52 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個查詢,或在結果集,它會告訴你,這是否是一個標題行或正文行的標誌。

相關問題