Avatar billede mr.t.man Nybegynder
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!
Avatar billede barklund Nybegynder
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.
Avatar billede barklund Nybegynder
23. marts 2005 - 13:03 #2
Derudover er date("H:i") nok lidt mere oplagt :)
Avatar billede detox Nybegynder
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.
Avatar billede detox Nybegynder
23. marts 2005 - 13:06 #4
Tiden kan du så hente med:

SELECT DATE_FORMAT(dato, '%H.%i') AS tid
Avatar billede mr.t.man Nybegynder
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.
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 13:09 #6
jeg vil gerne indsætte tiden som text i databasen...
Avatar billede detox Nybegynder
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?
Avatar billede barklund Nybegynder
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
Avatar billede mr.t.man Nybegynder
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..
Avatar billede detox Nybegynder
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.
Avatar billede mr.t.man Nybegynder
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?
Avatar billede barklund Nybegynder
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.
Avatar billede barklund Nybegynder
23. marts 2005 - 13:25 #13
Og jeg vil stadig bakke detox' udsagn op 100% :)
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 13:27 #14
detox >> Gider du at præsentere noget kode for mig så.. Jeg kan ikke rigtigt gennemskuen den...
Avatar billede detox Nybegynder
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')";
Avatar billede detox Nybegynder
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']);
}
Avatar billede detox Nybegynder
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']);
}
Avatar billede barklund Nybegynder
23. marts 2005 - 13:41 #18
Skal time() ikke kaldes i PHP? ellers kunne man vel skrive UNIX_TIMESTAMP(NOW()) i mysql?
Avatar billede detox Nybegynder
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')";
Avatar billede detox Nybegynder
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')";
Avatar billede mr.t.man Nybegynder
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);
-----------------------------
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 13:57 #22
samme gør UNIX_TIMESSTAMP(NOW())
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 13:59 #23
sorry...min fejl... feltet er nu INT
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 14:07 #24
hvordan udskriver jeg så tiden som H.i ?
Avatar billede detox Nybegynder
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']);
}
Avatar billede detox Nybegynder
23. marts 2005 - 14:11 #26
Evt.:

printf('kl. %s', date('H.i',$row['dato']);
Avatar billede detox Nybegynder
23. marts 2005 - 14:13 #27
hmm>

printf('kl. %s', date('H.i',$row['dato']));
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 14:16 #28
er
printf('kl. %s', date('H.i',$row['dato']));
istedet for
echo date('H.i',$row['dato']);
??
Avatar billede detox Nybegynder
23. marts 2005 - 14:37 #29
Ja, det er mere hvis du vil have det ud som fx: "kl. 14.38"
Avatar billede mr.t.man Nybegynder
23. marts 2005 - 15:14 #30
ok... læg nogle svar og få point...
Avatar billede detox Nybegynder
23. marts 2005 - 18:37 #31
Værsgo'
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