使用SQL Result查询第二次并通过php获取更多结果

时间:2013-10-20 17:14:26

标签: php mysql dynamic toggle

我从数据库中获取学校名称列表。当用户点击学校名称时,我希望代码获取与用户点击的学校名称相关的2-3个其他属性。

单学校名单的代码:

$query = mysql_query("Select schoolname, product, username, password from credentials c
join products p on p.productid = c.productid
join schools s on s.schoolid = c.schoolid
join icons i on i.productid = p.productid
order by s.schoolname");

echo '<ul>';
while($row = mysql_fetch_array($query))
{                   
echo "<li> <a href='#'>" . $row['schoolname'] . "</a> </li>";
}

echo'';

当前输出:

  • 学校A
  • 学校A
  • 学校B
  • 学校B
  • 学校B
  • C学校
  • C学校

预期输出:

  1. 学校名称仅显示一次(不同的学校名称不起作用,因为每个学校名称都有2-3个产品证书

    • 学校A
    • 学校B
    • C学校
  2. 用户点击学校的能力。然后下面的学校名称将向下移动(切换效果),用户可以看到为学校点击显示的产品,用户名和密码(例如:用户点击学校A)

    • 学校A
    • productname1,用户名,密码
    • productname2,用户名,密码

    • B学校

    • C学校

1 个答案:

答案 0 :(得分:0)

1)您应该使用GROUP BY schoolname,但请注意,这只会为一个唯一的schoolname行提供一个值,因此您可能会丢失一些其他数据。如果您希望一次获取所有数据并且不丢失产品凭证,则可能还需要多个GROUP BY语句

2)这样做的方法很少。您可以一次获取所有需要的数据,生成带有学校和隐藏产品名称的html输出,并通过javascript切换它们。

<div class = "school-name">
    School name 1
    <div class = "product-name" style="display: none;">Product1</div>
    <div class = "product-name" style="display: none;">Product2</div>
    <div class = "product-name" style="display: none;">Product3</div>
</div>

和javascript,我正在使用jquery

$(document).ready(function() {
    $('.school-name').on('click', function(e) {
        $(e.currentTarget).children('.product-name').show();
    }
});

只要您拥有少量数据,此方法就可以正常工作。否则,使用AJAX调用来获取元素的子节点是一种更好的做法。