Avatar billede danielic Nybegynder
25. januar 2006 - 08:46 Der er 9 kommentarer og
1 løsning

DELETE FROM chat kan i hjælpe mig

Hej experter :)

Jeg har prøvet at lave en chate side, det fungere fint (www.hp4.dk/other/chat/index.php), men jeg skulle gerne have sådan at den automatisk skulle slette besked som er 2 - 3 minutter gamle.

Jeg har et felt i min tabel der hedder Date
Her er mit forsøg:
mysql_query("DELETE FROM chat WHERE date <'time()-7200");

Men det fungere vist ikke helt :S, nogle der kan hjælpe mig ?

MvH Daniel
Avatar billede fennec Nybegynder
25. januar 2006 - 09:13 #1
Hvordan ser dine data i "date" ud. Er det med dato eller kun timer:min:sek.
Avatar billede danielic Nybegynder
25. januar 2006 - 09:15 #2
Den ser sådan her ud:

Timer:min-sek
Avatar billede innercitydk Nybegynder
25. januar 2006 - 09:26 #3
Har du ikke glemt et anførselstegn i den sql du skrev (omkring time())?

mysql_query("DELETE FROM chat WHERE date <'time()'-7200");
Avatar billede fennec Nybegynder
25. januar 2006 - 09:35 #4
For det første vil jeg så anbefale dig at få lavet det om til et fuldt dato/time, ellers løber du i problemer omkring midnat. Du skal altså gemme både dato og tid (yyyy-mm-dd hh:mm:ss), og det skal være i et felt af dato-typen. Tekstfelter dur ikke...

derefter kan du bruge sql'en:
delete from chat where datoCol < DATE_ADD(NOW(), INTERVAL -2 MINUTE)
Avatar billede danielic Nybegynder
25. januar 2006 - 12:54 #5
Det virker ikke :S

måske har jeg gjort noget forkert ?
Avatar billede fennec Nybegynder
25. januar 2006 - 13:17 #6
Hvordan ser din chat tabel ud (hvilke kolonner og datatyper er der)??
Avatar billede fennec Nybegynder
25. januar 2006 - 13:19 #7
Hvis du har kaldt din kolonne date (som du har tidliger), så skal du lige have ` omkring den i selecten:
delete from chat where `date` < DATE_ADD(NOW(), INTERVAL -2 MINUTE)

date er nemlig et reserveret ord.
Avatar billede danielic Nybegynder
25. januar 2006 - 13:41 #8
Jeg har lige kopierede en dump for tabellen chat

Den kommer her:

CREATE TABLE `chat` (
  `id` int(11) NOT NULL auto_increment,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(50) NOT NULL default '',
  `name` varchar(50) NOT NULL default '',
  `message` varchar(250) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Avatar billede danielic Nybegynder
25. januar 2006 - 14:00 #9
Hmm tak for hjælpen det hjalp :)

Nu virker det :)

//Lukket

MvH Daniel
Avatar billede fennec Nybegynder
25. januar 2006 - 14:00 #10
Så er det fordi "date" er reserveret, og du skal bruge koden fra min tidligere post. Det er desuden en god ide at indgå de reserveret ord til tabel/kolonne navne, da man ofte glemmer at smide ` omkring.

Du finder en komplet liste af reserveret ord her:
http://dev.mysql.com/doc/refman/5.0/en/maxdb-reserved-words.html
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester