我在网站上有一个选择项下拉列表,我希望列表中每个类别的总数旁边有一个数字,以显示该类别中项目的总数。当用户从下拉列表中选择类别时,我希望更新目录列表。

我在编码时遇到麻烦。我有一个包含SiteTypes和SiteTypeID的表,称为sitetypes。还有另一个表称为站点,站点中包含数据库中的所有URL,这是我要向用户显示的内容。网址有不同的类别,选择后,我的选择菜单应显示网址的每个类别。我在弄清楚如何显示时遇到麻烦

$sql = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=3";
$sq2 = mysqli_query($dbc, $sql);

$sq3 = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=4";
$sq4 = mysqli_query($dbc, $sq3);

$sq5 = "SELECT COUNT(u.url) as total, u.SiteTypeID, p.SiteType FROM sites AS u LEFT JOIN sitetypes AS p USING (SiteTypeID) WHERE SiteTypeID=5";
$sq6 = mysqli_query($dbc, $sq5);


echo $row['url'] $row['SiteType'];
echo $row2['url'] $row2['SiteType'];
echo $row3['url'] $row3['SiteType'];


我想显示数据库中每个类别的URL总数。任何想法,将不胜感激。我尝试使用while循环,但无法正常工作。

最佳答案

我对要获取的确切内容有些困惑(可以发布一些示例数据和示例输出吗?)。但是,为什么不将3个查询合并在一起呢?

<?php

$sql = "SELECT COUNT(u.url) AS total, u.SiteTypeID, p.SiteType
        FROM sites AS u
        LEFT JOIN sitetypes AS p USING (SiteTypeID)
        WHERE SiteTypeID IN (3, 4, 5)
        GROUP BY u.SiteTypeID, p.SiteType";

if ($sql2 = mysqli_query($dbc, $sql))
{
    while ($row = mysqli_fetch_assoc($sql2))
    {
        echo $row["total"].." - ".$row["SiteTypeID"].." - ".$row["SiteType"]."<br >";
    }
}

?>

关于php - 使用while循环或其他方法消除多余的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22939875/

10-11 04:46