было бы удивительно, если бы кто-то мог мне помочь в этом, пожалуйста, я действительно не знаю, как его решить, и я разрушал свои мозги (и книги и интернет) в течение некоторого времени, не понимая, что мне нужно делать. Я не программист никоим образом, чисто самоучкой, поэтому, пожалуйста, примите мои извинения, если это кажется легким. Я создал базу данных для футбольного сайта фэнтезийной лиги и получил правильные запросы для результатов и таблицы, я просто хочу добавить запрос, который показывает еженедельные результаты от менеджера, и от этого, которые игроки забили для этих менеджеров (команда без менеджера имеет один и тот же игрок), пример такие как:Использование вложенных циклов foreach из многомерных массивов в php mysql
(таблица заголовки: неделя> Менеджер> Для> против> Голов) 2 Manager1 3-0 (игрок 1, игрок 2 б) 2 Manager2 1-2 (игрок f 1) 2 Менеджер3 4-1 (игрок g 2, игрок x 2)
Я использую много соединений для получения моих результатов и экспериментировал с вложенными петлями foreach, думая, что Мне нужно сделать отдельный цикл foreach для итерации через любого игрока из каждая команда, которая забила (т. е. вытащила из списка игроков, у которых есть цели больше 0), но имела смешанные результаты - ничто из того, что мне нужно!
Вот мой код, от контроллера индекса до html, отображающего петли foreach. Если кто-то может помочь или имеет какие-то идеи, я действительно был бы благодарен.
if (isset($_GET['action']) and $_GET['action'] == 'scorers')
{
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';
$sql = "SELECT Wk.week as ptsweeks, managers.managerid as ID, managers.manager as Manager, CASE when sum(Wk.goals)>GA.goals then '3' when sum(Wk.goals)=GA.goals then '1' when sum(Wk.goals)<GA.goals then '0' END as PTS, sum(Wk.goals) as F, GA.goals as A, case when Wk.goals>'0' then concat(Wk.name,' ',Wk.goals) end as goalscs
from weeks2012 as Wk
inner join goalsAgainst2012 as GA
inner join strikers2012 as ST
inner join defences2012 as DEF
inner join managers
on
Wk.week = GA.week and
DEF.managerid = ST.managerid and
ST.playerid = Wk.playerid and
DEF.defenceid = GA.defenceid and
managers.managerid = ST.managerid
where Wk.week = '$weekWK'
group by managers.managerid";
$result = mysqli_query($link, $sql);
if (!$result)
{
$error = 'Error updating submitted article.';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
exit();
}
while ($row = mysqli_fetch_array($result))
{
$weeks[] = array(
'table' => array('ptsweeks' => $row['ptsweeks'], 'ID' => $row['ID'], 'Manager' => $row ['Manager'], 'F' => $row['F'], 'A' => $row['A'], 'PTS' => $row['PTS']),
'gs' => array('goalscs' => $row['goalscs'])
);
}
include 'scorers_html.php';
}
** from scorers_html.php :
<table>
<?php foreach($weeks as $key => $gls): ?>
<tr>
<td> <?php echo $gls['table']['ptsweeks']; ?> </td>
<td> <?php echo $gls['table']['Manager']; ?> </td>
<td> <?php echo $gls['table']['F']; ?> </td>
<td> <?php echo $gls['table']['A']; ?> </td>
<td> <?php echo $gls['table']['PTS']; ?> </td>
</tr>
<?php foreach($weeks as $key => $gls): ?>
<tr>
<td> <?php echo $gls['gs']['goalscs']; ?> </td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</table>
Большое спасибо за то, что посмотрели на него Дэйв. Основная проблема, с которой я столкнулась, - получить результат запроса для отображения каждого счетчика для каждого менеджера. На данный момент этот код дает одинаковый список имен для каждого менеджера, а не только тех игроков, которые забили и принадлежат только отдельным менеджерам. Поэтому я не знаю, является ли мой запрос выбора неправильным (этот бит: concat (weeks2012.name, '', weeks2012.goals) как Scorers), если это конец запроса (я пробовал GROUP BY и ORDER BY), или если это петля foreach в html-файле - или комбинация всех трех. Имеет ли это смысл? – AK31