所以我有一个电视节目网站,我创建了自定义列表,你可以添加你想要的任何电视节目。
有一个名为lists的表(带有user_id,list_title)和另一个名为show_lists的表,其中包含(list_id,show_id)。
所以我的PHP就在那里:
<?php
$findlistsq = $conn->prepare('SELECT * FROM show_lists, shows, lists
WHERE lists.user_id = :user_id AND
lists.list_id = show_lists.list_id AND
shows.id = show_lists.show_id');
$findlistsq->execute(array(':user_id' => 2));
$listscount = $findlistsq->rowCount();
echo $listscount;
$list = array();
while ($listarray = $findlistsq->fetch()) {
$list[$listarray['list_title']][$listarray['name']] = $listarray;
}
?>
<?php
foreach ($list as $key => $show) {
echo $key; //echo title of list
foreach ($show as $key => $value) {
echo $value['name']; //echo tv shows
;
}
}
?>
基本上,我创建了一个数组来将列表加入到其电视节目中,显示列表的标题及其包含的内容等等。我的问题是:我只想在有超过3个节目(至少3个不同的$值)时显示列表。
有人能告诉我怎么做吗?谢谢!!
编辑:此外,我可能有可能过于复杂。如果我这样做,请告诉我。
答案 0 :(得分:1)
您对数据的解释并不是很好,但您可以尝试在SELECT
语句中执行此操作,这比使用数组搞乱更快。
$findlistsq = $conn->prepare('SELECT *
FROM show_lists, shows, lists
WHERE
lists.user_id = :user_id AND
lists.list_id = show_lists.list_id AND
shows.id = show_lists.show_id AND
COUNT(DISTINCT shows.id) > 3');
这会计算DISTINCT
(唯一)展示ID,如果有超过3个DISTINCT
展示ID,则只会返回一个数据集。
答案 1 :(得分:0)
您需要查看is_array()和count()
$list = array('show1','show2','show3');
if(is_array($list)){
if(count($list) > 3){
//more than 3 shows found, execute code!
}
}