php - SQL 在 WHILE 循环中按日期排序

标签 php mysql date

我无法按日期对我的事件进行排序,因为我在一个表中有事件 ID,而在另一个表中有事件日期。

代码如下。

$getEventIds = "SELECT * FROM rz6wq_ohanah_registrations WHERE email='".$userEmail."'";
$result = mysqli_query($conn, $getEventIds);

echo '<br />';

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $getEventTitle = "SELECT * FROM rz6wq_ohanah_events WHERE ohanah_event_id=" . $row['ohanah_event_id'] . " ORDER BY date ASC";
        $title = mysqli_query($conn, $getEventTitle);
        $rowTitle = $title->fetch_assoc();
        $originalDate = $rowTitle["date"];
        $newDate = date("d-m-Y", strtotime($originalDate));
        date_default_timezone_set('Europe/Copenhagen');
        $currentDate = date('d/m/Y');
        if(strtotime($currentDate) < strtotime($newDate)){        
        //echo "id: " . $row["ohanah_event_id"] . "<br>";
        echo "<div class='eventsTilmeldt'>";
        echo "<b>" . utf8_encode($rowTitle["title"]) . "</b><br>";
        echo "<br>";   
        echo "Status: "; if($row["paid"] == 0){echo "<span style='color:red;'>ej betalt</span>";}else{echo "<span style='color:green;'>betalt</span>";} 
        echo "<br>";           
        echo "Dato: " . $newDate . "<br>";
        echo "Tidspunkt: " . $rowTitle["start_time"] . "<br>";          
        echo "<br>";        
        echo "Adresse: " . utf8_encode($rowTitle["adress"]) . "<br>";
        echo "By: " . utf8_encode($rowTitle["geolocated_city"]) . "<br>";
        echo "Sted: " . utf8_encode($rowTitle["venue"]) . "<br>";                
        echo "</div>";
        echo "<br>"; 
        }else{
            echo "";
        }

    }
} else {
    echo "Ingen tilmeldte events.";
}

它没有按日期正确排序我的事件的问题。我认为这与它位于我按日期排序的 while 循环内有关吗?

"SELECT * FROM rz6wq_ohanah_events WHERE ohanah_event_id=" . $row['ohanah_event_id'] . " ORDER BY date ASC";

我需要先从另一个名为注册的表中获取事件 - 该表中没有日期字段。

如何按日期对列表进行排序?

最佳答案

您可以改用JOIN:

$getEventIds = "SELECT reg.*,event.* FROM rz6wq_ohanah_registrations as reg
JOIN rz6wq_ohanah_events as event ON reg.ohanah_event_id=event.ohanah_event_id
WHERE email='".$userEmail."'
ORDER BY event.date ASC";

关于php - SQL 在 WHILE 循环中按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32455346/

相关文章:

php - 我如何以传统的 'time' 增量进行 ORDER BY,一个值字符串,ex : "10:00 AM", 来自不是 date() 格式的数据库条目?

javascript - AJAX 请求触发 4 次而不是一次

php - 如何列出我的 MediaWiki 扩展中用户所在的组?

php - Symfony 4 - Autowiring 整个路径时如何使用服务标签

mysql - SQL错误: 1191 Can't find FULLTEXT index matching the column list

mysql - 在数据库中查找两个名字作为全名列的一部分

java - OffsetDateTime toString() 返回不同格式的日期字符串

php - json php调用错误: undefined

php - 将多个php表单数组插入mysql行

c# - 无法从字符串创建具有当前时间的日期