2016-06-22 6 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 

私はカップルのテーブルを結合を通じて当社のDBからこの情報を取得します。私たちには多くのユーザー、賭けのサイト、明らかにベットできるゲームがあります。このテーブルはその後、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のそれぞれが同じでどこが同じに各賭けレコードに参加するにはどうすればよい

?私が求めている理由は、テーブルを色ごとに1行おきにストライプするからですが、同じ色になるように並べ替えの一部であるすべてのゲームが必要です。

私は...

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ループは正しいアイデアではありません。これがどのように機能するかについてのアイデアはありますか? =

$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

ネストしたテーブルが必要ですか同じ背景色を持つために同じParlay IDの行だけが必要ですか? –

+0

ネストされたテーブルは良いと思いますが、おそらくパーレーID番号でCSSを使用すれば十分です。いずれにしても、私は、どのようにして、唯一のparlayIDが互いに等しいことに基づいて表示する適切なクラスを得ることができるのか分かりません –

答えて

1

あなたは、同じ行が、あなたは可能性が同じ色を共有したい場合。

+0

私はこのアイデアのために行くことができます...私はこれが動作すると思う。私は実装し、色を "#f9f9f9"と "#ffffff"にするように修正しましたが、CSSクラスを使用して終了するので、​​も同様に修正することができます....しかし、最初の2行だけで動作します(色配列に2つの色しかリストしていないためです)。どのように色の配列を繰り返すことができますか? –

+0

別の条件ブロックを追加しました。そこでは、$ lastColorの値が指定された色の量と等しいかそれより大きければ、カーソルは0($ colors配列の最初の要素)にリセットされます。 $ lastColorは1に初期化され、最初の反復では1だけインクリメントされるので、これは最初から発生します。 –

+0

これはうまくいきました。もともと私はこのようにすることを検討していませんでしたが、なぜこれが私のニーズにとって問題になるのか分かりません。ソリューションをありがとう –