Я пытаюсь вывести HTML-таблицу из базы данных. Но этот код выбирает только первый результат прогнозирования для каждого пользователя и записывает его заново в каждом столбце пользователей. Я действительно не знаю, что изменить в коде. Я возился с различными вопросами к базе данных и изменил цикл for на цикл foreach. Ничего не работает Бьюсь головой об стену. Что изменить, чтобы сделать это правильно? Пример вывода кода здесь. http://www.fotbolltipset.se/2020/matcher2.php
Обновить! Код переписан Я переписал код и теперь получаю все данные из базы данных. Но вывод все еще выглядит странно. Что я делаю не так в циклах while?
$matcher = mysqli_query($conn, "SELECT * ,DATE_FORMAT( gamedate, '%d %M' ) AS gamedate FROM matcher LIMIT 0 , 48");
$sql = "SELECT A.namn, enamn, SUM( B.points ) + ( C.points ) AS points
FROM userdata A
LEFT OUTER JOIN matchtips B ON ( A.user_id = B.user_id )
LEFT OUTER JOIN extratips C ON ( A.user_id = C.user_id )
WHERE paid = '1'
GROUP BY A.user_id
ORDER BY enamn, namn";
$games = $conn->query($sql);
$numofrows = mysqli_num_rows($games);
$sql = "SELECT A.namn, enamn, B.*
FROM userdata A
LEFT OUTER JOIN matchtips B ON ( A.user_id = B.user_id )
WHERE paid = '1'
GROUP BY matchid,enamn,namn";
$predictions = $conn->query($sql);
print "<div align=center>";
print "<table class=\"kantlinje\" bgcolor=\"#F9F9F9\" border=\"0\" cellpadding=\"4\" cellspacing=\"3\">";
print "<tr><td width=275 colspan=6 class=streck3> <span class=mrubrik> Summa poäng</td>";
$rows = array();
while ($row = mysqli_fetch_array($games))
{
$rows[] = $row;
$class = ($class == 'raknaodd') ? 'raknaeven' : 'raknaodd';
print "<td class=$class width=60 align=center colspan=2>";
print "<span class=mrubrik>";
print "{$row["points"]}";
print "</td>";
}
print "</tr>";
print "<tr><td width=40 align=center> <span class=mrubrik> Datum</td>";
print "<td width=50 align=center> <span class=mrubrik>Grupp</td>";
print '<td width=130> <span class=mrubrik>Match</td>';
print '<td width=70 colspan=3> <span class=mrubrik>Resultat</td>';
foreach($rows as $row)
{
$class2 = ($class2 == 'raknaodd') ? 'raknaeven' : 'raknaodd';
print "<td class=$class2 width=60 colspan=2 align=center>";
print "{$row["namn"]}<br />{$row["enamn"]}</td>";
}
print "</tr>";
while ($matchline = mysqli_fetch_assoc($matcher))
{
$homegoal = ($matchline['homegoal'] == '') ? null : (int)$matchline['homegoal'];
$awaygoal = ($matchline['awaygoal'] == '') ? null : (int)$matchline['awaygoal'];
print "<tr>";
print "<td width=40>";
print "<span class=Text4> ";
print ($matchline["gamedate"]);
print "</td>";
print "<td width=50 align=center>";
print "<span class=Text4>";
print ($matchline["group"]);
print "</td>";
print "<td width=130>";
print "<span class=Text4>{$matchline["hometeam"]}-{$matchline["awayteam"]}</td>";
print "<td width=30 align=center>";
print "<span class=Text4>{$matchline["homegoal"]}-{$matchline["awaygoal"]}</td>";
print "<td width=20 align=center>";
print "<span class=Text4>{$matchline["sign"]}</td>";
print "<td width=20> </td>";
$n = $numofrows;
$i = 0;
while ($predictline = mysqli_fetch_assoc($predictions))
{
$home_p = $predictline['homescore'];
$away_p = $predictline['awayscore'];
$tip = $predictline['sign'];
if ($i % 2)
{
$color12 = 'raknaeven';
}
else
{
$color12 = 'raknaodd';
}
$colors1 = array(
0 => $color12,
1 => 'rakna3'
);
$colors2 = array(
0 => $color12,
1 => 'rakna1'
);
$color1 = $color12;
$color2 = $color12;
if (!empty($tip) && $homegoal !== null)
{
$color1 = $colors1[(int)($home_p == $homegoal && $away_p == $awaygoal) ];
$color2 = $colors2[(int)(($homegoal == $awaygoal && $tip == 'X') || ($homegoal > $awaygoal && $tip == '1') || ($homegoal < $awaygoal && $tip == '2')) ];
}
print "<td width=45 class=$color1 align=center>";
print "{$home_p}-{$away_p}";
print "</td>";
print "<td width=15 class=$color2 align=center>";
print "{$tip}";
print "</td>";
$i++;
if ($i == $n)
{
echo "<tr>";
$i = 0;
}
}
}
print "</td>";
print "</tr>";
print "</table>";
print "</div>";
Задача ещё не решена.
Других решений пока нет …