2016-06-22 218 views
-1

我正在努力構建一個管理系統來管理用戶下注(運動類遊戲)。有很多這方面的內容,但知道這將使解釋我的問題更容易理解。Fetch_Array PHP MySQL Foreach循環

我想跟蹤每個用戶的賭注在類似於下面的表格:

User Name Date Betting Site Parlay ID Home Team Away Team Wager Odds Bet Info Success 
Ridge R  3/1/16 Bet365   1   Chelsea  Man City 1000 2.0  Home Win Yes 
Ridge R  3/2/16 Bet365   1   Barcelona Real Madrid 400  1.7  Home Win Yes 
John D  3/4/16 William Hill 2   Wigan  Newcastle 2100 1.4  Home Win No 

我將通過加入一個情侶表從我們的數據庫這個信息。我們有很多用戶,投注網站和明顯可以下注的遊戲。此表,然後從一個while循環創建:

while($row = $result->fetch_array()) { 
      $output = '<tr>'; 
      $output .= '<td>'.$row['First Name'].' '.$row['Last Name'].'</td>'; 
      $output .= '<td>'.$row['Game Date'].'</td>'; 
      $output .= '<td>'.$row['Betting Site Name'].'</td>'; 
      $output .= '<td>'.$row['Parlay ID'].'</td>'; 
      $output .= '<td>'.$row['Home Team'].'</td>'; 
      $output .= '<td>'.$row['Away Team'].'</td>'; 
      $output .= '<td>'.$row['Wager'].' kr</td>'; 
      $output .= '<td>'.$row['Odds'].'</td>'; 
      $output .= '<td>'.$row['Bet Info'].'</td>'; 
      $output .= '<td>'.$row['Success'].'</td>'; 
      $output .= '</tr>'; 

      echo $output; 
} 

我所遇到的麻煩是:

我如何加入每次下注記錄到同一其中每一個的Parlay的id是一樣的嗎?我問的原因是因爲我用不同顏色的其他行來劃分我的表格,但我需要所有屬於parlay的遊戲都是相同的顏色。

我想類似的東西...

while($row = $result->fetch_array()) { 
    $output = '<tr>'; 
    ... 
    foreach ($row['Parlay ID'] as **COULDN'T FIGURE OUT THIS PART**) { 
     $output .= '<table><tr>'; 
     $output .= '<td>'.$row['First Name' ].' '.$row['Last Name'].'</td>'; 
     $output .= '</tr></table>';    
     ....... 
    } 
THEN CONTINUE TABLE FOR OTHER ONES 
} 

我知道這是一個非常不好的企圖,但我希望它給整個想法我打算去!也許一個foreach循環並不是每一個正確的想法......關於這個如何工作的任何想法?

+0

你需要嵌套表還是隻需要具有相同Parlay ID的行具有相同的背景色? –

+0

我認爲嵌套表格更好......但也許只是使用Parlay ID號碼上的CSS就足夠了。無論哪種方式,我不知道我如何才能根據parlayID彼此相等來顯示正確的課程 –

回答

1

如果你想相同的行共享相同的顏色,你可以:

$colors = array("red", "blue"); 
$lastParlayID = false; $lastColor = 1; 
while($row = $result->fetch_array()) { 
     if ($row["Parlay ID"] !== $lastParlayID) { 
      $lastParlayID = $row["Parlay ID"]; 
      ++$lastColor; 
     } 
     if ($lastColor >= count($colors)) $lastColor=0; 
     $output = '<tr style="background:'.$colors[$lastColor].'>'; 
     $output .= '<td>'.$row['First Name'].' '.$row['Last Name'].'</td>'; 
     $output .= '<td>'.$row['Game Date'].'</td>'; 
     $output .= '<td>'.$row['Betting Site Name'].'</td>'; 
     $output .= '<td>'.$row['Parlay ID'].'</td>'; 
     $output .= '<td>'.$row['Home Team'].'</td>'; 
     $output .= '<td>'.$row['Away Team'].'</td>'; 
     $output .= '<td>'.$row['Wager'].' kr</td>'; 
     $output .= '<td>'.$row['Odds'].'</td>'; 
     $output .= '<td>'.$row['Bet Info'].'</td>'; 
     $output .= '<td>'.$row['Success'].'</td>'; 
     $output .= '</tr>'; 
     echo $output; 
} 

您還可以使用CSS類代替$顏色,做類=代替的風格=。

+0

我可以爲此創意......我認爲這可能有效。我已經實現並修改了顏色,只是「#f9f9f9」和「#ffffff」,儘管我最終會使用CSS類,所以我可以修改​​的內部......但一個問題是,這個將只適用於前兩行(因爲我只在顏色數組中列出了兩種顏色)。我怎樣才能讓顏色數組重複它自己? –

+0

我添加了另一個條件塊。在那裏,如果$ lastColor的值等於或大於指示的顏色數量,它將光標重置爲0($ colors數組中的第一個元素)。這在一開始就已經發生了,因爲$ lastColor現在被初始化爲1,並且在第一次迭代時它會增加1. –

+0

好的...這一直奏效。本來我並沒有考慮這樣做,但我不明白爲什麼這會成爲我需要的問題!感謝您的解決方案 –