首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期分组MySQL查询结果,每个组都有标头和自己的div

按日期分组MySQL查询结果,每个组都有标头和自己的div
EN

Stack Overflow用户
提问于 2012-10-16 05:05:09
回答 2查看 1.2K关注 0票数 3

我觉得我可能想得太多了.所以我想我会得到一些额外的建议。我想查询我的数据库中的“事件”和“组”事件的列表,这些事件在单个标题下具有相同的日期,此外,我希望这个“组”在它自己的容器中。我已经找到了浏览其他问题的单一标题问题,但是容器给我带来了悲伤!

例如,

这里:

代码语言:javascript
复制
<div class='container'>
    <img src='event-image.jpg'>
    <h1>October 15th, 2012</h1>
    <h3>Event Name</h3>
    <p>Details</p>
    <h3>Event Name</h3>
    <p>Details</p>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <img src='event-image.jpg'>
    <h3>Event Name</h3>
    <p>Details</p>
    <h3>Event Name</h3>
    <p>Details</p>
    <h3>Event Name</h3>
    <p>Details</p>
</div>

而不是这个:

代码语言:javascript
复制
<div class='container'>
    <img src='event-image.jpg'>
    <h1>October 15th, 2012</h1>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <img src='event-image.jpg'>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <h3>Event Name</h3>
    <p>Details</p>
</div>
<div class='container'>
    <h3>Event Name</h3>
    <p>Details</p>
</div>

这里:

代码语言:javascript
复制
October 15, 2012
Event 1
Event 2
Event 3

而不是这个:

代码语言:javascript
复制
October 15, 2012
Event 1
October 15, 2012
Event 2
October 15, 2012
Event 3

MySQL查询:

代码语言:javascript
复制
$sql = "SELECT title, DATE_FORMAT(date, '%M %D, %Y') AS postdate, time, venue, cost, city,   spotlight, image
        FROM shows WHERE date >= $curDate
        ORDER BY date ASC, spotlight DESC LIMIT $startRow," . SHOWMAX;

HTML/

代码语言:javascript
复制
<?php 
    $prevDate = null;
    while ($row = $result->fetch_assoc()) { ?>
        <div class="content">
        <?php 
        if (!empty($row['image'])) { ?>
            <img src="/images/thumbs/<?php echo $row['image'] ?>">
        <?php 
        }

        if ($row['postdate'] != $prevDate) { ?>
            <h1><?php echo $row['postdate']; ?></h1>
            <?php $prevDate = $row['postdate'];
        } ?>
        <h3><?php echo $row['title']; ?></h3>   
        <p><?php echo $row['venue'] . " | " . $row['city'] . " | " . $row['time'] . " | " .  $row['cost']; ?></p>
        </div>
    <div class="horizontal-line"></div>
<?php } ?>

结果:

代码语言:javascript
复制
<div class="content">
<img src="/images/thumbs/defining-times-news-00.jpg">
    <h1>October 13th, 2012</h1>
    <h3>Relient K w/ Hellogoodby, William Beckett & House of Heroes</h3>    
    <p>Cain's Ballroom | Tulsa, OK | 9:00 | $10</p>
</div>
<div class="horizontal-line"></div>
<div class="content">
    <h3>Rod Steward & Stevie Nicks</h3> 
    <p>BOK Center | Tulsa, OK | 9:00 | $45</p>
</div>
<div class="horizontal-line"></div>
<div class="content">
    <h3>Gary Allan</h3> 
    <p>Hard Rock Hotel & Casino | Tulsa, OK | 9:00 | $30</p>
</div>
<div class="horizontal-line"></div>
<div class="content">
    <img src="/images/thumbs/dead-sea-choir-news-00.jpg">
    <h1>October 14th, 2012</h1>
    <h3>Nalani Proctor and Kierston White</h3>  
    <p>Bluebonnet | Norman, OK | 9:00 | $5</p>
</div>
<div class="horizontal-line"></div>
<div class="content">
    <h3>Bungalouski</h3>    
    <p>Bluebonnet | Norman, OK | 9:00 | FREE</p>
</div>
<div class="horizontal-line"></div>
    <h3>Relient K w/ Hellogoodby, William Beckett & House of Heroes</h3>    
    <p>Cain's Ballroom | Tulsa, OK | 9:00 | $10</p>
</div>
<div class="horizontal-line"></div>

我希望这不是太复杂!任何帮助都是非常感谢的!谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 05:39:38

试试这个:

代码语言:javascript
复制
$prevDate = null;
while ($row = $result->fetch_assoc()) {
    $mark = false;
    if ($row['postdate'] != $prevDate) {
        $mark = true;
        $prevDate = $row['postdate'];
    }
    ?>
    <? if ($mark) { ?>
        <div class="content">
        <? } ?>
        <? if (!empty($row['image'])) { ?>
            <img src="/images/thumbs/<?= $row['image'] ?>">
        <? } ?>

        <? if ($mark) { ?>
            <h1><?= $row['postdate']; ?></h1>
        <? } ?>
        <h3><?= $row['title']; ?></h3>   
        <p><?= $row['venue'] . " | " . $row['city'] . " | " . $row['time'] . " | " . $row['cost']; ?></p>
        <? if ($mark) { ?>
        </div>
        <div class="horizontal-line"></div>
    <? } ?>
<? } ?>
票数 1
EN

Stack Overflow用户

发布于 2012-10-16 08:46:48

我让它发挥作用,感谢'khomyakoshka‘引导我朝着正确的方向!

...now我不是说这是最好的方法,但它是有效的!

代码语言:javascript
复制
<?php   
$prevDate = null;
$i = 0;
    while ($row = $result->fetch_assoc()) {
        $mark = false;
        if ($row['postdate'] != $prevDate) {
            $mark = true;
            $prevDate = $row['postdate'];
        }

        if ($mark && $i == 0) {
?>
            <div class="content">
<?php
        } elseif ($mark) {
?>          
            <div class="clear"></div>
            </div>
            <div class="horizontal-line"></div>
            <div class="content">
<?php           
        }

        if (!empty($row['image'])) { 
?>
            <img src="/images/thumbs/<?= $row['image'] ?>">
<?php
        }

        if ($mark) { ?>
            <h1><?php echo $row['postdate']; ?></h1>
<?php
        }
?>
        <h3><?php echo $row['title']; ?></h3>   
        <p><?php echo $row['venue'] . " | " . $row['city'] . " | " . $row['time'] . " | " . $row['cost']; ?></p>
<?php
                $i++;
                }
            ?>
            <div class="clear"></div>
            </div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12907847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档