You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复赛事注册按钮显示异常:按注册时段单独判断按钮状态

问题修复:按单个赛事判断注册按钮状态

问题根源

  1. 未绑定当前赛事的日期变量:代码中使用的$EventOpenDate和$EventCloseDate没有在foreach循环内从当前赛事对象$row中取值,导致所有赛事共用同一组日期判断条件。
  2. 日期判断逻辑错误:原条件($currentDate >= $EventOpenDate) && ($EventCloseDate <= $currentDate)写反了,正确逻辑应为当前日期处于注册开启日期之后、截止日期之前。
  3. 缺少当前日期的定义:代码中未初始化$currentDate变量,无法进行有效日期对比。

修复步骤

  1. 在查询数据库后、循环开始前,定义格式化后的当前日期(需与数据库中EventOpenDate/EventCloseDate的格式一致,假设为Y-m-d):
$currentDate = date('Y-m-d');
  1. 在foreach循环内部,每次获取当前赛事的注册起止日期:
$eventOpenDate = $row->EventOpenDate;
$eventCloseDate = $row->EventCloseDate;
  1. 修正日期判断条件,确保当前日期在注册时段内才显示可点击按钮。

完整修改后的核心代码片段

<?php
// Fetching Upcoming events user has NOT signed up for (all-events.php line 69 - Updated 6/25/2021)
$isactive=1;
$sql = "SELECT 
           EventName,
           EventLocation,
           EventStartDate,
           EventEndDate,
           EventOpenDate,
           EventCloseDate,
           EventImage,
           id
        FROM tblevents 
        WHERE NOT EXISTS (SELECT 
            tblbookings.EventId,    
            tblbookings.UserId 
         FROM tblbookings 
         WHERE tblbookings.EventId = tblevents.id 
         AND tblbookings.UserId = $_SESSION[usrid])
         AND IsActive=:isactive
         ORDER BY EventOpenDate DESC";
$query = $dbh -> prepare($sql);
$query->bindParam(':isactive',$isactive,PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
// 定义当前日期,格式与数据库日期一致
$currentDate = date('Y-m-d');
if($query->rowCount() > 0)
{
    foreach($results as $row)
    { 
        // 获取当前赛事的注册起止日期
        $eventOpenDate = $row->EventOpenDate;
        $eventCloseDate = $row->EventCloseDate;
?>

<div class="single-upcoming shadow-box">
    <!-- 其他赛事信息代码保持不变 -->
    <div class="col-md-2 col-sm-3 col-xs-12">
        <div class="venu-no">
            <p>Location : <?php echo htmlentities($row->EventLocation);?></p>
        </div>
    </div>
    <?php
    // 修正后的日期判断逻辑
    if ($currentDate >= $eventOpenDate && $currentDate <= $eventCloseDate){?>
        <div class="col-md-3 col-sm-4 col-xs-12">
            <div class="upcoming-ticket text-center">
                <a href="event-details.php?evntid=<?php echo htmlentities($row->id);?>" class="btn-def bnt-2 small">Registration</a>
            </div>
        </div>
    <?php }else{ ?>
        <div class="col-md-3 col-sm-4 col-xs-12">
            <div class="upcoming-ticket text-center">
                <a class="btn-def bnt-2 small">Registration not Open</a>
            </div>
        </div> 
    <?php } ?>
</div>
<?php } }  else { ?>                
    <p>No Record Found - (Make sure you are logged in to see the events)</p>    
<?php } ?>

额外注意事项

  • 确保数据库中EventOpenDate和EventCloseDate的格式与$currentDate的格式完全一致(如均为Y-m-d),否则日期对比会失效。
  • 原代码中<a href="#"><?php echo htmlentities($row->EventName);?></a>可改为链接到赛事详情页,保持跳转逻辑一致:<a href="event-details.php?evntid=<?php echo htmlentities($row->id);?>"><?php echo htmlentities($row->EventName);?></a>

内容的提问来源于stack exchange,提问作者Russ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:36:17