我从数据库中获取学校名称列表。当用户点击学校名称时,我希望代码获取与用户点击的学校名称相关的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'';
当前输出:
预期输出:
学校名称仅显示一次(不同的学校名称不起作用,因为每个学校名称都有2-3个产品证书
用户点击学校的能力。然后下面的学校名称将向下移动(切换效果),用户可以看到为学校点击显示的产品,用户名和密码(例如:用户点击学校A)
productname2,用户名,密码
B学校
答案 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调用来获取元素的子节点是一种更好的做法。