PHP + MySQL, föra in datum i databas

Permalänk
Medlem

PHP + MySQL, föra in datum i databas

Hej hopp,

Har lite problem med att på ett bra sätt få in datum i en av tabellerna i databasen. Har försökt använda funktionerna mktime() och date() på följande sätt.

$futureDate = mktime(0, 0, 0, date("m"), date("d")+5, date("y")); $sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4," . date("Y-m-d", $futureDate) . ",2)";

Problemet är att det enda som sätts in i date-fältet blir 1992, men det jag ville ha in var dagens datum, plus 5 månader framåt.

Den första raden antar jag är rätt, det är den andra jag är mer tveksam på. Det skall kanske inte konkateneras in? Är formatet på datumet rätt?

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

http://www.php.net/manual/en/function.strtotime.php är din vän:

strtotime('+5 months');

Sen får du väl kasta på date() om du vill ha det sparat som datetime i databasen

date('Y-m-d H:i:s', strtotime('+5 months'));

Visa signatur

WS: Antec P182B | FSP Aurum 500W | Asus P8Z77-V PRO | i5 3570k | 16GB DDR3 | Intel 320 80GB SSD | HDD 5TB | Asus Xonar DX | Arch Linux (x86_64) | Eizo EV2795
HTPC: Philips 50PUS8804, Kodi samt extern usb-disk
Server: Raspberry Pi 3 model B+ | 1GB RAM | HDD 750GB | Arch Linux (armv7h)

Permalänk
Medlem
Skrivet av '[vEX:

;11434450']http://www.php.net/manual/en/function.strtotime.php är din vän:

strtotime('+5 months');

Sen får du väl kasta på date() om du vill ha det sparat som datetime i databasen

date('Y-m-d H:i:s', strtotime('+5 months'));

När jag provkör det med en echo-sats så funkar det bra, men inte när jag lägger in det i min SQL-sats.

$sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4," . date('Y-m-d', strtotime('+5 months')) . ",2)";

Den lägger bara in 2005 istället för det rätta datumet.

Är strtotime en bättre funktion, eller varför valde du den istället för mktime?

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem
Skrivet av Newklear:

När jag provkör det med en echo-sats så funkar det bra, men inte när jag lägger in det i min SQL-sats.

$sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4," . date('Y-m-d', strtotime('+5 months')) . ",2)";

Den lägger bara in 2005 istället för det rätta datumet.

Är strtotime en bättre funktion, eller varför valde du den istället för mktime?

Du måste lägga det i en sträng

$sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4,'" . date('Y-m-d', strtotime('+5 months')) . "',2)";

Kanske lättare att se så här:

$date = date('Y-m-d', strtotime('+5 months')); $sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4, '" .$date . "',2)";

Visa signatur

Mina poster är en illusion. Det som står skrivet här över står i själva verket inte där så inget av det som du läser är sant. Inte ens den här texten. Jag har själv ingen kunskap om det jag skriver och ingen bör således läsa eller ta in den information som står skrivet.

Permalänk
Medlem
Skrivet av rumpnisse:

Du måste lägga det i en sträng

$sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4,'" . date('Y-m-d', strtotime('+5 months')) . "',2)";

Kanske lättare att se så här:

$date = date('Y-m-d', strtotime('+5 months')); $sql = "INSERT INTO bookings(guests,date,room_FK) VALUES (4, '" .$date . "',2)";

Ahh, tack!
Det var dem apostroferna runt om jag hade glömt, sicket slarvfel

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Kände att några förtydliganden kan vara på sin plats.

PHP funktionen strtotime() ger dig en så kallad timestamp tillbaka i retur.

Detta kan du sedan använda i andra funktioner för att få fram önskat resultat.

I detta fallet använder du timestamp:et i date() funktionen som en andra parameter för att få det framtida datumet istället för dagens om du utelämnat att ge ett timestamp.

$timestamp = strtotime('+5 days'); $mitt_framtida_datum = date('Y-m-d', $timestamp);

Problemet i din SQL sats beror nog bland annat på att du försökt trycka in ett timestamp i en kolumn med date egenskaper.

Då fallerar det självklart.

Läs mer:
http://se2.php.net/manual/en/function.strtotime.php
http://se2.php.net/manual/en/function.date.php

Men som jag sagt förut, alla PHP utvecklare nya som gamla har nytta av:
http://www.php.net

lycka till

Fel i en kod
Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.