2016-06-22 2 views
0

Я довольно долго изучал, как это сделать с помощью других вопросов, но я не могу его полностью удержать. Эта ссылка казалась наиболее похожей, но я не мог ее правильно реализовать, возможно, это может помочь кому-то по этому вопросу? MySQL while loop query inside other while loop queryPHP MySQL Loop/Foreach

Я ищу для отображения таблицы, которая использует информацию из нашей БД для отображения пользовательских разделов, игр внутри парлей и связанных с ними ставок и коэффициентов. Я хотел бы, чтобы выглядеть следующим образом:

Parlay ID Home Team    Away Team    User   Wager Odds 
      Team A     Team B 
1   Team C     name of teams.id = 4 Ridge Robinson 1000  2.0 
      name of teams.id = 12 name of teams.id = 16 
-------------------------------------------------------------------------------------- (<tr> border) 
      Team C     name of teams.id = 4 
2   name of teams.id = x name of teams.id = x 
-------------------------------------------------------------------------------------- (<tr> border) 

Я могу легко создать эту таблицу, показывающую все столбцы для каждого элемента, но проблема в том, каждый элемент становится его собственный ряд. Как вы можете видеть в моем примере, есть паралея, показывающая в строке ... это означает, что в PARLAY есть только один идентификатор сайта, один пари, один пользователь, один коэффициент и т. Д. Единственное многократное событие - количество игр на парлею, которое может варьироваться от 1 или выше.

Я создал эту таблицу, используя цикл while, чтобы перебирать каждую парлею, но, к сожалению, эта таблица показывает информацию о каждой строке для каждого столбца, а не то, что я показываю на своем снимке.

while($row = $result->fetch_array()) { 

     $output = '<tr>'; 
    $output .= '<td>'.$row['Parlay ID'].'</td>'; 
    $output .= '<td>'.$row['Home Team'].'</td>'; 
    $output .= '<td>'.$row['Away Team'].'</td>'; 
    $output .= '<td>'.$row['User'].'</td>'; 
    $output .= '<td>'.$row['Wager'].'</td>'; 
    $output .= '<td>'.$row['Odds'].'</td>'; 
    $output = '</tr>'; 
} 

Я считаю, что у меня будет создать некоторый вторичный контур внутри «Home Team» и «Away Team» $ выход в ... Кто-нибудь знает, как я могу получить эту работу, где цикл будет показывать все игры в моей таблице PARLAYGAMES, которые соответствуют идентификатору Parlay, задаваемому каждой строкой, таким образом, чтобы показать его, как в приведенной выше таблице примеров?

Я думаю что-то похожее на нижеследующее. Я знаю, что формат ужасен (!), Но я не уверен, как правильно писать, поэтому я пытаюсь передать свою идею/логику.

$output .= '<td>'while(*PARLAY TABLE id = $row['PARLAYGAMES.parlayid']) { echo PARLAYGAMES.gameid }'</td>'; 

Для справки, моя таблица БД содержит игры, перечисленные как с домашней и проездной командой, ссылаясь на идентификатор таблицы команд.

GAMES 
id Home Team Away Team 
1  10   5 

Я тогда

PARLAY TABLE 
id userid wager odds 
1  44  1000  2.0 

Наконец, у меня есть

PARLAYGAMES TABLE 
id parlayid gameid 
1  1   1 
2  1   4 

Спасибо за любую помощь!

EDIT

я работал, чтобы мой пример как можно проще, не показывая все столбцы таблицы, и т.д., поэтому мы можем получить логика/часть кода вниз, но я собираюсь показать весь свой запрос как это, кажется, имеет смысл использовать, чтобы сделать это:

SELECT 
    u.first_name AS 'User First Name', 
    u.last_name AS 'User Last Name', 
    u.id AS 'User ID', 
    ht.name AS 'Home Team', 
    away.name AS 'Away Team', 
    p.wager AS 'Wager', 
    p.odds AS 'Odds', 
    pg.parlayid AS 'Parlay ID', 
    pg.betinfo AS 'Bet Info', 
    pg.gameid AS 'Game ID', 
    g.date AS 'Game Date', 
    b.betting_site_name AS 'Betting Site' 
FROM parlays p 
JOIN parlaygames pg ON p.id = pg.parlayid 
JOIN games g ON pg.gameid = g.id 
JOIN teams ht ON g.home_team = ht.id 
JOIN teams away ON g.away_team = away.id 
JOIN users u ON u.id = p.userid 
JOIN bonuses b ON p.bettingsiteid = b.id 
ORDER BY 
    pg.parlayid, 
    pg.gameid 
+0

Каков ваш текущий запрос выглядит? – Michael

+0

Привет, Майкл ... Я только что добавил. Чтобы подтвердить свою точку зрения в моем редактировании, я работал над тем, чтобы мой пример был как можно более простым, но я пошел вперед и привязал весь запрос SELECT, поскольку, по-моему, это может быть полезно увидеть. Спасибо –

ответ

0

Просто цикл по результатам, испускающих одну строку за каждую запись, смотреть PARLAY идентификатор каждый раз, когда он отличается от ряда выше излучают разделительную линию (например, использование a border-top стиль на всех элементах <td>)

Запрос выглядит несколько неправильно.Я думаю, вы должны иметь LEFT OUTER JOIN для users и bonuses

часть цикла идет как это:

$last_parlay_id=NULL; 
while($row = $result->fetch_array()) { 
    if($last_parlay_id != NULL && $last_parlay_id != $row['Parlay ID']) 
    { 
     $output = '<tr class="has-border-top">'; 
     $output .= '<td>'.$row['Parlay ID'].'</td>'; 
    }  
    else 
    { 
     $output = '<tr>'; 
     $output .= '<td></td>'; 
    } 

    $output .= '<td>'.$row['Home Team'].'</td>'; 
    $output .= '<td>'.$row['Away Team'].'</td>'; 
    $output .= '<td>'.$row['User'].'</td>'; 
    $output .= '<td>'.$row['Wager'].'</td>'; 
    $output .= '<td>'.$row['Odds'].'</td>'; 
    $output .= '</tr>'; 
    echo $output; 
    $last_parlay_id = $row['Parlay ID']; 
} 

и в вашем CSS

tr.has-border-top>td { 
     border-top: 1px solid black 
    } 
+0

Спасибо Jasen ... я думаю, что это звучит неплохо, но я не уверен, как реализовать его с циклом, так как я уже зацикливаюсь на parlayid ... и затем хочу, чтобы в нем были петлевые игры. Сможете ли вы предоставить хотя бы образец кода, с которым я мог бы работать? –

+0

добавили пример. – Jasen

+0

thw первый столбец не будет точно так же нарисован из-за того, что mysql не поддерживает функции окна, но, надеюсь, будет достаточно близко. – Jasen

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