1

私は漫画のウェブサイトhttp://www.hittingtreeswithsticks.com/を持っており、毎週新しい漫画を追加しています。投稿日から3日後まで、新着コミックをハイライト表示したままにしたいです。

だから、ここに前があります:

ここに画像の説明を入力

これが望ましいです:

ここに画像の説明を入力

次のロジックを考えています。

データベースの日付は現在 datetime に設定されています: 0000-00-00 00:00:00

PHP: date = $row['date'] url パラメータでコミックの日付を取得:

        echo '<ul>';
            $imageCounter = 0;
            while ($imageCounter < $imagesPerPage && ($row = $catResult->fetch_assoc())) {                  
                echo '<li>';
                    echo    '<span class="comics"><a href=".?action=viewimage&site='.$site. '&id=' . $row['id'] .'">
                            <img src="./scripts/thumber.php?date='. $row['date'] . '&img=.' . $thumbpath.$row['thumb'] . '&mw=220&mh=220"/></a> 
                            <br /><br /> ' . $row['description'] . '</span>';                               
                echo '</li>';
                $imageCounter++;
            }
    echo '</ul>';

次に、日時をその日付に設定します...

$datetime1 = date_create($_GET['date']);

さて、どうにか設定したいのですがdatetime2 = (datetime1 + 3 days)...

じゃあ比べて…

if ($datetime1 < $datetime2) {
   set "comics" span class in CSS file to something else that would somehow highlight the newest post...
}
else {
   set "comics" span class in CSS file to default
}

私がやろうとしていることを達成するためのより簡単な方法はありますか?

編集 - - - - - - - - - - - - - - - -

私は現在、最新のコミックを 3 日間ハイライトするためにこれを試みています...残念ながら、条件が満たされた場合、すべてのコミックではなく最新のコミックのみをハイライトする方法を理解するのに苦労しています.

    //GET date  
        $desc = (isset($_GET['description']) ? ($_GET['description']) : null);  


    $row = $catResult->fetch_assoc();

    $current_date = new DateTime;
    echo "Current Date: " . $current_date->format('Y-m-d H:i:s');

    echo "<br />";

    $comic_date = new DateTime($row['date']);
    echo "Comic Date: " . $comic_date->format('Y-m-d H:i:s');

    $comic_date->modify('3 day');


    //DISPLAY IMAGES TO CORRECT PAGE FROM DATABASE  
    echo '<ul>';
        $imageCounter = 0;
        while (($row['date'] < $current_date) && ($imageCounter < $imagesPerPage) && ($row = $catResult->fetch_assoc())) {
                echo '<li>';                
                    echo    '<span class="comics"><a href=".?action=viewimage&site='.$site. '&id=' . $row['id'] .'">
                                <img src="./scripts/thumber.php?img=.' . $thumbpath.$row['thumb'] . '&mw=220&mh=220"/></a> 
                                <br /><br /> ' . $row['description'] . $row['date'] . '</span>';                                
                    $imageCounter++;
                echo '</li>';

            }   

        if ($row['date'] >= $current_date) {
                echo '<li>';                
                    echo    '<span class="newcomics"><a href=".?action=viewimage&site='.$site. '&id=' . $row['id'] .'">
                                <img src="./scripts/thumber.php?img=.' . $thumbpath.$row['thumb'] . '&mw=220&mh=220"/></a> 
                                <br /><br /> ' . $row['description'] . $row['date'] . '</span>';                                
                    $imageCounter++;
                echo '</li>';
            }
    echo '</ul>';   
4

4 に答える 4

2

「さて、どうにかしてdatetime2 = (datetime1 + 3 days)を設定したいのですが...」

strtotime()日付を秒に変換するために使用します。その後、好きなようにそれをいじることができます。

例えば:

$expiry_date = strtotime($time_stamp) + 259200; // 259200 = 3 days in seconds

次に、次のように日付を確認します。

if($expiry_date < date("Y-m-d", time()) {
于 2013-01-07T00:02:12.490 に答える
2

日付をDateTimeと比較するのは非常に簡単です。

日付を変更して比較する方法の例:

# PHP >= 5.4
$row['date'] = '2013-01-03 16:15:14';
$d = (new DateTime($row['date']))->modify('3 day');
echo $d >= (new DateTime) ? 'NEW' : 'OLD';

# PHP < 5.4
$row['date'] = '2013-01-03 16:15:14';
$n = new DateTime;
$d = new DateTime($row['date']);
$d->modify('3 day');
echo $d >= $n ? 'NEW' : 'OLD';

また

これは、SQL ステートメントで行うことができます。

SELECT
    t.*,
    t.date >= DATE_SUB(NOW(), INTERVAL 3 DAY) AS is_new
FROM 
    someTable AS t
于 2013-01-07T00:09:38.397 に答える
1

完全を期すために、たとえば次のように、SQLクエリでこれを行うこともできることに注意してください。

SELECT *, (date >= DATE_SUB(NOW(), INTERVAL 3 DAY)) AS is_new
FROM comics
ORDER BY date DESC

( SQLize のデモ)

于 2013-01-07T00:22:58.883 に答える
-1

簡単な解決策は、投稿された日付をデータベースに保存してから、JavaScriptコードを使用して計算をすべてクライアント側に移動することです。data-posted="...." のような属性を設定することで、投稿日を javascritpt クライアント側に公開できます。

于 2013-01-07T00:01:53.017 に答える