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