Ik ben bezig met een voorraadbeheer voor ons lab, en ben aan het knooien met de houdbaarheidsdatum.

Probleem is dat de meeste collega's de ballen verstand van computers hebben, dus ik hoef er niet op te rekenen dat ze datums altijd in jjjj-mm-dd invoeren. Ik heb daarom een functiegeschreven die een datum in dd-mm-jjjj omzet in jjjj-mm-dd, zodat het goed in de database (mysql) geschreven wordt.

Toch heb ik het idee dat dit makkelijker en efficienter kan. Iemand suggesties?

<?php
function datumVoorInvoer($datum){

	list($d, $m, $j) = split('[-]', $datum);
	
	if(strlen($j) == 2){ // is er wel 20 bij ingvoerd?
		$j = '20'.$j;
	}
	if(strlen($m) == 1){ // is er bij bv januari wel 01 ipv 1 ingevoerd
		$m = '0'.$m;
	}
	if(strlen($d) == 1){ // is er bv wel 01 ipv 1 ingevoerd
		$d = '0'.$d;
	}
	
	$datum_invoer = $j.'-'.$m.'-'.$d;
	return $datum_invoer;
	
}
?>
is dit niet beter/handiger?

list($jaar, $maand, $dag) = split('[-]', $datum);
Is idd nog korter, ik heb de originele post aangepast
Het gaat erom dat je de data op een juiste manier de database in gooit, en op de juiste manier (zoals Karl al zei) eruit haal :-)
Tobias Witmer op 26/01/2011 14:10:50

[quote="Karl Karl op 26/01/2011 13:52:37"]
SELECT STR_TO_DATE('1-1-2011', '%d-%m-%Y')
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format


Dit is allemaal SELECT, daar kom ik wel uit.

Ik zoek iets om een dd-mm-jjjj-datum naar jjjj-mm-dd om te bouwen voor een INSERT
[/quote]

Ja, je wilt toch weten wat die functie doet? Dan doe je een select, zodat je weet wat je terug krijgt. Wat let jou om die functie in een insert te stoppen?

Chris Horeweg op 26/01/2011 14:12:52

Het gaat erom dat je de data op een juiste manier de database in gooit, en op de juiste manier (zoals Karl al zei) eruit haal :-)

Euhm, nee?
ik heb even geknooid met de STR_TO_DATE

Dit werkt:
<?php
$query = mysql_query("INSERT INTO test (datum) VALUES ((SELECT STR_TO_DATE('01-02-2013','%d-%m-%Y')))") 
?>


Maar dit niet:
<?php
$x = '01-02-2013';
$query = mysql_query("INSERT INTO test (datum) VALUES ((SELECT STR_TO_DATE($x,'%d-%m-%Y')))") 
?>
Met of zonder 'om de $x

EDIT:
Toch wel, typfoutje gemaakt.
Werkend uiteindelijk:
<?php
$query = mysql_query("INSERT INTO test (datum) VALUES ((SELECT STR_TO_DATE('$datum','%d-%m-%Y')))");
?>


Allen bedankt voor de hulp

Men, wat kun je veel met mysql als je alle codes kent.
Nu moet je nog eens goed lezen en nadenken.
Het zijn functies. Je gebruikt alleen de select om te zien wat de functie doet.

Conclusie: Select hoeft in in de insert, aangezien het gewoon een functie is.
klopt helemaal, bedankt

Reageren