Avatar billede cmol Nybegynder
16. maj 2004 - 12:55 Der er 17 kommentarer og
1 løsning

Datohåndtering

Hej

Er der en der gidder at hjælpe med at lave dette om til en mysql datohåndterein??


"
$dato = date('d/m/Y H:i:s');
mysql_query("INSERT INTO codebase (gamename, author, email, abc, date, thecode) VALUES ('$gamename', '$author', '$email', '$abc', '$date', '$thecode')") OR DIE (mysql_error());
mysql_close;
header("Location: index.php");
"
Avatar billede mjl Nybegynder
16. maj 2004 - 13:06 #1
Din $date skal jo være $dato ikke a men o til sidst...

Dato kunne jo også være;

$dato = time();
Avatar billede mjl Nybegynder
16. maj 2004 - 13:07 #2
time() gi'r et 10 cifret tal, du bagefter kan udskrive med...

$hentet_dato = date("d.m.Y - H:i:s",$hentet_dato);
echo $hentet_dato;
Avatar billede cmol Nybegynder
16. maj 2004 - 13:08 #3
Ja, men det jeg gerne ville ha hjælp til var at lave det om til en MySQL dato måde!!!
Avatar billede mjl Nybegynder
16. maj 2004 - 13:11 #4
Hvis du bruger time() og i MySQL bruger INT (12) så vil du gemme din dato i time() formattet, der senere kan bruges på forskellig vis...

time() lige nu er = 1084705820 og det er faktisk det antal sek. der er gået fra 1970 til nu - du regner altså på denne måde i sek. som kan udnyttes på mange gode måder...
Avatar billede cmol Nybegynder
16. maj 2004 - 13:12 #5
Kan du ikk prøve og gi et eksempel... Jeg fatter ikk helt hvad det er du mener!!!
Avatar billede mjl Nybegynder
16. maj 2004 - 13:18 #6
ok...

Du kan jo udskrive resultatet af din time() som alm. dato ved hjælp af date() funktionen - og udregne tids differencer med videre...

F.eks.

Hvis du har en dato i din database, der er sidste indtastning, og du vil udregne og udskrive hvor lang tid det er siden det blev skrevet, så trækker du dit 10 cifrede tal fra tiden lige nu, og udskriver resultatet med date() funktionen...

F.eks. tiden nu 1084706262 minus tiden fra før 1084705820 = 442 sek. som er 7 min. og 22 sek. siden
Avatar billede mjl Nybegynder
16. maj 2004 - 13:20 #7
Det 10 cifrede tal, du får i din database med time() funktionen, gør at tid pludselig er et tal, i stedet for f.eks. 16/5-2004 13:21 - alm. tal er jo lettere at "lege" med
Avatar billede cmol Nybegynder
16. maj 2004 - 13:21 #8
Hva gør jeg så hvis jeg køre med en sådanher databse?

Feltnavn  Datatype Attributter Nulværdi Standardværdi
date      datetime            Nej      0000-00-00 00:00:00
Avatar billede mjl Nybegynder
16. maj 2004 - 13:23 #9
Du kan selvfølgelig bruge datetime i din database - så er der måske lige en anden, der kan hjælpe dig med PHP delen til det - personligt er jeg glad for at sætte tiden ind som alm. tal fordi jeg bedre kan bruge det i andre sammen hænge...
Avatar billede mjl Nybegynder
16. maj 2004 - 13:24 #10
...og som sagt - udskrivningen af din tid i dette format

16.05.2004 - 13:25:47

gøres jo let ved

$hentet_dato = date("d.m.Y - H:i:s",$hentet_dato);
echo $hentet_dato;
Avatar billede cmol Nybegynder
16. maj 2004 - 13:24 #11
ok så... jeg er ikk så god til dato ting med php... så datetime er hvist nok det nemmeste for mig at bruge!!!

men ellers tak :D
Avatar billede mjl Nybegynder
16. maj 2004 - 13:25 #12
No problem - håber du får det til at svinge...
Avatar billede muddi Praktikant
16. maj 2004 - 20:58 #13
Hvis dit felt i mysql er et datofelt, kan du blot bruge mysql's egen funktion NOW(), som angiver det nuværende datoformat. Det er faktisk hurtigere (ikke noget mærkbart) at lade mysql indsætte datoen, i stedet for at bruge php til det.
Du skal nok overveje at kalde dit felt `date` i tabellen noget andet, da date er et reserveret ord i de fleste databaser, og du risikerer at din kode ikke virker længere, efter din udbyder opdaterer til en nyere version af mysql!

------
mysql_query("INSERT INTO codebase (gamename, author, email, abc, date, thecode)VALUES ('$gamename', '$author', '$email', '$abc', NOW(), '$thecode')")
    OR DIE (mysql_error());
mysql_close;
header("Location: index.php");
------

Når du henter dine data fra databasen, kan du igen bruge mysql til at formatere datoen med (da det igen er hurtigere at lade databasen gøre arbejdet!)

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%d/%m/%Y %H%i%s');

Læs i øvrigt mere om datoer i mysql her:
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Avatar billede muddi Praktikant
16. maj 2004 - 20:59 #14
det nuværende datoformat = den nuværende dato!
Avatar billede muddi Praktikant
16. maj 2004 - 21:05 #15
mjl >> Du kan ikke ændre længen på en INT ved at skrive INT(12), INT er altid 11. Dette er fordi en INT kan være mellem -2147483648 og 2147483647 (4 bytes).
Hvis du vil gemme større tal, skal du bruge BIGINT, som kan indeholde tal mellem -9223372036854775808 og 9223372036854775807 (8 bytes).

Hvis du vælger UNSIGNED INT kan feltet dog indeholde tal helt op til 4294967295. Men så er det ikke længere muligt at gemme negative tal. Hvilket heller ikke vil være aktuelt med datoer, da en dato ikke kan være negativ.
Avatar billede mjl Nybegynder
16. maj 2004 - 21:52 #16
ok - muddi - tak!
Avatar billede muddi Praktikant
18. maj 2004 - 10:42 #17
cmol >> Har du fået det til at virke?
Avatar billede cmol Nybegynder
18. maj 2004 - 11:50 #18
hehe...... ja... Mange tak for hjælpen!!!
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