php - Аккордеонный контент с использованием PHP / MySQL Query Data - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть список результатов футбола, хранящихся в базе данных MySQL.Когда результат соответствует определенным критериям, я смог использовать запрос PHP / SQL для создания статического списка, где каждый результат группируется по соответствующему сезону, используя предоставленное решение здесь .

Структура таблицы, из которой я перебираю данные (плюс пример данных), такова:

Date          Season          Comp          Opponent          Score          Match ID
======================================================================================
1980-08-16    1980-1          UCL1          2                 3-2            1
1980-09-23    1980-1          UCL1          4                 1-0            5
1981-01-13    1980-1          UCL1          11                0-2            20
1982-03-24    1981-2          UCLP          9                 2-2            42
1982-09-15    1982-3          UCLP          24                0-0            58
1982-12-12    1982-3          UCLP          20                4-1            74
1983-02-04    1982-3          UCLP          26                0-2            90
1983-05-01    1982-3          UCLP          25                1-1            104

Используя приведенное выше связанное решение, я могу перенести данные всоздайте базовый статический список, подобный следующему:

1980-1
- Result 1: 1980-08-16, 3-2 (vs. 2)
- Result 2: 1980-09-23, 1-0 (vs. 4)
- Result 3: 1981-01-13, 0-2 (vs. 11)
1981-2
- Result 4: 1982-03-24, 2-2 (vs .9) 
1982-3
- Result 5: 1982-09-15, 0-0 (vs. 24)
- Result 6: 1982-12-12, 4-1 (vs. 20)
... and so on

Но вместо того, чтобы показывать результаты в статическом списке, цель состоит в том, чтобы использовать эти данные для динамической генерации аккордеона jQuery - используя отдельные сезоны в качестве кнопок панели / headers и последующая фильтрация релевантных результатов в panel-body .Запрос / код, который я до сих пор разработал, чтобы попытаться достичь этого:

$query = "SELECT mt.ID,mt.ID1,re.date,re.season,re.venue,re.comp,re.opponent,re.score,ce.name,ce.ID,re.ID FROM resultengine re INNER JOIN matchteam mt ON re.ID=mt.ID INNER JOIN clubengine ce ON re.opponent=ce.ID WHERE (mt.ID1='0' or mt.ID1='9998') ORDER BY re.season ASC, re.date ASC";
$result2 = mysqli_query($mysqli, $query) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($mysqli), E_USER_ERROR);
$totalRows = mysqli_num_rows($result2);

if($result2) {
    if ($totalRows == 0) {
        echo "<p>No games here</p>";
    }
    else {
        while ($row = mysqli_fetch_array($result2)) {
        {$yearonly = date("l d F Y",strtotime($row['2']));}
        if($row['3'] != $season) {
            echo "<button class='accordion'>";
            echo $row['3'];
            $season = $row['3'];
            echo "</button>";
        }
        echo "<div class='panel'>";
        echo "<h4 class='result-date'>".$yearonly."</h4>";
        echo "<div class='result-info'>";
            echo "<a href='/seasons/match/".$row['10']."/' class='result-data result-link'>";
            echo "<span class='result-column sidebar-comp'>".$row['5']."</span>";   
            echo "<span class='result-column sidebar-venue'>".$row['4']."</span>";
            echo "<span class='result-column sidebar-team'>".$row['8']."</span>";
            echo "<span class='result-column sidebar-score'>";
                echo "<span class='player-score-box'>";
                    echo "<span class='player-score-main'>".$row['7']."</span>";
                echo "</span>";
            echo "</span>"; 
            echo "</a>";
            echo "</div>";
        echo "</div>";
        }
    }
} 

Я знаю, что этот текущий код создаст новый <div class='panel'> для каждого отдельного результата.Таким образом, это означает, что один результат виден под каждым сезоном - живой пример - здесь .Чтобы он отображался так, как предполагалось, с всеми результатами одного сезона, показанными на соответствующей панели, я пропускаю шаг (или компонент) в своем запросе - и я не могу понять, что это такое.

Моя первоначальная мысль: мне нужно использовать foreach в некотором качестве, но я не могу понять это.Я использовал ответы на вопросы здесь и здесь в качестве возможных решений.Но я либо заканчивал тем, что повторял сезонные группы, основываясь на том, сколько результатов соответствуют, либо первый результат каждого сезона повторялся многократно.Чего мне не хватает, чтобы получить желаемый результат?

Возможно, я мог бы заставить его работать с вложенным запросом, но меня считают, что этого следует избегать?

...