用while循环或其他方法消除多余的代码

时间:2014-04-08 14:19:55

标签: php mysql sql loops while-loop

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

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

$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'];

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

1 个答案:

答案 0 :(得分:1)

我对你想要得到的东西感到有点困惑(你可以发布一些样本数据和样本输出吗?)。但是为什么不将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 >";
    }
}

?>