Seite 1 von 1

Fehler: mktime() expects parameter 6 to be long

Verfasst: So 26.Okt, 2008 16:06
von Holger
Hi,

wir benutzen ein vCard-Script von Belchior Foundry (gibt es nicht mehr).
Nach dem Umzug auf einen neuen Server bekomme ich:
Warning: mktime() expects parameter 6 to be long, string given in /var/www/vhosts/maskinisten.net/httpdocs/vykort/include/functions.inc.php on line 438

Zeile 438 ist

Code: Alles auswählen

	$sec_pass = mktime() - mktime(0,0,0, $month, $day, $year);
in der Funktion

Code: Alles auswählen

function get_day_after($card_date) {
	list ($year, $month, $day) = split ('[/.-]', $card_date);
	$sec_pass = mktime() - mktime(0,0,0, $month, $day, $year);
	$day_pass = floor( $sec_pass / 86400); // % div modulo
	return $day_pass;
}
Kann ich das irgendwie wegbekommen?

Verfasst: Mo 27.Okt, 2008 00:43
von oxpus
Was steckt denn in $year drinnen? Das darf nur maximal 4-stellig sein, bzw. kleiner als 2049 sein (glaub ich).

Verfasst: Mo 27.Okt, 2008 12:50
von Holger
Dies ist kein phpBB-Mod.
Es ist ein externes vCard-skript.

Wie kann ich genauere Angaben machen?
Wie finde ich heraus, was in $year drinsteckt?

Verfasst: Di 28.Okt, 2008 00:11
von oxpus
[quote="Holger";p="87787"]Dies ist kein phpBB-Mod.
Es ist ein externes vCard-skript.[/quote]
Sorry...

[quote="Holger";p="87787"]Wie kann ich genauere Angaben machen?
Wie finde ich heraus, was in $year drinsteckt?[/quote]
Ich kenne das Script nicht, aber irgendwo her muss ja ein Wert dort reinkommen.
Am besten mal mit echo $year;exit; debuggen, dann erwährt man ja mehr...

Verfasst: Di 28.Okt, 2008 08:26
von Holger
Wo muss ich das reinpacken? Direkt nach der Funktion?

Verfasst: Di 28.Okt, 2008 14:05
von oxpus
Vorher, sonst würde nur der Fehler angezeigt, nicht aber der Inhalt von $year ;)

Verfasst: Di 28.Okt, 2008 14:12
von Holger
Geht nicht, dann lässt sich das vCard-Skript gar nicht mehr aufrufen, weisse Seite!

Sie sieht es jetzt aus:

Code: Alles auswählen

echo $year;
exit;

function get_day_after($card_date) {
	list ($year, $month, $day) = split ('[/.-]', $card_date);
	$sec_pass = mktime() - mktime(0,0,0, $month, $day, $year);
	$day_pass = floor( $sec_pass / 86400); // % div modulo
	return $day_pass;
}

Verfasst: Mi 29.Okt, 2008 13:42
von oxpus
Doch nicht vor die Funktion, sondern vor dem ersten Wert $year innerhalb der Funktíon ;)

Verfasst: Mi 29.Okt, 2008 13:46
von Holger
Oh!
Also so:

Code: Alles auswählen

function get_day_after($card_date) {
echo $year; 
exit;
   list ($year, $month, $day) = split ('[/.-]', $card_date); 
   $sec_pass = mktime() - mktime(0,0,0, $month, $day, $year); 
   $day_pass = floor( $sec_pass / 86400); // % div modulo 
   return $day_pass; 
}
??????????????

Verfasst: Mi 29.Okt, 2008 16:30
von oxpus
So wäre besser, da in Deinem Beispiel $year noch klar leer ist ;)

Code: Alles auswählen

function get_day_after($card_date) {
   list ($year, $month, $day) = split ('[/.-]', $card_date); 
echo $year; 
exit;
   $sec_pass = mktime() - mktime(0,0,0, $month, $day, $year); 
   $day_pass = floor( $sec_pass / 86400); // % div modulo 
   return $day_pass; 
}

Verfasst: Mi 29.Okt, 2008 19:19
von Holger
2003

Verfasst: Mi 29.Okt, 2008 22:40
von oxpus
Ach! Jetzt sehe ich auch, was Du gemacht hast:

Code: Alles auswählen

mktime()
funktioniert so nicht, denn die Funktion braucht immer Parameter. Nimm hier statt dessen einfach

Code: Alles auswählen

time()
.

Verfasst: Do 30.Okt, 2008 08:15
von Holger
Iiiiiich???? ;)
Ne, also, ja, wie auch immer ... auf dem alten Server hat es funktioniert.
Auf dem Neuen nicht.
Ich werde Dein Tip mal testen! Danke!