PHP 5 - Problem

Lektor21

Erfahrenes Mitglied
Mein Webserver wurde heute auf PHP 5 aktualisiert! Nun bekomme ich bei folgendem Script immer diese Meldung;

Warning: mktime() expects parameter 1 to be long

PHP:
list($tag, $monat, $jahr) = explode(".", $premiumuser_to);   

$premiumuserseconds = mktime(0, 0, 0, $monat, $tag, $jahr);

Vorher ging alles! Wie muss das lauten, damit es funktioniert?
 
Also ich konnte den Fehler bei mir nicht reproduzieren. (PHP 5.2.0 und PHP 5.2.4)

Versuch es mal so:

PHP:
$premiumuserseconds = mktime(0, 0, 0, (int)$monat, (int)$tag, (int)$jahr);
 
Ja so gehts

Nun habe ich noch so nen Ding;

Warning: mktime() expects parameter 1 to be long, string given in /web/account/userprofile.php on line 107

PHP:
$date = explode(".","$premiumuser_to_date");

$time = explode(":","$premiumuser_to_time");

$premiumuserseconds = mktime("$time[0]","$time[1]",0,"$date[1]","$date[0]","$date[2]");
 
Die ganzen Anführungszeichen sind unnötig, wenn du Variablen angibst.

PHP:
$premiumuserseconds = mktime((int)$time['0'], (int)$time['1'], 0, (int)$date['1'], (int)$date['0'], (int)$date['2']);

Die einfachen Anführungszeichen bei den Arrays sind keine Pflicht bei numerischen Arrays, aber es ist "schöner". Außerdem gewöhnt man es sich so direkt an und vergisst es nicht, wenn man mal keinen numerischen Array hat.

Das (int) vor den Variablen zwingt die Variable in den Typ Integer. Normalerweise sollte PHP das selbst regeln können, aber anscheinend gibt das einen kleinen Fehler (der bei mir aber nicht auftritt).
 
LOL sorry war tippfehler...

Hab das Problem schon gefunden! Weil er immer wenn das if und das elseif nicht zutrafen und er else ausführen sollte, hab er nix angezeigt! :confused:

Habs jetzt gelöst!! Danke :)
 
Achso eins habe ich noch vergessen;

Ich rechne mit der folgenden Rechnung aus Sekunden > Jahre, Monate, Tage und Stunden!

Wenn meine Sekunden aber genau ein Jahr sind, verrechnet er sich komischerweise um 1 Tag! Was kann das sein?

PHP:
function int2time($time) {
    $temp=$time;
    if(date("L")==1) {
        $schalt=366;
    } else {
        $schalt=365;
    }
    
    // Jahresberechnung
    $jahre=floor($temp/(60*60*24*$schalt));
    $temp=$temp-($jahre*60*60*24*$schalt);
    
    // Monate
    $monate=floor($temp/(60*60*24*30.5));
    $temp=$temp-($monate*60*60*24*30.5);
    
    // Tage
    $tage=floor($temp/(60*60*24));
    $temp=$temp-($tage*60*60*24);
    
    // Stunden
    $stunden=floor($temp/(60*60));
    $temp=$temp-($stunden*60*60);

    // Minuten
    $minuten=floor($temp/60);
    $temp=$temp-($minuten*60);
    
    return array($jahre, $monate, $tage, $stunden, $minuten);
}
 
Zurück