javascript - Accordion 的组装结构和循环

标签 javascript php

如何获取正确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 中,我使用两个表,一个保存我的 Accordion 的标题,表名称为 temporadas,该表包含以下字段。

临时餐 table

`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

表情节

我的另一个保存 Accordion 内容的表称为episodios,该表将其内容显示为我的temporadasid_temporada table 等于我的表 episodiosid_temporada,这是我的表。

`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

PHP

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

CSS

.hide{display: none;}

我的困难是我无法使我的 temporadas 表的 nome_temporada 字段仅显示一次,当它有多个 ID 与之对应时,它会添加另一个名称在循环中,我怎样才能使它不发生?

element appears more, than one

最佳答案

选择 T.id、T.id_serie、T.id_temporada、T.nome_temporada、 GROUP_CONCAT(E.nome_episodio) 作为 nome_episodio 来自 temporadas AS T INNER JOIN episodios AS E ON T.id_temporada = E.id_temporada 其中 T.id_serie = 2 按 T.id_temporada 分组

您可以使用其他聚合函数,例如 JSON_ARRAYAGG、JSON_OBJECTAGG 等,而不是 GROUP_CONCAT。

关于javascript - Accordion 的组装结构和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51413907/

相关文章:

php - 正则表达式查找年/月子字符串

php - +1 到 MySQL 数据库中重复条目的值列

javascript - 函数如何获取 'x' 值

javascript - 当第一个初始元素没有与此 jquery 等效的某个类 CSS 时,选择下一个元素

javascript - ER_CON_COUNT_ERROR : Too many connections error in node-mysql

javascript - 动态添加到 Canvas 的图像未加载 JAVASCRIPT

javascript - 用JS选择多个项目

php - 私有(private)消息通知 - 数据库表设计

javascript - 使用 ajax 和 php 加速 select2

php - 执行 xmlhttprequest 然后定向到新的 url 位置