簡體   English   中英

顯示按類別分組的結果

[英]Display results grouped by a category

好吧,我不知道如何更好地稱呼標題,但希望我可以在這里更好地解釋:

我有一個動物數據庫,其中有幾列,其中一列名為Category ,其中包含一個單詞字符串,例如frognewt

我可以在兩個單獨的查詢中成功查詢數據庫中的這些內容,然后分別打印結果,但是理想情況下,我想使用一個查詢,然后將數據拆分以將結果打印到頁面上,但是分為兩個部分,一個用於青蛙,另一個用於一new。

目前我的代碼如下所示:

    $query =    "SELECT * FROM livestock WHERE Category = 'frog' OR Category = 'newt'";

    $result = mysqli_query($con, $query) or die(mysqli_error($con));  

    echo"<div class='rowtable'>";

    while($row = mysqli_fetch_array($result)){

        $commondraft = $entry['Name'];

        echo"<a href='/stocklist/".$entry['id']."/".commonName($commondraft)."' class='row'>";
        echo"<div class='common'>".$entry['Name']."</div>"; 
        echo"<div class='descr'>".$row['Description']."</div>";
        echo"<div class='sex'>".$row['Sex']."</div>"; 
        echo"<div class='age'>".$row['Age']."</div>"; 
        echo"<div class='size'>".$row['Size']."</div>";  
        echo"<div class='origin'>".$row['Origin']."</div>"; 
        echo"<div class='scientific'>".$row['Scientific']."</div>"; 
        echo"<div class='prices'>".$row['Price']."</div>"; 

        echo"</a>";
        }
    echo"</div>";

顯然,這會打印出frognewt這兩個類別的所有條目。 我如何在這里僅選擇一個類別,然后在其他地方使用另一個類別,而不必僅對剩余類別重新查詢數據庫?

您可以執行其他人建議的操作( order by Category ),但是我認為這將是更好的解決方案:當您從livestock表中檢索項目時,可以將它們放在每個類別的單獨數組中。 我的意思是,您可以將$items數組(在我的示例中)用作字典(哈希圖),其中鍵是類別名稱,值是屬於該類別的所有項目的數組。 稍后,當您要輸出某個類別的項目時,只需調用所需類別的output函數即可。 例如(我簡化了輸出;您可以將其用於任何數量的類別。您只需要在getItems更改$query ):

    function getItems($con) {
      $items = array();
      $query =    "SELECT * FROM livestock WHERE Category = 'frog' OR Category = 'newt'";
      $result = mysqli_query($con, $query) or die(mysqli_error($con));  
      while($row = mysqli_fetch_array($result)) {
         $category = $row['Category'];
         if (!isset($items[$category])) {
            $items[$category] = array();
         }
         array_push($items[$category], $row);
      }
      return $items;
   }

   function output($category, $items) {
      echo"<div class='rowtable'>";
      foreach ($items[$category] as $entry) {
          echo"<div class='common'>".$entry['Name']."</div>"; 
      }
      echo"</div>";
   }

   $items = getItems($con); // $con holds connection to database
   output('frog', $items); // prints just items from frog category
   output('newt', $items); // prints just items from newt category

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM