[PHP-users 29189] Re: Smarty で日付計算?

ml@colosuke.net ml @ colosuke.net
2006年 5月 11日 (木) 21:24:56 JST


上田です。

テンプレート側で、という方法は他の方が紹介されているので違ったアプローチ
を。

例えば、MySQLでデータを引っ張ってくる時点で日付計算をさせておく方法があ
ります。

SELECT IF(DATE_ADD(NOW(), INTERVAL -7 DAY) < post_date,1,0) AS is_new,
table.* FROM table;

post_date フィールドに投稿日時が入っている場合、post_dateが7日以内であれ
ば is_new フィールドに 1 が、そうでなければ 0 が入って取得できます。

これをassignして利用してテンプレート側で
{if $is_new} <span>NEW!</span> {/if} なんたらかんたら〜
と簡単に判別することが可能です。

配列に入れてforaechで回してどうのとかはお好みで。

assignする前にPHPで取得してきたレコードを全て舐めながらフラグを立ててい
くのもひとつの手ですが、この方法ではその手間が省けます。


いかがでしょう?

On Thu, 11 May 2006 17:48:56 +0900
c-atwork <ml @ c-atwork.com> wrote:

> 加藤と申します。お世話になっております。
> php4.3.11+smarty2.6.6+MySQL3.23で開発を行っています。
> 掲示板のようなプログラムを作っています。
> 
> MySQLから受け取った配列をSmarty テンプレートに投げるのですが、日付の要素
> があるので、本日と日付計算して「new」マークを表示させようと考えています。
> この場合テンプレート側で本日との差を演算して、たとえば7日以内であればnew
> を付けるというやりかたは賢くないのでしょうね?
> php側で処理させるのが普通なんだと思うのですが、こういった場合はどのよう
> にされていますか?配列に要素を追加してフラグかなにか立てていますか?
> 
> へんな書き方だったら申し訳ございません。
> よろしくお願いいたします。
> 
> 
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ Kazuhisa Katoh
> kvex @ c-atwork.com http://c-atwork.com/
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3




PHP-users メーリングリストの案内