PHP实现赛事比分赔率按博彩市场分组,避免重复输出并横向展示
解决方案
以下是修改后的完整代码,实现按博彩市场分组、不重复显示市场名称,同时让比分横向排列:
if(isset($_POST['gem_id'])) { // 调整排序规则,先按市场ID分组排序 $query = 'SELECT correct_score.id, correct_score.lig_id, correct_score.fixt_id, correct_score.mark_id, correct_score.score, correct_score.odds, correct_score.last_update, fixtures.lig, fixtures.home_team, fixtures.away_team, leagues.league, bet_markets.market FROM correct_score INNER JOIN fixtures ON correct_score.fixt_id = fixtures.id INNER JOIN leagues ON correct_score.lig_id = leagues.id INNER JOIN bet_markets ON correct_score.mark_id = bet_markets.id WHERE correct_score.fixt_id =? ORDER BY correct_score.mark_id ASC, correct_score.id ASC'; // 修改排序 $statement = $conn->prepare($query); $statement->execute([$_POST['gem_id']]); $statement->setFetchMode(PDO::FETCH_ASSOC); $result = $statement->fetchAll(); if($result) { $current_market_id = null; // 记录当前市场ID,避免重复输出标题 foreach ($result as $row) { // 当切换到新市场时,输出市场标题并开启新的row容器 if($row['mark_id'] !== $current_market_id) { // 如果不是第一个市场,先闭合上一个row if($current_market_id !== null) { echo '</div>'; } $current_market_id = $row['mark_id']; ?> <p class="card-title text-center text-uppercase fw-bolder mt-3"><?=$row['market'];?></p> <div class="row align-items-center justify-content-between"> <?php } // 输出当前比分赔率的列,同市场的都在同一个row里 ?> <div class="col-3"> <p class="chose" market="<?=$row['mark_id'];?>" fixture="<?=$row['fixt_id'];?>" pick="<?=$row['score'];?>" odds="<?=$row['odds'];?>"> <button type="button" class="btn btn-sm btn-primary "> <span class="text-start"><?=$row['score'];?> </span> <span class="text-end ms-5"><?=$row['odds'];?></span> </button> </p> </div> <?php } // 闭合最后一个row容器 echo '</div>'; } else { ?> <div class="col-12"></div> <?php } }
修改说明
调整SQL排序规则:将
ORDER BY correct_score.id ASC改为ORDER BY correct_score.mark_id ASC, correct_score.id ASC,确保同一博彩市场的比分数据连续排列,为分组输出提供基础。增加市场跟踪变量:新增
$current_market_id变量,每次循环对比当前行的mark_id,仅在切换新市场时输出市场标题,避免重复显示。同时注意切换市场时闭合上一个row容器,保证HTML标签结构合法。重构HTML结构:将同市场的所有比分列(
col-3)放入同一个row容器内,借助Bootstrap栅格系统实现比分横向排列,每行自动容纳4个比分(col-3占12栅格的3份),超出后自动换行。
内容的提问来源于stack exchange,提问作者Juma Ijesun
相关产品推荐
相关产品推荐

