23. marts 2005 - 12:58
Der er
30 kommentarer og 1 løsning
PHP: getdate
Hej ! Har denne: --------------------------- $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; $time_array = getdate(); $tid = $time_array("H:i"); $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, tid, forfatter, nyhed) --------------------------- Jeg skal have skrevet tiden ud som fx kl. 20.15. Skal man ikke bruge getdate()? Hvordan skal det ellers gøres? På forhånd tak!
Annonceindlæg fra Computerworld
23. marts 2005 - 13:03
#1
Skal du udskrive tidspunktet eller skal du indsætte det i en database? Din snippet ser lidt halvfærdig ud.
23. marts 2005 - 13:03
#2
Derudover er date("H:i") nok lidt mere oplagt :)
23. marts 2005 - 13:04
#3
Efter min mening skal du bruge et felt af typen DATETIME i tabellen til at opbevare dine dato/tid oplysninger. Der kan du så indsætte det aktuelle tidspunkt med enten NOW() (MySQL) eller time() (php). Du formaterer så resultatet når du trækker det ud af databasen.
23. marts 2005 - 13:06
#4
Tiden kan du så hente med: SELECT DATE_FORMAT(dato, '%H.%i') AS tid
23. marts 2005 - 13:07
#5
barklund >> koden er kun et uddrag af en større sammenhæng :) Jeg skal indsætte tiden i en database ja.
23. marts 2005 - 13:09
#6
jeg vil gerne indsætte tiden som text i databasen...
23. marts 2005 - 13:10
#7
Den anden måde at indsætte dato og tidspunkt på bliver du ked af i længden, da du ikke kan sortere ordentligt på felterne og formatering af udtrækket bliver osse meget fastlåst. Er der nogen speciel grund til at du vil have indsat tiden som text?
23. marts 2005 - 13:11
#8
Det ville nu give langt mere mening at indsætte det som DATETIME, men hvis du insisterer, brug date: $dato = date("d/m/Y"); $tid = date("H:i"); Det er nok smartest - efter ovenstående :) -- Morten Barklund
23. marts 2005 - 13:12
#9
jeg ville bare mene at det er nemmere at trække ud af databasen, så man ikke skal til at formatere indholdet... desuden er databasen bygget op med en auto_increment som man kan sortere ud fra..
23. marts 2005 - 13:16
#10
Du afskærer dig altså fra muligheden for at udtrække data fra bestemte måneder, ugedage, år, osv. på en enkel måde eller fx bestemte perioder o.l.
23. marts 2005 - 13:17
#11
barklund >> Lige et tillægsspørgsmål.. Hvis jeg gerne vil have den til at skrive 23. marts 2005 istedet for 23/3/2005, kan det så gøres ret smertefrit?
23. marts 2005 - 13:25
#12
Det skal jeg ikke kunne sige - tror det kræver et array af måneder, men måske det kan klares med noget locale.
23. marts 2005 - 13:25
#13
Og jeg vil stadig bakke detox' udsagn op 100% :)
23. marts 2005 - 13:27
#14
detox >> Gider du at præsentere noget kode for mig så.. Jeg kan ikke rigtigt gennemskuen den...
23. marts 2005 - 13:34
#15
Fx med DATETIME feltet 'dato': $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$program', '$netvaerk', '$overskrift', NOW(), '$forfatter', '$nyhed')";
23. marts 2005 - 13:36
#16
En dato som: 23. marts 2005 vil så kunne klares i den her stil: setlocale( LC_TIME, "da", "dan", "da_DK", "da_DK.ISO8859-1", "danish" ); $res = mysql_query("SELECT UNIX_TIMESTAMP(dato) dato FROM fs_news"); while ($row = mysql_fetch_assoc($res)) { echo strftime('%d. %B %Y',$row['dato']); }
23. marts 2005 - 13:39
#17
En næsten ligeså effektiv metode er at indsætte dato/tid i et INT felt som unix timestamp, fx: $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$program', '$netvaerk', '$overskrift', time(), '$forfatter', '$nyhed')"; Så er udtrækket endnu mere simpelt: setlocale( LC_TIME, "da", "dan", "da_DK", "da_DK.ISO8859-1", "danish" ); $res = mysql_query("SELECT dato FROM fs_news"); while ($row = mysql_fetch_assoc($res)) { echo strftime('%d. %B %Y',$row['dato']); }
23. marts 2005 - 13:41
#18
Skal time() ikke kaldes i PHP? ellers kunne man vel skrive UNIX_TIMESTAMP(NOW()) i mysql?
23. marts 2005 - 13:50
#19
Jo, selvf. det skulle være: $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$program', '$netvaerk', '$overskrift'," . time() . ", '$forfatter', '$nyhed')";
23. marts 2005 - 13:53
#20
Eller: $time = time(); $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$program', '$netvaerk', '$overskrift', $time, '$forfatter', '$nyhed')"; eller som barklund foreslår: $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$program', '$netvaerk', '$overskrift', UNIX_TIMESTAMP(NOW()), '$forfatter', '$nyhed')";
23. marts 2005 - 13:54
#21
denne kode giver blot "0000-00-00 00:00:00" i feltet "dato" ----------------------------- $insertSQL = "insert into fs_news (program, netvaerk, overskrift, dato, forfatter, nyhed) VALUES ('$_POST[program]', '$_POST[netvaerk]', '$_POST[overskrift]', " . time() . ", '$_POST[forfatter]', '$_POST[nyhed]')"; mysql_query($insertSQL); -----------------------------
23. marts 2005 - 13:57
#22
samme gør UNIX_TIMESSTAMP(NOW())
23. marts 2005 - 13:59
#23
sorry...min fejl... feltet er nu INT
23. marts 2005 - 14:07
#24
hvordan udskriver jeg så tiden som H.i ?
23. marts 2005 - 14:10
#25
Hvis det er eks. med INT feltet: $res = mysql_query("SELECT dato FROM fs_news"); while ($row = mysql_fetch_assoc($res)) { echo date('H.i',$row['dato']); }
23. marts 2005 - 14:11
#26
Evt.: printf('kl. %s', date('H.i',$row['dato']);
23. marts 2005 - 14:13
#27
hmm> printf('kl. %s', date('H.i',$row['dato']));
23. marts 2005 - 14:16
#28
er printf('kl. %s', date('H.i',$row['dato'])); istedet for echo date('H.i',$row['dato']); ??
23. marts 2005 - 14:37
#29
Ja, det er mere hvis du vil have det ud som fx: "kl. 14.38"
23. marts 2005 - 15:14
#30
ok... læg nogle svar og få point...
23. marts 2005 - 18:37
#31
Værsgo'
Vi tilbyder markedets bedste kurser inden for webudvikling