如何在不重复父表的ID名称的情况下获得正确ID的名称?
JS
$(function() {
$('.titulo').click(function() {
var conteudo = $(this).parent().find('.conteudo');
if (!conteudo.hasClass('show')) {
$('.caixa').find('.show').slideUp('fast', function() {
$(this).addClass('hide').removeClass('show');
});
conteudo.slideDown('fast', function() {
$(this).addClass('show').removeClass('hide');
});
}
});
});
在PHP中,我使用两个表,一个表保存我的手风琴的标题,表名是temporadas
,该表包含以下字段。
表TEMPORADAS
`id` int(11) NOT NULL //auto increment
`id_serie` int(11) NOT NULL //identifies which ID to display my accordion
`id_temporada` int(11) NOT NULL //identifies the ID of my accordion
`nome_temporada` varchar(90) NOT NULL //name displayed on the accordion
表EPISODIOS
另一个保存我的手风琴呼叫内容episodios
的表,并且该表显示其内容,因为id_temporada
表的temporadas
等于{{1} } id_temporada
中的},这是我的桌子。
episodios
PHP
`id` int(11) NOT NULL //auto increment
`id_serie` int(11) NOT NULL //identifies which ID to display my accordion
`id_temporada` int(11) NOT NULL //identifies the ID of my accordion
`nome_episodio` varchar(100) NOT NULL //contents of my accordion
CSS
$url = explode("/",$_GET['url'],-1);
$url = $url[1];
if(isset($_GET['id_serie'])){
$id_serie = $_GET['id_serie'];
}
$temporadas = "SELECT * FROM `temporadas` AS T INNER JOIN `episodios` AS E ON T.`id_temporada` = E.`id_temporada` WHERE T.`id_serie` = '$url'";
$temporadasShow = mysqli_query($conn, $temporadas);
while($show = mysqli_fetch_assoc($temporadasShow)){
echo '
<div class="caixa">
<a href="javascript:void(0)" class="titulo"><i class="fa fa-check"></i> '.$show['nome_temporada'].'</a>
<div class="conteudo hide">
'.$show['nome_episodio'].'
</div>
</div>
';
}
我的困难是我无法使.hide{display: none;}
表的nome_temporada
字段仅显示一次,当它具有多个对应的ID时,它将在循环中添加另一个名称,如何我做到了,所以它不会发生?
答案 0 :(得分:1)
SELECT T.id,T.id_serie,T.id_temporada,T.nome_temporada,
GROUP_CONCAT(E.nome_episodio)作为nome_episodio
从temporadas
开始
内联episodios
如E
T。id_temporada
= E。id_temporada
T。id_serie
= 2 BY BY T.id_temporada
您可以使用其他聚合函数(例如JSON_ARRAYAGG,JSON_OBJECTAGG等)代替GROUP_CONCAT。