Avatar billede Slettet bruger
22. november 2003 - 13:13 Der er 15 kommentarer og
1 løsning

konvertere tekststreng som dato og gemme som timestamp

Hej!

Tid til at spørge gutterne igen :)

Jeg har problemer med at samle en tekstreng, konvertere den til et timestamp herefter gemme den.

Eksempelvis vælger man 1 januar 2003 (01-01-2003)

DB:
-----------------------------------------
CREATE TABLE `datotest` (
  `id` int(11) NOT NULL auto_increment,
  `tekst` varchar(100) NOT NULL default '',
  `dato` timestamp(8) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
-----------------------------------------

PHP:
-----------------------------------------
$datosamlet = $_POST["aar"]."-".$_POST["maaned"]."-".$_POST["dag"];
$datosamlet = strtotime($datosamlet);
-----------------------------------------

SQL:
-----------------------------------------
$sql="INSERT INTO datotest (tekst, dato) VALUES ('".$_POST["tekst"]."', ".$datosamlet.")";
mysql_query($sql);
-----------------------------------------

Når jeg så efterfølgende hiver data ud fra db, så er det IKKE 1 januar 2003:


$sql ="SELECT tekst, DATE_FORMAT(dato,'%M %D, %Y') AS dato FROM datotest ORDER BY dato ASC";
$resultat = mysql_query($sql);
   
while($raekke = mysql_fetch_array($resultat)){ 
  echo "<tr><td>".$raekke['tekst']."</td><td>".$raekke['dato']."</td></tr>";
}

Dato resultat:
-----------------------------------------
November 11th, 2000
-----------------------------------------

Er der nogen der kan assistere?

På forhånd tak :)
Avatar billede Slettet bruger
22. november 2003 - 13:23 #1
Avatar billede Slettet bruger
22. november 2003 - 14:24 #2
anyone?
Avatar billede erikjacobsen Ekspert
22. november 2003 - 14:27 #3
Brug DATETIME, ikke TIMESTAMP
Avatar billede Slettet bruger
22. november 2003 - 14:32 #4
Njah, nu har jeg brugt 4 timer på at forsøge at lave et timestamp, så det skal det altså være....

Er det php funtionen strtotime, der ikke leverer det i unix timestamp eller hvad?
Avatar billede erikjacobsen Ekspert
22. november 2003 - 14:33 #5
Hvorfor det? TIMESTAMP gør noget helt andet. Og iøvrigt er det vis kun
DATE du behøver, da du ikke har et tidspunkt med.

Men brug du bare 4 timer mere hvis du synes det er sjovt :)
Avatar billede Slettet bruger
22. november 2003 - 14:37 #6
Det er jo for at lære lidt om denne datatype. Det er jo en meget nem løsning at give op på halvvejen ikke :)

Timestampet giver dig ufattelig mange formateringsmuligheder i forhold til en DATE
Avatar billede sukos Juniormester
24. november 2003 - 15:58 #7
Et timestamp indeholder 10 tal

CREATE TABLE ny (
  id tinyint(4) NOT NULL auto_increment,
  tid int(10) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


$datosamlet = mktime(0,0,0,$_POST["maaned"],$_POST["dag"],$_POST["aar"]);
Avatar billede Slettet bruger
24. november 2003 - 21:17 #8
Sukos -> hvor er datatypen 'timestamp'?

Jeg vil ikke smide det i en kolonne af typen int. :)

Nu bliver jeg stædig, er jeg virkelig den eneste som er interesseret i hvordan det skal postes?

Måske skal jeg spørge på en anden måde:

1. Du har en tekststreng.

2. Den skal laves om til et timestamp.

3. Hvordan skal man poste et timestamp til en database, i en kolonne af typen 'timestamp'?
Avatar billede sukos Juniormester
25. november 2003 - 13:15 #9
æhæh, mig som tog timestamp som et unix timestamp
Avatar billede erikjacobsen Ekspert
25. november 2003 - 13:23 #10
Jeg vil ikke sige jeg er interesseret, men jeg ved det godt. Du skulle nu
bruge DATE i stedet for - eller sukos forslag om et "rigtigt" unix timestamp.
Men ok, med TIMESTAMP:

Erstat
  $datosamlet = $_POST["aar"]."-".$_POST["maaned"]."-".$_POST["dag"];
  $datosamlet = strtotime($datosamlet);
med
  $datosamlet = $_POST["aar"].$_POST["maaned"].$_POST["dag"];

hvor jeg antager aar er på 4 cifre, og maaned og dag på 2, med evt foranstillet
0 (ellers skal det lige fikses).
Avatar billede erikjacobsen Ekspert
25. november 2003 - 13:27 #11
Næh, du kan bare nøjes med at slette linien
  $datosamlet = strtotime($datosamlet);
i dit oprindelige eksempel
og skrive
  $sql="INSERT INTO datotest (tekst, dato) VALUES ('".$_POST["tekst"]."', '".$datosamlet."')";
så behøver du ikke foranstillede 0-er
Avatar billede Slettet bruger
27. november 2003 - 18:22 #12
erikjakobsen -> det var da lige det det var! :)

Den eneste jeg IKKE havde prøvet... - poste direkte!

hvornår er strtotime aktuel?
Avatar billede erikjacobsen Ekspert
27. november 2003 - 18:39 #13
Hvis man skal have et unixtimestamp - ikke det samme som et mysql-timestamp.
Avatar billede Slettet bruger
05. januar 2004 - 21:41 #14
ok. tak det var fedt at få afklaret. Smid et svar, så får du point :)
Avatar billede erikjacobsen Ekspert
05. januar 2004 - 21:48 #15
ok da ;)
Avatar billede Slettet bruger
07. januar 2004 - 19:03 #16
versesågod, tak for hurtig hjælp! :)
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