簡體   English   中英

PHP / MySQL顯示結果列表

[英]PHP / MySQL Displaying List of Results

我需要一些幫助在PHP中顯示結果。 以下是我的查詢顯示的內容:

SELECT service_names.id, service_names.name as service, service_titles.name 
as title,  user_id  FROM `service_names` INNER JOIN service_titles ON title_id 
= service_titles.id

在此處輸入圖片說明

設計的方式是,我需要顯示如下結果:

<div class="list">
    <h3 class="secondary">Maintenance</h3>
        <ul>
            <li>Wiper Blades</li>
            <li>Air Filter</li>
            <li>Cabin Filter</li>
            <li>Fuel Filter</li>
            <li>Cooling System</li>
            <li>Brake System</li>
            <li>Fuel System</li>
            <li>Trans Fluid Exchange</li>
        </ul>
</div>
<div class="list">
    <h3 class="secondary">Tire Services</h3>
       <ul>
            <li>Tire Rotation</li>
            <li>Flat Repair</li>
            <li>Wheel Balance</li>
            <li>Wheel Alignment</li>
        </ul>
</div>

這是我之前發布的主題 ,它解釋了我的數據庫設計並顯示了其外觀的圖像。 所以基本上我已經准備好了數據庫設計,但是現在我不太確定如何創建查詢以遍歷所有結果並將其保持在上面發布的HTML格式中。

如果有人可以幫助我,我將非常感激。

謝謝!

我認為應該采用這種方法,即為每個“標題”創建一個數組,其中包含該標題下的所有“服務”元素……然后,您只需遍歷每個“標題”數組即可生成子彈:

$query=mysql_query('',[DB_CONNECTION]);
if (!$query){
    //do something  
}
if (!mysql_num_rows($query)){
    //do something for no results   
}

$result_array = array();

while($r=mysql_fetch_array($query)){
    if (!isset($result_array[$r['title']])){
        $result_array[$r['title']] = array();
    }
    $result_array[$r['title']][] = $r['service'];
}

$html = "";
foreach($result_array as $key => $value){
    $html .= "
    <div class=\"list\">
        <h3 class=\"secondary\">$key</h3>
            <ul>";
        foreach($result_array[$key] as $service){
            $html .= "<li>$service</li>\n"; 
        }
    $html .= "</ul></div>";
}

echo $html;

這是結構化的,因此它將適用於與您一樣多的“標題”類型。 (顯然,您需要將sql和連接放在頂部的mysql_query()中。

就我個人而言,我將以不同的方式設計數據庫,並將title放在單獨的表中,但是使用現在的內容,您可以輕松地按title排序並跟蹤當前的title 更改標題后,您需要開始一個新列表。

類似於(偽代碼)的東西:

sql:

SELECT service_names.id, service_names.name as service, service_titles.name as title,  user_id  FROM `service_names` INNER JOIN service_titles ON title_id = service_titles.id ORDER BY `service_names`.`name`

的PHP

$old_title = '';
$title = '';
// start list
foreach ($row = mysql....)
{
  $title = $row['title'];
  if ($title != $old_title)
  {
    // end list
    // start list
    $old_title = $title;
  }
  // add list item
}
// end list

這會有所幫助。

您只需要存儲舊類別即可與新類別進行比較。 (這里假設您已按類別對記錄進行了排序,可以通過ORDER BY輕松完成)

$oldCat ="";
while($newRow = mysql_fetch_row()){
    if($oldCat!=$newRow["title"]) {
        echo '<h3 class="secondary">'. $newRow["title"] . '</h3>';
        echo "<ul>";
    }
    echo '<li>'.$newRow["service"].'</li>';

    if($oldCat!=$newRow["title"]) {
        echo "</ul>";
        $oldCat= $newRow["title"];
    }
}

暫無
暫無

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

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