亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據當前時間從數據庫中選擇

如何根據當前時間從數據庫中選擇

PHP
牛魔王的故事 2022-07-16 15:59:20
我正在制作一個學校門戶系統,現在我正在制作頁面供學生查看作業。我希望他們的作業以紅色突出顯示,或者如果當前日期超過了截止日期,則根本不顯示。我怎樣才能做到這一點?我的頁面代碼<?php//including the database connection fileinclude_once("connection.php");    $id= $_GET['id'];//fetching data in descending order (lastest entry first)$result = mysqli_query($conn, "SELECT * FROM homework where class_id= '$id'"); ?><html><head>        <title>View IS</title></head><body>    <table width='80%' border=0>        <tr bgcolor='#CCCCCC'>            <td>Task</td>            <td>Date Set </td>            <td>Date Due </td>        </tr>        <?php         //while($res = mysql_fetch_array($result))         while($res = mysqli_fetch_array($result)) {                     echo "<tr>";            echo "<td>".$res['description']."</td>";            echo "<td>".$res['dateset']."</td>";            echo "<td>".$res['datedue']."</td>";        }        ?>    </table></body>數據庫:
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

而不是 a query,使用 aprepared statement更bind_param安全。然后只需比較日期以檢查是否$res['datedue']通過。應該是這樣的:


<?php

    include_once("connection.php"); //including the database connection file

    date_default_timezone_set('America/Los_Angeles');    //set the default time zone to your time zone (this is just an example)

    $result = $conn->prepare("SELECT * FROM homework WHERE class_id=?");

    $result->bind_param("i", (int)$_GET['id']);

    $result->execute();

    $result2 = $result->get_result();

?>

<html>

<head>    

    <title>View IS</title>

</head>

<body>

    <table width='80%' border=0>

        <tr bgcolor='#CCCCCC'>

            <td>Task</td>

            <td>Date Set </td>

            <td>Date Due </td>

        </tr>

        <?php

            while($res = $result2->fetch_array(MYSQLI_ASSOC)) {   

                if (date("Y-m-d") > $res['datedue']) {

                    echo "<tr style=\"color: red;\">";

                        echo "<td>".$res['description']."</td>";

                        echo "<td>".$res['dateset']."</td>";

                        echo "<td>".$res['datedue']."</td>";

                    echo "</tr>";

                } else {

                    echo "<tr>";

                        echo "<td>".$res['description']."</td>";

                        echo "<td>".$res['dateset']."</td>";

                        echo "<td>".$res['datedue']."</td>";

                    echo "</tr>";

                }

            }

        ?>

    </table>

</body>

您也可以使用$time = new DateTime;and then$time->format("Y-m-d")代替date("Y-m-d").


查看完整回答
反對 回復 2022-07-16
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

您應該使用參數化的準備好的語句,而不是手動構建查詢。


如果日期更大,我已經使用日期函數來比較日期,那么我已經放置了一些樣式,而在其他情況下則沒有樣式。我已經給了你這個想法,現在你可以進行相應的修改。


    <table width='80%' border=0>

            <tr bgcolor='#CCCCCC'>

                <td>Task</td>

                <td>Date Set </td>

                <td>Date Due </td>

            </tr>

            <?php 

            //while($res = mysql_fetch_array($result)) 

    $current_date=date("Y-m-d");

            while($res = mysqli_fetch_array($result)) { 



            if($current_date > $res['datedue'] ){


?>

<tr style='color:red;'>;

<?php


    }else {

    <tr>

    }


                echo "<td>".$res['description']."</td>";

                echo "<td>".$res['dateset']."</td>";

                echo "<td>".$res['datedue']."</td>";

    </tr>

            }

            ?>

        </table>


查看完整回答
反對 回復 2022-07-16
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

不要使用連接的原始 SQL。

使用變量綁定來防止 SQL 注入。


<?php

$stmt = $mysqli->prepare("SELECT * FROM homework where class_id= ?");

$stmt->bind_param('i', (int)$_GET['id']); // bind vairable and cast it to integer (it is a good practice when you get data from outside)

$stmt->execute();

$result = $stmt->get_result();

while($res = $result->fetch()){

  // Your code here

  var_dump($res);

}

我會建議使用PDO而不是mysqli. 您可以在此處閱讀有關 SQL 注入的更多信息:如何防止 PHP 中的 SQL 注入?


不要使用select * (通配符)

SELECT description, dateset, datedue, datedue < NOW() AS is_expired FROM homework where class_id= ?

檢查值is_expired以查看您將標記為紅色的結果


我還沒有嘗試過代碼,但我想它會按預期工作


查看完整回答
反對 回復 2022-07-16
  • 3 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號