2013-03-08 5 views
0

было бы удивительно, если бы кто-то мог мне помочь в этом, пожалуйста, я действительно не знаю, как его решить, и я разрушал свои мозги (и книги и интернет) в течение некоторого времени, не понимая, что мне нужно делать. Я не программист никоим образом, чисто самоучкой, поэтому, пожалуйста, примите мои извинения, если это кажется легким. Я создал базу данных для футбольного сайта фэнтезийной лиги и получил правильные запросы для результатов и таблицы, я просто хочу добавить запрос, который показывает еженедельные результаты от менеджера, и от этого, которые игроки забили для этих менеджеров (команда без менеджера имеет один и тот же игрок), пример такие как:Использование вложенных циклов 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> 

ответ

0

Прежде всего, у вас есть синтаксическая ошибка, которую можно просмотреть, посмотрев подсветку синтаксиса Stackoverflow. Ваша третья линия должна быть

include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php'; 

После дальнейшего обзора ниже линии также неправильно:

include $_SERVER['DOCUMENT_ROOT'] . /includes/error.html.php'; 

Это должно быть

include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php'; 

Вам нужно инкапсулировать все строки в кавычки или апостроф.

Я бы рекомендовал использовать редактор кода, который включает подсветку синтаксиса для вашего языка, такого как KomodoEdit или Netbeans; вы сэкономите много головных болей.

Если это не поможет, предоставьте конкретные ошибки/проблемы, с которыми вы сталкиваетесь.

+0

Большое спасибо за то, что посмотрели на него Дэйв. Основная проблема, с которой я столкнулась, - получить результат запроса для отображения каждого счетчика для каждого менеджера. На данный момент этот код дает одинаковый список имен для каждого менеджера, а не только тех игроков, которые забили и принадлежат только отдельным менеджерам. Поэтому я не знаю, является ли мой запрос выбора неправильным (этот бит: concat (weeks2012.name, '', weeks2012.goals) как Scorers), если это конец запроса (я пробовал GROUP BY и ORDER BY), или если это петля foreach в html-файле - или комбинация всех трех. Имеет ли это смысл? – AK31

Смежные вопросы