English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

目前我在做最新消息的部分,希望每個消息都有時效性,
也就是說我希望我發布的消息在我所設定的時間到期後會自動刪除這項消息
不用我手動刪除,請問有這種語法嗎?

2006-10-15 09:02:14 · 4 個解答 · 發問者 屈原 1 in 電腦與網際網路 程式設計

存在資料庫裡,我打算作手動跟自動兩個方式刪除

2006-10-15 09:31:08 · update #1

我原本的資料表是CREATE TABLE `newspaper` (
`number` INT NOT NULL AUTO_INCREMENT,
`subject`TINYTEXTNOT NULL
`name` TINYTEXT NOT NULL ,
`date` DATE NOT NULL ,
`memo` TINYTEXT NOT NULL ,
PRIMARY KEY ( `number` )
);我是要加上`starttime`
`endtime` 就好了嗎還是要怎樣?我那個date是發布的時間,他自己會自動寫出,這樣會衝突嗎

2006-10-15 18:48:23 · update #2

4 個解答

再下也提供一個方法,是用關閉的觀念,而非真正的刪除方式這樣可以達到您要的自動刪除(關閉)或手動刪除(真正刪除)CREATE TABLE `news` (`id` INT NOT NULL AUTO_INCREMENT,`starttime` INT NOT NULL ,`endtime` INT NOT NULL ,`text` TEXT NOT NULL ,PRIMARY KEY ( `id` ) );以上Table主要為starttime(張貼時間)、endtime(結束時間)其他欄位您自行斟酌增加在新增的時候您要處理的有1. starttime 跟 endtime 都用自動的那就是要進資料庫前給予兩個變數分別$starttime=date("U");$endtime=date("U",mktime(0,0,0,date("m"),date("d")+n,date("Y"))); //n=看您要讓最新消息再幾天後關閉2. starttime 是自動 endtime 是經由設定那您在新增最新消息時的介面中,要有一個欄位(或三個下拉選單)是填寫關閉日期假設您是用一個欄位填寫關閉日期,欄位為endtime那就要在進資料庫前將自兩個變數分別處理$starttime=date("U");sscanf($_POST['endtime'], "%d-%d-%d", $ey, $em, $ed);$endtime=date("U",mktime(0,0,0,$em,$ed,$ey));假設您是用三個下拉選單分別為year , month , day那就要在進資料庫前將自兩個變數分別處理$starttime=date("U");$endtime=date("U",mktime(0,0,0,$_POST['month'],$_POST['day'],$_POST['year']));新增時候的sql$SQL="insert into news (starttime,endtime,text)values('$starttime','$endtime','$text')";那麼,您在List出最新消息的檔案中SQL則這樣寫$today=date("U");$SQL="select * from news where endtime > '$today'";這樣就只要是過期的最新消息,就通通不會出來了最後,您的管理後端,當然還是 $SQL="select * from news"; 就好您可以在讀出每一筆時寫個判端$today=date("U");if ($endtime < $today) { $news_stats="過期消息"; //而將此 $news_stats 放在厜新消息的標題中}如此一來,就可以達成消息時間一到就自動關閉而實際上您又可以手動管理(最後您可以真的刪掉,或是保留,或是重新張貼(更改掉過期日,讓該則訊息變成未過期))。

2006-10-16 23:22:58 補充:
您的date欄位就是我舉的例子的starttime欄位,所以,您只要補一個endtime的欄位就可以了,但要注意一下,不管是starttime還是endtime欄位,我都是用date("U"); 也就是產生unix timesamp,所以要用10個字元的INT或varchar欄位。

2006-10-17 03:29:50 補充:
TO : 酷走兄~~~
您的接受網友來信沒有開啟,所以我無法回你寄給我的信,也所以,我先將另一問題直接先貼出來了。
請移駕 http://tw.knowledge.yahoo.com/question/?qid=1206100507931

2006-10-17 22:49:09 補充:
哈~~~我知道...是因為酷走有在這邊答題,所以這樣貼看他會不會來這裡時看到這一段,借用你的問題通知,不好意思。
也祝您早日解決問題。

2006-10-15 18:06:11 · answer #1 · answered by 冷泡茶 6 · 0 0

我不是酷走,我是屈原

2006-10-17 10:50:52 · answer #2 · answered by 屈原 1 · 0 0

最簡單的方法是用Cron Job,定時檢查刪除,不然的話可以讓瀏覽者每次開啟某一頁的時候就順便檢查看看有沒有過期的消息,如果有的話直接刪除掉,用Cron Job做會比較簡單,而且也比較不會浪費資源 ~

下面是最簡單的例子,參考看看,下面的是用MySQL 然後時間是用UNIX時間戳記 ~
資料表名稱:announcement
到期時間欄位:expire (int)

$now = time();
$query = mysql_query("delete from announcement where expire < $now");

2006-10-15 14:09:39 · answer #3 · answered by 小呆 3 · 0 0

請問你的最新消息是存在資料庫裡的嗎?還是修改網頁式的靜態資料?

2006-10-15 13:40:02 補充:
那麼可以在使用者瀏覽最新消息的首頁時,加寫個刪除過期消息的SQL語法,這樣每當任何一位使用者要觀看最新消息時,程式便會自動幫你刪掉過期的消息。

一點建議供你參考。
還是有不懂的地方,可以再討論。

2006-10-15 09:40:02 · answer #4 · answered by Nick 3 · 0 0

fedest.com, questions and answers