2016-06-24 30 views
2

我想知道是否可以將所有$行中的日期從while循環與今天的日期進行比較。讓我解釋。

我創造了這個圖像中顯示此表: Betting History

我已經通過連接幾個表中創建這個表,居然有一個while循環while循環(這是我得到了多個遊戲展示但每次只有一個投注金額

我想要做的就是將每個單獨遊戲的日期與今天的日期進行比較,以列出parlay是否活動(在這張圖片中,他們都不會活躍,但那不是重點)。

I wan t取今天的日期,如果它小於遊戲的所有日期,那麼Active =='Future',或者如果今天的日期介於一組日期之間,那麼Active =='In Progress',如果今天日期已經過去了所有的日期,然後Active =='過去'。使這個具有挑戰性的部分是,我不知道有多少個別遊戲會出現,所以我想這樣的事情可能工作:

/* fetch row */ 
$firstrow = $result2->fetch_row(); 

$date1=date_create("$firstrow[0]"); 
$date2=date_create(date("Y-m-d")); 
$diff=date_diff($date1,$date2); 

但我不知道有多少行做出測試我的最後日期,或許還有一個

$row_count = $result->num_rows; 
$datelast=date_create("$lastrow[$row-count-1]"); 

不知道如何再實施和使用這個,如果它是正確的邏輯!

那麼有誰知道我可以如何比較每個日期行到今天的當前日期?

這是我最初的選擇查詢: 我省略了從我的形象的一些信息,要儘量使問題更容易的核心邏輯,這就是爲什麼有一些額外的字段這裏

//Create parlay select query  
$query = "SELECT 
     u.first_name AS 'User First Name', 
     u.last_name AS 'User Last Name', 
     b.betting_site_name AS 'Betting Site', 
     p.id AS 'Parlay ID', 
     p.wager AS 'Wager', 
     p.odds AS 'Odds', 
     p.success AS 'Success', 
     DATE_FORMAT(p.creationdate, '%d-%m-%Y') AS 'Date', 
     pg.parlayid AS 'PG Parlay ID', 
     SUM(p.wager * p.odds) AS Winnings 
    FROM parlays p 
    JOIN parlaygames pg ON pg.parlayid = p.id 
    JOIN bonuses b ON p.bettingsiteid = b.id 
    JOIN users u ON p.userid = u.id 
    WHERE userid=$id 
    GROUP BY p.id 
    ORDER BY p.id DESC 
    LIMIT 5"; 

$result = $mysqli->query($query) or die($mysqli->error.__LINE__); 

這是我的表創建代碼(和第二while循環得到個別遊戲):

<h2>Betting History</h2> 
     <table class="table table-striped userwinnings"> 
     <tr> 
      <th>Parlay Information</th> 
      <th>Wager</th> 
      <th>Active</th> 
     </tr> 
<?php 

while($row = $result->fetch_assoc()) { 
      $output = '<tr>'; 
        $output .= '<td><table><tr><th>Date</th><th>Game</th><th>Bet Info</th></tr>'; 

        $parlayid = $row['Parlay ID']; 

        $query3 = "SELECT 
       pg.parlayid AS ParlayID, 
       g.date AS GameDate, 
       ht.name AS HomeTeam, 
       away.name AS AwayTeam, 
       pg.betinfo AS BetInfo 
      FROM parlaygames pg 
      JOIN parlays p ON pg.parlayid = p.id 
      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 
      WHERE p.id = $parlayid"; 

     $result3 = $mysqli->query($query3) or die($mysqli->error.__LINE__); 
     while($row3 = $result3->fetch_assoc()) { 
      $gamescount = $result3->num_rows; 
      $output .= '<tr>'; 
      $output .= '<td>'.$row3['GameDate'].'</td>'; 
      $output .= '<td>'.$row3['HomeTeam'].' vs '.$row3['AwayTeam'].'</td>'; 
      $output .= '<td>'.$row3['BetInfo'].'</td>'; 
      $output .= '</tr>'; 
     }      

      $output .= '</table>'; 
        $output .= '</td>'; 
        $output .= '<td>'.$row['Wager'].'</td>'; 
        $output .= '<td>'.$row['Active'].'</td>'; 
        $output .= '</tr>'; 

        echo $output; 

} 

?> 
</table> 
+0

什麼是遊戲開始日期和結束日期意味着字段名稱以及可以輕鬆創建示例查詢的字段名稱。 –

+0

我沒有特定的開始日期和結束日期字段名稱....它來自我的代碼,其中有一個while循環在我的其他while循環內的部分。我不確定在parlay中會有多少場比賽,那麼我該如何創建這些場?有沒有辦法? –

+0

好的。你需要把條件放在「g.date AS GameDate」上。或任何其他? –

回答

0

你好,請更換這些查詢

$query3 = "SELECT 
       pg.parlayid AS ParlayID, 
       g.date AS GameDate, 
       ht.name AS HomeTeam, 
       away.name AS AwayTeam, 
       pg.betinfo AS BetInfo 
      FROM parlaygames pg 
      JOIN parlays p ON pg.parlayid = p.id 
      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 
      WHERE p.id = $parlayid"; 

有了這些一個

$query3 = "SELECT 
       pg.parlayid AS ParlayID, 
       g.date AS GameDate, 
       IF((NOW() between MIN(g.date) AND MAX(g.date)),'In Progress',IF((MAX(g.date) > NOW()),'Future','Past')) as Acctive, 
       ht.name AS HomeTeam, 
       away.name AS AwayTeam, 
       pg.betinfo AS BetInfo 
      FROM parlaygames pg 
      JOIN parlays p ON pg.parlayid = p.id 
      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 
      WHERE p.id = $parlayid group by pg.parlayid"; 
+0

好的...我嘗試了你所說的話,但它首先在我的內部循環中打破了,所以只有一個遊戲正在顯示,其次,我無法在Active中看到任何「正在進行」,「未來」或「過去」文本列 –

+0

什麼意思,它意味着它對結果集有影響嗎? –

+0

我不明白你的問題......對不起Dhaval –

0

這是我結束瞭解決這一問題:

while($row3 = $result3->fetch_assoc()) { 
      $gamescount = $result3->num_rows; 

      /* seek to row no. 1 */ 
       $result4->data_seek(0); 

       /* fetch row */ 
       $firstrow = $result4->fetch_row(); 

       $result4->data_seek($gamescount-1); 
       $lastrow = $result4->fetch_row(); 

      $date1=date_create("$firstrow[1]"); 
      $date3=date_create("$lastrow[1]"); 
      $date2=date_create(date("Y-m-d")); 
      $diff=date_diff($date3,$date2); 

      $firstdate = $date3->format('Y-m-d'); 
      $lastdate = $date1->format('Y-m-d'); 
      $today = $date2->format('Y-m-d'); 

      if ($firstdate < $today && $today < $lastdate) { 
       $active = "In Progress"; 
      } else if ($today > $lastdate) { 
       $active = "Past"; 
      } else if ($today < $firstdate) { 
       $active = "Future"; 
      } 

我希望這個邏輯可以幫助其他人。