【问题标题】:Php MySQL Order by date (custom)PHP MySQL 按日期排序(自定义)
【发布时间】:2013-03-27 18:29:16
【问题描述】:

这是我的 PHP/SQL 请求

<?php $events = $wpdb->get_results( 
    "
    SELECT * 
    FROM  `wp_em_events` 
    LIMIT 5
    // HERE'S MY ORDER BY DATE
    "
);

$dt = new DateTime($event->event_start_date);
$formattedDate = $dt->format('d M Y');

foreach ( $events as $event ) 
{

echo '<div class="home-event">';
    echo $formattedDate;
    echo $event->event_name;
echo '</div>';

}

?>

根据包含列“event_start_date”的表,其中值如下所示:

2013-03-27 
2013-04-03
2013-03-31

我想在这些日期之前安排我的活动(最接近我们的优先)

我试过一个

ORDER BY event_start_date DESC

但它“烧毁”了我的请求

------- 奖金问题--------

我怎样才能增加我的事件才能拥有:

<div class="home-event-1">
<div class="home-event-2">
<div class="home-event-3">
...

非常感谢!!

【问题讨论】:

  • 我无法想象被烧毁的请求是什么样的......
  • 你一定觉得外面冒着烟。
  • 我是法国人,所以如果我的词汇量没有你的那么大,请原谅......但感谢你的精彩回答。它使我的请求崩溃了,让它什么都不显示。
  • 我根本不想幽默,但如果你不是母语人士,最好避免使用俚语(argot),因为它很可能会混淆那些不认同你的人母语...
  • 我只是不知道正确的词,所以我使用了第一个对我有意义的词

标签: php mysql sql-order-by


【解决方案1】:

ORDER BY 出现在 LIMIT 之前。你会想要:

SELECT
    * 
FROM
    `wp_em_events` 
ORDER BY
    event_start_date DESC
LIMIT 5

另外,您在错误的位置获取日期。它需要在迭代

foreach ( $events as $event ) 
{

  $dt = new DateTime($event->event_start_date);

  $formattedDate = $dt->format('d M Y');

  // ...

关于增量:

foreach ( $events as $key => $event ) 
{

    echo '<div class="home-event-' . ($key + 1) . '">';
    echo $formattedDate;
    echo $event->event_name;
    echo '</div>';

}

当然,假设$events 不是关联数组。如果是:

$i = 0;

foreach ( $events as $event ) 
{

    echo '<div class="home-event-' . ++$i . '">';
    echo $formattedDate;
    echo $event->event_name;
    echo '</div>';

}

【讨论】:

  • 完美,我不知道。感谢您不像其他答案那样“有趣”:)
  • 对 class="" 增量有什么想法吗?
  • 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多