Avatar billede Slettet bruger
17. juni 2005 - 19:41 Der er 10 kommentarer og
1 løsning

konvertere og indsætte dato i mysql

Hej

Jeg er TOTAL nybegynder og er ved at skrive et budget-system i PHP/MySQL.

Jeg har en form med et datofelt og kan godt smide en dato i formatet YYYY-MM-DD ind i min db:

$query = "INSERT INTO expenses (date) VALUES ('$_POST[date]')";

Men jeg vil jo gerne kunne indtaste datoen i et humant format (DD-MM-YYYY) og har som sådan også fundet koden, der kan konvertere det:

<?php
$sDate = '01-03-2004';
$aDate = explode('-', $sDate); //creates an array: array(0=>"01", 1=>"03", 2 => "2004")
$uDate = mktime(0,0,0,$sDate[1], $sDate[0], $sDate[2]); //mktime(hour, minute, secs, month, day, year)
?>

Problemet er bare at jeg ikke kan finde ud af at bruge den stump kode jeg har til konvertering, så den smider det ind i min db. Jeg er altså ret så ny til php/mysql ;O)

Takker
Avatar billede nielle Nybegynder
17. juni 2005 - 22:02 #1
<?php
$sDate = $_POST[date];
$aDate = explode('-', $sDate);  //creates an array: array(0=>"01", 1=>"03", 2 => "2004")
$uDate = mktime(0, 0, 0, $sDate[1], $sDate[0], $sDate[2]);  //mktime(hour, minute, secs, month, day, year)

$query = "INSERT INTO expenses (date) VALUES ('$uDate')";
?>
Avatar billede Slettet bruger
17. juni 2005 - 22:43 #2
Mange tak for det nielle. Det ser dog bare ikke ud til at virke. Jeg får godt nok ingen fejl, men der kommer ikke noget ind i min db... Mystisk...
Avatar billede nielle Nybegynder
17. juni 2005 - 23:14 #3
Prøv - som debug  - at udskrive din SQL før at du udføre den:

<?php
$sDate = $_POST[date];
$aDate = explode('-', $sDate);  //creates an array: array(0=>"01", 1=>"03", 2 => "2004")
$uDate = mktime(0, 0, 0, $sDate[1], $sDate[0], $sDate[2]);  //mktime(hour, minute, secs, month, day, year)

$query = "INSERT INTO expenses (date) VALUES ('$uDate')";
echo "DEBUG: " + $query + "<br>";

Som regel skyldes denne slags fejl at SQL'en ser anderledes ud end man troede.
?>
Avatar billede Slettet bruger
17. juni 2005 - 23:34 #4
debug viser bare 0

Underligt..
Avatar billede nielle Nybegynder
17. juni 2005 - 23:36 #5
... altså:

DEBUG: 0

???
Avatar billede Slettet bruger
18. juni 2005 - 18:03 #6
jeps..
Avatar billede Slettet bruger
18. juni 2005 - 18:03 #7
Altså den udskriver faktisk bare 0 på siden...
Avatar billede nielle Nybegynder
18. juni 2005 - 18:25 #8
Jeg foreslog at du skulle skrive:

echo "DEBUG: " + $query + "<br>";

Altså burde den da også skrive "DEBUG: " foran o'et. Hvis den ikke gør det så er det nok en udskrift som stammer et helt andet sted fra.
Avatar billede nielle Nybegynder
18. juni 2005 - 18:42 #9
DOH: Brug punktum i stedet for +:

echo "DEBUG: " . $query . "<br>";
Avatar billede nielle Nybegynder
18. juni 2005 - 18:45 #10
I øvrigt bør der altid være pinger rundt om tekststrenge. Ret min:

$sDate = $_POST[date];

- til:

$sDate = $_POST["date"];
Avatar billede Slettet bruger
23. juni 2005 - 15:08 #11
Her er løsningen (fik lige hjælp fra en ven)

$sDate = $_POST["date"];
$aDate = explode('-', $sDate); //creates an array: array(0=>"01", 1=>"03", 2 => "2004")
$query = "INSERT INTO expenses (date, place, amount) VALUES ('".$aDate[2]."-".$aDate[1]."-".$aDate[0]."','$_POST[place]','$_POST[amount]')";
mysql_query($query) or die('Fejl! Indsættelse mislykkedes : ' . mysql_error());
mysql_close();
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