Avatar billede masteraaen Novice
26. januar 2012 - 21:43 Der er 4 kommentarer og
1 løsning

php indsæt dato i mysql - fatter ikke

Hej.

Jeg har en mysql tabel med flere kolonner, som via en formular på en php-side, tilføjer nye records.

Fx. Navn, adresse, dato

Men jeg kan simpelthen ikke få det sidste felt "dato" til at fungere.

I Mysql har jeg oprettet en kolonne med

Datatype: Date
Længde/værdi: blank
Standardværdi: None
Kollation: blank
Attributter: blank
Nulværdi: ikke afmærket
auto-increment: ikke afmærket
Kommentarer: blank

Og i min php kode, har jeg en almindelig insert á la:

mysql_query("INSERT INTO tabelnavn (navn, adresse, dato)
VALUES ('$_POST[navn]', '$_POST[adresse]', '2012-01-26')");

Men jeg kan simpelthen ikke få den til at opdatere 'dato'-kolonnen i mysql tabellen. Denne viser altid bare 0000-00-00.

Jeg har prøvet at ændre til varchar og så står der straks 2012-01-26 i kolonnen, men jeg vil jo gerne have det til at fungere med date, da jeg skal 'regne' med det senere.
Avatar billede The_Buzz Novice
26. januar 2012 - 21:49 #1
Se http://phptips.dk/Datoer_i_PHP_og_MySQL.tip

Du kan bruge now() hvis du vil sætte tidspunkt exact nu


mysql_query("INSERT INTO tabelnavn (navn, adresse, dato)
VALUES ('$_POST[navn]', '$_POST[adresse]', now())");
Avatar billede masteraaen Novice
26. januar 2012 - 21:58 #2
OMG det virker lige med det samme med now().

Men hvad så, hvis jeg fx. vil have en specifik dato ind. Fx. hvis jeg vil have den 31-01-2012 ind?
Avatar billede The_Buzz Novice
26. januar 2012 - 22:05 #3
Det burde virke med

INSERT INTO tabelnavn (navn, adresse, dato)
VALUES ('$_POST[navn]', '$_POST[adresse]', '2012-01-31')


Et tip...

Sæt først hvad den skal gøre i en streng, og dernæst mysql_query

$sql = 'INSERT INTO tabelnavn (navn, adresse, dato) VALUES ("'.$_POST['navn'].'", "'.$_POST['adresse'].'", "2012-01-31")';

mysql_query($sql);

Læs også http://phptips.dk/brug_af_mysql_real_escape_string.tip

$navn= mysql_real_escape_string($_POST['navn']);

Det er også en ups at bruge $_POST['dumt'] values direkte i sql

i stedet angiv det som en værdi:
$navn= mysql_real_escape_string($_POST['navn']);
$adresse = mysql_real_escape_string($_POST['adresse']);

$sql = 'INSERT INTO tabelnavn (navn, adresse, dato) VALUES ("'.$navn.'", "'.$adresse .'", "2012-01-31")';

mysql_query($sql);
Avatar billede arne_v Ekspert
27. januar 2012 - 00:56 #4
"" omkring strenge er ikke en god ting.

Hvis MySQL bliver sat i ANSI mode, saa virker det ikke laengere.
Avatar billede masteraaen Novice
11. juni 2012 - 10:38 #5
Tak The_buzz.

Jeg fik det til at virke - vil du lave et svar?
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