繁体   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