Проблема с сортировкой таблицы html php mysql

Я обучающийся программист, и у меня есть вопрос.

У меня есть таблица Html на моем веб-сайте, и я заполняю ее своими данными из MySql.

Теперь я хочу отсортировать свою таблицу по дате, поэтому я хочу, чтобы ближайшая дата была вверху таблицы.

Как мне это сделать (мой формат даты - [дд.мм] без лет)

При использовании метода ORDER BY 01.11 является, например, первой записью, а не после 23.10.

Мой код:

Надеюсь, вы могли бы мне помочь, потому что я не понимаю.

    <!DOCTYPE html>
<html>
<head>
    <title>lll</title>
    <meta charset = "UTF-8">
    <link rel = "stylesheet" href = "style.css">

    <script type = "text/javascript">

    function eintragen(){
        window.location = "http://lll.bplaced.net/eintragen.php"
    }
    </script>
</head>
<body>

    <p class = "headertext">Online lll</p>
    <hr><br>

    <?php

        $servername = "localhost";
        $username = "kllllf";
        $password = "lll";
        $dbname = "kll";
        $conn = mysqli_connect($servername, $username, $password, $dbname);
        if (mysqli_connect_errno()) {
            die("Connection failed: " . mysqli_connect_error());
        }



        $rows = 0;
        $sql = "
        SELECT
            *
        FROM
            lll
       (ORDER BY
            Ende)
        ";
        $query = mysqli_query($conn, $sql);
        $num = mysqli_num_rows($query);


        echo "<table name=\"table\"border=\"1\">";
                echo "<tr>";
        echo "<td align=\"center\" valign=\"middle\" width=\"150px\" height=\"50px\">Bis Wann</td>";
        echo "<td align=\"center\" valign=\"middle\" width=\"150px\">Fach</td>";
        echo "<td align=\"center\" valign=\"middle\" width=\"350px\">lll</td>";
        echo "</tr>";
                echo "<tr>";
        echo "<td align=\"center\" valign=\"middle\" height=\"50px\">× × ×</td>";
        echo "<td align=\"center\" valign=\"middle\">× × ×</td>";
        echo "<td align=\"center\" valign=\"middle\">× × ×</td>";
        echo "</tr>";

        while($row = mysqli_fetch_assoc($query)){

            $fach = $row['Fach'];
            $ha = $row['Hllln'];
            $ende = $row['Ende'];

            if ($ende < date("d.m")) {
                       $sqls = "DELETE FROM hlllll WHERE Ende='$ende';";
            if (!mysqli_query($conn, $sqls)){
            echo "<p>Es gab keine älteren Hlllll</p>";
        }

            }

        echo "<tr>";
        echo "<td align=\"center\" valign=\"middle\" height=\"50px\">".$ende."</td>";
        echo "<td align=\"center\" valign=\"middle\">".$fach."</td>";
        echo "<td align=\"center\" valign=\"middle\">".$ha."</td>";
        echo "</tr>";
        }




        echo "</table>";

        echo "<br />";
        echo "<button type=\"button\" onclick=\"eintragen()\">Hlllllln eintragen?</button>";



?>





</body>

Предложение ORDER BY не должно заключаться в круглые скобки.

Jeto 24.10.2018 07:02
SELECT * FROM your_table ORDER BY STR_TO_DATE(your_date,'%d-%m-%Y') DESC используйте этот запрос
Bilal Ahmed 24.10.2018 07:06

Почему бы не использовать DateField в своей базе данных и не преобразовать дату в правильный формат при ее отображении? Если вы используете строку, вам также необходимо вручную проверить, действительна ли дата, помимо проблемы сортировки.

oerl 24.10.2018 07:14

@BilalAhmed Это не работает, например, 01.11 заказывается сверху, а 23.10 заказывается после 01.11

mnjg123 24.10.2018 07:16

показать структуру вашей таблицы с образцами данных

Bilal Ahmed 24.10.2018 07:23

+1 к oerl - но это не должно быть предложением. Структура вашей СУБД - неправильный, если вы храните дату в виде строки.

symcbean 12.11.2018 13:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
83
2

Ответы 2

Преобразуйте столбец даты в дату и время и используйте запрос ниже.

$sql = " SELECT * FROM lll
         ORDER BY convert(datetime, Ende , 104) ASC ";

Здесь 104 означает формат dd.mm

Способ 2:

$sql = "SELECT * FROM lll 
        ORDER BY STR_TO_DATE(Ende ,"%d.%m") ASC";

Это не помогает, 01.11 заказывается раньше 23.10

mnjg123 24.10.2018 07:14

Какой тип данных у вашей даты? varchar или datetime?

shavindip 24.10.2018 07:16

Это варчар

mnjg123 24.10.2018 07:18

Попробуйте мой обновленный ответ и дайте мне знать, какой результат он дает.

shavindip 24.10.2018 07:26

Поскольку у вас есть только день и месяц, вы можете попробовать это.

SELECT * FROM lll ORDER BY STR_TO_DATE(Ende,'%d.%m') DESC

Имейте в виду, что базе данных необходимо преобразовать каждую строку в столбце «Ende» для этого запроса. В зависимости от размера этой таблицы это может занять некоторое время. Если вы не используете основанный на функциях index.

oerl 24.10.2018 07:20

Другие вопросы по теме