Avatar billede kirsten Nybegynder
29. september 2004 - 19:08 Der er 12 kommentarer og
1 løsning

opdatere dato i tabel

Hej,
hvordan opdatere man en dato i en tabel.
Feks så vil jeg gerne ligge 3 dage til en allerede eksisterende dato i tabellen.
Formattet er date( "d.m.Y - H:i" );
Avatar billede bromer Nybegynder
29. september 2004 - 19:12 #1
Først henter du datoen ud od finder et unix timestamp ved brug af mktime().

Derefter lægger du 60*60*24*3 (3 dage) til timestampet. Så opdaterer du datoen til date("d.m.Y - H:s")
Avatar billede erikjacobsen Ekspert
29. september 2004 - 19:19 #2
det er noget nemmere hvis du bruger den indbyggede type: DATETIME, 2004-09-29 19:19:19
Avatar billede kirsten Nybegynder
29. september 2004 - 19:26 #3
ja,
men datoen er fra et input felt som bruger selv retter til, så jeg syntes selv at formateringen er lettere?!?
Avatar billede bromer Nybegynder
29. september 2004 - 19:29 #4
Selvom brugeren retter datoen er det stadig smart at datoer bliver gemt i et format som databasen også kender som en dato. Så kan du bruge alle de dato-tids funktioner som databasen tilbyder.
Avatar billede kirsten Nybegynder
29. september 2004 - 19:46 #5
okay, jeg kigger på datetime istedet.. :)
Avatar billede kirsten Nybegynder
29. september 2004 - 20:00 #6
Hvordan omformatere jeg datetime så brugeren har let ved at rette dato og tid til i en form og omvendt tilbage til tabellen?
Avatar billede bromer Nybegynder
29. september 2004 - 20:24 #7
Du kender jo formaet på en datatime, så der kan du bruge explode og så sætte sammen igen  på en anden måde. Tilbage kan du jo gøre som jeg skrev i min førte post og bruge mktime..
Avatar billede kirsten Nybegynder
30. september 2004 - 19:38 #8
Jeg har nu omkodet koden så det passer til datetime..
$start_date = explode(".", $_POST["start_date"]);
$now = getdate();
$datetime_start = $start_date[2] . "-" . $start_date[1] . "-" . $start_date[0] . " " . $start_date[3] . ":" . $start_date[4] . ":" . $nu["seconds"];

Vil i forklare mig hvordan jeg så lægger de 3 dage til med datetime?
Avatar billede bromer Nybegynder
30. september 2004 - 21:14 #9
Hvis du har en dato i Y-m-d H:i:s format kan du lave det om til et unix timestamp ved brug af mktime, se : http://dk2.php.net/mktime. Derefter kan du lægge 60*60*24*3 (3 dage) til dit timestamp du fik fra mktime og derefter igen lave det om til en datetime dato (og opdatere i databasen) ved date("Y-m-d H:i:s",$timestamp); Se også http://dk2.php.net/date
Avatar billede erikjacobsen Ekspert
30. september 2004 - 21:36 #10
Joh, men nu havde vi jo lovet det skulle være smart. Du kan direkte i din SQL:

    update dintabel set dato=adddate(dato,interval 3 day) where ...

hvor dato er et DATETIME felt
Avatar billede bromer Nybegynder
30. september 2004 - 21:45 #11
Joh, men jeg havde forstået det sådan så at brugeren har mulighed for at redigere i datoen fra et input felt. Så skal man først opdatere i databasen og derefter køre din query. Her er der så bare mulighed for at brugeren har rettet til så datoen ikke giver mening mere. Det "undgår" man ved at køre tingene igennem mktime.

Man kan så diskutere hvorvidt datoen er noget værd overhoved, hvis brugeren har indtastet f.eks. 2005-14-54 24:10:11, men man undgår fejl...
Avatar billede kirsten Nybegynder
30. september 2004 - 22:04 #12
Nej erikjacobsen's eksempel er lige hvad jeg skal bruge.
Brugeren skal ikke have mulighed for at redigere datoen,
det er noget der skal foregå automatisk.

Jeg siger tak for kampen og jeg lærte noget igen... :)
Jeg ved at erikjacobsen ikke tager point, så hvis bromer vil have dem så er du velkommen til at smide et svar.
Avatar billede bromer Nybegynder
30. september 2004 - 22:08 #13
hvorfor gør du ikke det eric?
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