Avatar billede mik789 Nybegynder
29. august 2004 - 15:23 Der er 14 kommentarer og
2 løsninger

sortere p.g.a tidsstrenge

Jeg har et forum hvor tiden indsættes i en MySQL tabel som tinytext med:

$tid = date("d.m.Y H:i:s");

Da feltet har egenskaben tinytext er der altså tale om tekststrenge. Sp. er nu: hvis jeg vil hente indlæg ind til visning og sortere dem efter tid, hvordan gør jeg så, når de nu ikke længere er tal, men tekststrenge? Er der en funktion der oversættet til tid? Eller anden fidus?
Avatar billede mik789 Nybegynder
29. august 2004 - 15:24 #1
ps: normalt ville jeg jo bare tilkende alle indlæg et tal-id, men her skal der joines fra forskellige forumkategorier og derfor kan jeg ikke bruge de id'er som de forskellige indlæg har fået tildelt, men kun den tid hvor de er afsendt.
Avatar billede htm Nybegynder
29. august 2004 - 15:25 #2
Det er ikke det smarteste at gemme en tid og dato med...

Du kan sikkert med succes bruge http://dk.php.net/strtotime
Avatar billede htm Nybegynder
29. august 2004 - 15:27 #3
Det kan lige pointeres at det bedste ville være at enten bruge unix-timestamp og gemme det i databasen eller bruge MySQLs funktioner til tid og dato.

strtotime omsætter en dato til et unixtimestamp, og så kan du sortere på det.
Avatar billede mik789 Nybegynder
29. august 2004 - 15:30 #4
htm> ok. jeg har gemt det som tinetext, fordi jeg vil have det ud i formatet:

08.03.2004 15:24.11

og ikke lige kunne se hvordan jeg gjorde det med Sql's tid-felter. Men kan jeg godt få det ønskede format uden at skulle bruge et tekst-felt?
Avatar billede htm Nybegynder
29. august 2004 - 15:33 #5
Gem det som unixtimestamp (antal sekunder siden 1/1 1970), og så formater det når du alligevel skrive det ud.

så du laver

$tid = date("d.m.Y H:i:s",$ditfeltfradatabasen);

når du hiver data ud, og voila, så er det formateret, mens det stadig er gemt som unix_timestamp.
Avatar billede mik789 Nybegynder
29. august 2004 - 15:40 #6
ok... forsøger
Avatar billede mik789 Nybegynder
29. august 2004 - 15:54 #7
hvordan indsætter jeg så tiden i tabellen, når formatet er MySQL "timestamp"? Med den kode jeg brugte før - $tid = date("d.m.Y H:i:s"); - gjorde jeg sådan:

insert into forum (art_id, afsender, overskrift, tid, text) values ('$artID', '$navn', '$overskr', '$tid', '$indlTekst')");

dvs. tiden kom fra browseren. men når jeg bruger timestamp sættes tiden vel i mysql fra serveren eller hvordan? og hvordan definerer jeg nu $tid INDEN den insertes i tabellen.
Avatar billede htm Nybegynder
29. august 2004 - 15:56 #8
$tid = time();

så tager den den aktuelle tid som Unix_timestamp.

og så er det det samme ;)
Avatar billede mik789 Nybegynder
29. august 2004 - 16:02 #9
ok, fattede det. og hvis jeg sætter feltet i tabellen til "not null", behøver jeg vel slet ikke at indsætte noget, for så indsættes timestampet automatisk. og så kan jeg vente med at formatere til bagefter - som du sagde.
Avatar billede mik789 Nybegynder
29. august 2004 - 16:33 #10
mærkeligt! jeg har lavet en lille test med et par indlæg, og et timestamp som i MySql tabellen siger: 20040829155837 - bliver med:

echo date("d.m.Y H:i:s",$arrayTid[tid_stamp]) til:

19.01.2038 04:14:07

? hvad sker der her?
Avatar billede htm Nybegynder
29. august 2004 - 16:43 #11
Ja det Timestamp du bruger der er MySQLs timestamp. Du skal bruge Unix_timestamp.

MySQLs Timestamp er YYYYMMDDHHmmss hvor Unix-timestamp er antal sekunder siden 1/1 1970

phps time() producerer et unixtimestamp.

måske du kan skrive:

SELECT UNIX_TIMESTAMP(dittimestampfelt)

Se også lidt her: http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Avatar billede hmortensen Nybegynder
29. august 2004 - 17:36 #12
Det letteste er at sætte feltet til typen 'timestamp'. Så skal du ik indsætte noget i feltet. Det gør den selv, når du propper data i en række.

Få at få timestampet formateret ved udtræk, kan dette benyttes:

SELECT *, DATE_FORMAT(date, '%d.%m.%y %H:%i:%s') AS date FROM table....
Avatar billede mik789 Nybegynder
30. august 2004 - 08:01 #13
hindu_skp>ja, det fungerer fint.

tak for hjælpen begge to. Lægger I et svar...
Avatar billede hmortensen Nybegynder
30. august 2004 - 09:15 #14
Det var så lidt
Avatar billede htm Nybegynder
30. august 2004 - 11:25 #15
ok :)
Avatar billede htm Nybegynder
30. august 2004 - 11:25 #16
jeg prøver igen :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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