Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL比较$row从今天开始的日期_Php_Mysql_Date - Fatal编程技术网

PHP MySQL比较$row从今天开始的日期

PHP MySQL比较$row从今天开始的日期,php,mysql,date,Php,Mysql,Date,我想知道是否有可能将while循环中所有$row中的日期与今天的日期进行比较。让我解释一下 我已创建此表,如图所示: 我通过连接几个表创建了这个表,实际上在一个while循环中有一个while循环,这就是我如何在一行上显示多个游戏,但每行只有一个下注金额 我想做的是将每一场比赛的日期与今天的日期进行比较,在这张图中列出parlay是否处于活动状态,它们都不会处于活动状态,但这不是重点 我想取今天的日期,如果它小于游戏的所有日期,那么Active=='Future',或者如果今天的日期在一组日期

我想知道是否有可能将while循环中所有$row中的日期与今天的日期进行比较。让我解释一下

我已创建此表,如图所示:

我通过连接几个表创建了这个表,实际上在一个while循环中有一个while循环,这就是我如何在一行上显示多个游戏,但每行只有一个下注金额

我想做的是将每一场比赛的日期与今天的日期进行比较,在这张图中列出parlay是否处于活动状态,它们都不会处于活动状态,但这不是重点

我想取今天的日期,如果它小于游戏的所有日期,那么Active=='Future',或者如果今天的日期在一组日期之间,那么Active=='Progress',如果今天的日期超过了所有日期,那么Active=='pass'。其中一个挑战是,我不知道会有多少场个人比赛,所以我想这样做可能会奏效:

/* 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]");
如果这是正确的逻辑,不知道如何实现和使用它

那么,有人知道如何将这些日期行与今天的当前日期进行比较吗

这是我的初始选择查询: 我从我的图片中省略了一些信息,试图使问题的核心逻辑更容易,这就是为什么这里有一些额外的字段

这是我的表格创建代码和第二个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>

嗨,请替换这些查询

$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";

我就是这样解决这个问题的:

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";
            }

我希望这个逻辑也能帮助其他人。

什么是游戏开始日期和结束日期意味着字段名,也意味着可以轻松创建示例查询的字段名。我没有特定的开始日期和结束日期字段名。。。。它来自我的代码中的一部分,在我的另一个while循环中有一个while循环。我不确定一个parlay中会有多少个游戏,那么我如何创建这些字段呢?有办法吗?好的。您需要将g.date的条件设置为GameDate。或者其他的?我不确定你说的条件是什么意思…我应该设置哪个条件?我只想要第一次约会,但也要最后一次约会。这可能会在一局对决中成为同一个日期。你需要在g的基础上设置过去,功能,进程中。日期是列将定义oe,任何其他表字段将定义我正在询问OK…我尝试了你所说的,但它首先打破了我的内部while循环,所以只显示了一个游戏,其次,我无法在我的活动专栏中看到任何正在进行、将来或过去的文本。发生了什么事意味着它对结果集产生了影响?我不理解您的问题…抱歉,我想说的是,在执行这些查询后,您的数据出了什么问题,您可以稍微解释一下,以便我可以解决它。检查我更新了代码使用我在group by上添加的代码
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";
            }