У меня есть список результатов футбола, хранящихся в базе данных 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
в некотором качестве, но я не могу понять это.Я использовал ответы на вопросы здесь и здесь в качестве возможных решений.Но я либо заканчивал тем, что повторял сезонные группы, основываясь на том, сколько результатов соответствуют, либо первый результат каждого сезона повторялся многократно.Чего мне не хватает, чтобы получить желаемый результат?
Возможно, я мог бы заставить его работать с вложенным запросом, но меня считают, что этого следует избегать?