Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 15:24 Der er 20 kommentarer og
1 løsning

Dato fra txt felt til MySql db

Jeg har en form med et input felt, hvor der indtastes en dato med formatet: dd-mm-yyyy

Den postes til $time_dato:
if(isset($_POST['time_dato'])){$time_dato = $_POST['time_dato'];}

Datoen vil jeg gerne have lagret i min database som en date (med format: yyyy-mm-dd)

Jeg har prøvet med:

$ins = "INSERT INTO `proj_timer` (`time_bruger_id`, `time_projekt_id`, `time_txt`, `time_dato`, `time_tid`) VALUES ('$time_bruger_id', '$time_projekt_id', '$time_txt', 'STR_TO_DATE($time_dato, %d%m%Y)', '$time_tid')";
mysql_query($ins) or die (mysql_error());

Men det spiller ikke rigtigt - er der én, der har et bud?
Avatar billede coderdk Praktikant
09. oktober 2006 - 18:06 #1
$ins = "INSERT INTO `proj_timer` (`time_bruger_id`, `time_projekt_id`, `time_txt`, `time_dato`, `time_tid`) VALUES ('$time_bruger_id', '$time_projekt_id', '$time_txt', STR_TO_DATE($time_dato, '%d-%m-%Y'), '$time_tid')";
mysql_query($ins) or die (mysql_error());

burde virke på dd-mm-yyyy
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 21:29 #2
Giver syntax fejl i sql'en.

$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', '$time_dato', '$time_tid')"; Er syntaktisk iorden..

$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', 'STR_TO_DATE($time_dato, %d-%m-%Y)', '$time_tid')"; Er også i orden, men giver 0000-00-00
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:03 #3
Det kan gøres med:
list($dag, $maaned, $aar) = explode('-',$time_dato);
$ny_dato=$aar.'-'.$maaned.'-'.$dag;

$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', '$ny_dato', '$time_tid')";
mysql_query($ins) or die (mysql_error());

Men kønt er det ikke..
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:04 #4
$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', 'STR_TO_DATE($time_dato, %d-%m-%Y)', '$time_tid')";

er forkert og bør være:

$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', STR_TO_DATE($time_dato, '%d-%m-%Y'), '$time_tid')";

Du kan teste det i phpMyAdmin eller en command line SQL ved at sige:

SELECT STR_TO_DATE( '24-12-2006', '%d-%m-%Y' );

Den skulle være god nok!
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:05 #5
Ville hellere have STR_TO_DATE() til at virke
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:05 #6
Prøv lige efter den $ins = linje at skrive:

echo $ins;

og paste hvad den skriver - så må vi kunne se hvor fejlen er ;P
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:06 #7
doh det skal jo være:

$ins = "INSERT INTO proj_timer(time_bruger_id, time_projekt_id, time_txt, time_dato, time_tid)VALUES('$time_bruger_id', '$time_projekt_id', '$time_txt', STR_TO_DATE('$time_dato', '%d-%m-%Y'), '$time_tid')";

:)
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:07 #8
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(04-10-2006, '%d-%m-%Y'), '')' at line 1
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:08 #9
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('12-10-2006', '%d-%m-%Y'), '')' at line 1

Jeg fatter hat!
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:12 #10
Prøv lige at køre denne select i phpMyAdmin eller MySQL-Front eller hvad du bruger:

SELECT STR_TO_DATE('12-10-2006', '%d-%m-%Y');

Den skulle gerne returnere

2006-10-12
Avatar billede henninghabor Nybegynder
09. oktober 2006 - 22:14 #11
Efter hvad jeg kan se er $time_id tomt?
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:16 #12
Igen, prøv lige at skrive SQL'en ud og paste den her...
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:17 #13
SQL-forespørgsel: ((Kørt i phpmyadmin))

SELECT STR_TO_DATE( '12-10-2006', '%d-%m-%Y' )
MySQL returnerede: 

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '('12-10-2006', '%d-%m-%Y')' at line 1
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:18 #14
Hvad version af MySQL kører du med?
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:19 #15
SELECT VERSION();

Jeg tror ikke at din MySQL understøtter STR_TO_DATE() ?

Min giver mig:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.0.18    |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT STR_TO_DATE('12-10-2006', '%d-%m-%Y') AS Datoen;
+------------+
| Datoen    |
+------------+
| 2006-10-12 |
+------------+
1 row in set (0.00 sec)
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:19 #16
>>Henninghabor $time_id? ...mener du $time_tid?
Avatar billede coderdk Praktikant
09. oktober 2006 - 22:21 #17
Du er nok nødt til at bruge din nødløsning med explode/list ;)
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:22 #18
det kan godt være min er 4.0.27
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:27 #19
Nåmen tak for hjælpen alligevel - jeg lever med mit hurtige fix :/
Avatar billede dejbjerg Nybegynder
09. oktober 2006 - 22:41 #20
STR_TO_DATE() virker først fra 4.1.1 og frem :P
Avatar billede henninghabor Nybegynder
09. oktober 2006 - 22:57 #21
Se bort fra min kommentar. Sorry.
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