mktime() expects parameter 6 to be long
royke92 - 27/10/2008 19:10
Nieuw lid
Hoi,
Op mijn website heb ik een script van deze website toegepast.
Dit script zorgt ervoor dat je datum (bijv. 2008-10-27) wordt omgezet naar de dag (bijv. Maandag). Maar nu krijg ik deze error:
Warning: mktime() expects parameter 6 to be long, string given on line 63.
<?php
function welkeDag($datum) {
$exp = explode("-", $datum);
$maketime = mktime(0, 0, 0, $exp[1], $exp[2], $exp[0]);
$date = getdate($maketime);
return $date['weekday'];
}
?>
<?php
function welkeDag( $datum ) {
$maketime = mktime ( 0 , 0 , 0 , $exp [ 1 ] , $exp [ 2 ] , $exp [ 0 ] ) ;
return $date [ 'weekday' ] ;
}
?>
Kan iemand mij misschien helpen?
b.v.d.
6 antwoorden
Gesponsorde links
Stijn - 27/10/2008 19:19
PHP expert
Je moet typecasten. De items in de array $exp zijn allemaal strings en mktime() eist integers. Zo kan je een string omzetten in een integer.
...mktime(... , (int) $exp[1] , ... );
... mktime ( ... , ( int
) $exp [ 1 ] , ... ) ;
royke92 - 27/10/2008 19:29 (laatste wijziging 27/10/2008 19:29)
Nieuw lid
Oke bedankt,
De error is nu verholpen, maar welke strings moet ik nu omzetten in een integer. Ik heb nu dit:
<?php
function welkeDag($datum) {
$exp = explode("-", $datum);
$maketime = mktime(0, 0, 0, (int) $exp[1], (int) $exp[2], (int) $exp[0]);
$date = getdate($maketime);
return $date['weekday'];
}
?>
<?php
function welkeDag( $datum ) {
$maketime = mktime ( 0 , 0 , 0 , ( int
) $exp [ 1 ] , ( int
) $exp [ 2 ] , ( int
) $exp [ 0 ] ) ;
return $date [ 'weekday' ] ;
}
?>
Maar hierdoor krijg ik altijd "Tuesday" als uitkomst.
Wat doe ik fout??
Groetjes,
Kr4nKz1n - 27/10/2008 20:36
Onbekend
Dat wat stijn zegt klopt natuurlijk. Maar ik heb nog NOOIt (int) gebruikt.
Wat gooi je door de functie heen?
Niet dat voorbeeld wat jij gaf. Dan kun je die error niet krijgen.
Diko - 27/10/2008 20:58 (laatste wijziging 27/10/2008 20:59)
PHP interesse
Ligt waarschijnlijk aan de datum die je er doorheen gooit. Ik zie niet waarom er altijd hetzelfde uit zou komen.
roep eens welkeDag('27-10-2008'); aan...
Edit: of welkeDag(date('d-m-Y')); maar dan moet je er wel op kunnen vertrouwen dat je server goed staat ingesteld.
mark92 - 28/10/2008 20:00
Nieuw lid
is dit niet een stuk handiger:
$sVar = '2008-10-27';
function welkeDag($sDatum){
$aDagen = array("Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag");
$sDatum = strtotime($sDatum);
return $aDagen[date('w',$sDatum)];
}
echo welkeDag($sVar);
//Return: Maandag
$sVar = '2008-10-27' ;
function welkeDag( $sDatum ) {
$aDagen = array ( "Zondag" , "Maandag" , "Dinsdag" , "Woensdag" , "Donderdag" , "Vrijdag" , "Zaterdag" ) ; return $aDagen [ date ( 'w' , $sDatum ) ] ; }
//Return: Maandag
Gesponsorde links
Dit onderwerp is gesloten .