2015-12-02 201 views
1

需要以表格形式顯示mysql表格中檢索到的數據,但沒有得到我計劃的正確顯示。這是我希望它看起來像 Target display以php表格形式從mysql數據庫以php的形式顯示數據

但是,這是我根據我的代碼是什麼得到 Current display

這是HTML代碼

<div> 
     <table class="table table-striped table-hover"> 
      <thead> 
       <tr> 
        <th>First Name</th> 
        <th>Last Name</th> 
        <th>Department</th> 
        <th>Action</th> 
       </tr> 
      </thead> 
      <tbody> 

       <?php 
        $staff_set = find_all_employee(); 
        while ($staff = mysqli_fetch_assoc($staff_set)) { 
         //display staff first name, last name, department and action (edit and delete links) 
       ?> 
       <tr> 
        <td> 
         <?php 
          echo $staff["first_name"]; 
          } 
         ?> 
        </td> 

        <?php 
         $staff_set = find_all_employee(); 
         while ($staff = mysqli_fetch_assoc($staff_set)) { 
          //display staff last name 
        ?> 
        <td> 
         <?php 
          echo $staff["last_name"]; 
          } 
         ?> 
        </td> 

        <?php 
         $staff_set = find_all_employee(); 
         while ($staff = mysqli_fetch_assoc($staff_set)) { 
          //display staff department 
        ?> 
        <td> 
         <?php 
          echo $staff["department"]; 
          } 
         ?> 
        </td> 

        <td> 
         <a href="edit_admin.php"><span class="glyphicon glyphicon-pencil"> Edit</span></a> 
         &nbsp 
         <a href=""><span class="glyphicon glyphicon-trash"> Delete</span></a> 
        </td> 
       </tr> 

      </tbody> 
     </table> 
    </div> 

下面是使用我的功能從我的員工列表中找到所有員工的列表

function find_all_employee() { 
    global $connection; 

    $query = "select * from staff"; 
    $staff_set = mysqli_query($connection, $query); 
    confirm_query($staff_set); 
    return $staff_set; 
} 

Is there一個更好的方式來編寫循環並以正確的方式顯示我的數據?我查了類似的線程,但仍然無法掌握。

+1

爲什麼你調用find_all_employee()函數3次? – Stavros

回答

1

我不明白你爲什麼調用這麼多的領帶功能,以及爲什麼做這麼多循環。讓我嘗試科幻代碼:

<div> 
    <table class="table table-striped table-hover"> 
     <thead> 
      <tr> 
       <th>First Name</th> 
       <th>Last Name</th> 
       <th>Department</th> 
       <th>Action</th> 
      </tr> 
     </thead> 
     <tbody> 
     <?php 
      $staff_set = find_all_employee(); 
      while ($staff = mysqli_fetch_assoc($staff_set)) { 
       //display staff first name, last name, department and action (edit and delete links) 
     ?> 
      <tr> 
       <td> 
        <?php echo $staff["first_name"]; ?> 
       </td>    
       <td> 
        <?php echo $staff["last_name"]; ?> 
       </td> 
       <td> 
        <?php echo $staff["department"]; ?> 
       </td> 
       <td> 
        <a href="edit_admin.php"><span class="glyphicon glyphicon-pencil"> Edit</span></a> 
         &nbsp 
        <a href=""><span class="glyphicon glyphicon-trash"> Delete</span></a> 
       </td> 
      </tr> 
     <?php 
     } 
     ?> 
     </tbody> 
    </table> 
</div> 
+0

您可能還需要編輯上面的代碼以包含'while'循環的右括號。 – Todd

+0

仍在編輯,以使其更具可讀性,謝謝 – Standej

+0

此代碼片段也可以通過在任何HTML打印之前執行數據庫查詢來改進。只需將結果存儲在數組中,然後在HTML表格內使用'foreach'循環訪問數組。這將更好地反映PHP腳本和HTML代碼的不同責任,並且還允許更容易的錯誤處理(如果發生數據庫錯誤或沒有找到記錄等)。 – Todd

0

由於OP要求在評論一個改變技術:

<?php 
// Select all staff first name, last name, and department info 
$staff_set  = find_all_employee(); 
$staff_results = array(); 
while ($staff = mysqli_fetch_assoc($staff_set)) { 
    $staff_results[] = $staff; 
} 
?> 

<div> 
    <table class="table table-striped table-hover"> 
     <thead> 
      <tr> 
       <th>First Name</th> 
       <th>Last Name</th> 
       <th>Department</th> 
       <th>Action</th> 
      </tr> 
     </thead> 
     <tbody> 
     <?php if (!empty($staff_results)): ?> 
      <?php foreach($staff_results as $staff_member): ?> 
      <tr> 
       <td> 
        <?= $staff_member["first_name"]; ?> 
       </td>    
       <td> 
        <?= $staff_member["last_name"]; ?> 
       </td> 
       <td> 
        <?= $staff_member["department"]; ?> 
       </td> 
       <td> 
        <a href="edit_admin.php"><span class="glyphicon glyphicon-pencil"> Edit</span></a> 
         &nbsp 
        <a href=""><span class="glyphicon glyphicon-trash"> Delete</span></a> 
       </td> 
      </tr> 
      <?php endforeach; ?> 
     <?php else: ?> 
      <tr><td colspan="4">No Staff Members Found.</td></tr> 
     <?php endif; ?> 
     </tbody> 
    </table> 
</div> 

這還引入了更換呼叫echoshort tag語法(<?=)。如果您的PHP版本是< 5.4,請閱讀this thread。這也引入了control structure alternate syntax,爲了更好的閱讀HTML。上述方法分離了從HTML表示中選擇數據的關注點。這樣可以更輕鬆地進行調試,以及將來的適應和模塊化應用程序。

+0

這是非常有用的,我將使用它正在工作的另一個頁面,看看它是如何去。 – Mena