Avatar billede kasperbn Nybegynder
09. juli 2003 - 12:33 Der er 10 kommentarer og
1 løsning

Missing 1 Argument! Sikkert bare en dumme-fejl! DEADLINE IDAG!

Hej Eksperter

Jeg har lavet en funktion der kan sammenligne en vilkårlig String-dato, af formen "åååå-mm-dd", med den pågældende dato. Hvis datoen er overskredet skal funktionen returne strengen "bgcolor=#FF0000" (således at kolonnen farves rød).

Selve funktionen virker og de kolonner, hvis datoer er overskredet, farves røde. Men øverst får jeg en warning:

"Warning: Missing argument 1 for checkdate() in /...path/index.php on line 15"

Mit oprettelse af objekt og kald af funktion ser således ud:

$object = new CheckDate;           
$colBg = $object->checkdate($myrow["udloeb"]);   

Min funktion+klasse ser således ud:

class CheckDate {   

    function checkDate($date) {

        $dateAr = explode("-",$date);

        $dateYear = $dateAr[0];
        $dateMonth = $dateAr[1];
        $dateDay =    $dateAr[2];

        $today = getdate();
        $month = $today['month'];
        $mday = $today['mday'];
        $year = $today['year'];

        switch($month) {
            case "January": $month = 01; break;
            case "Febuary": $month = 02; break;
            case "March": $month = 03; break;
            case "April": $month = 04; break;
            case "May": $month = 05; break;
            case "June": $month = 06; break;
            case "July": $month = 07; break;
            case "August": $month = 08; break;
            case "September": $month = 09; break;
            case "October": $month = 10; break;
            case "November": $month = 11; break;
            case "December": $month = 12; break;
        }

        switch($dateMonth) {
            case "00": $dateMonth = 0; break;
            case "01": $dateMonth = 1; break;
            case "02": $dateMonth = 2; break;
            case "03": $dateMonth = 3; break;
            case "04": $dateMonth = 4; break;
            case "05": $dateMonth = 5; break;
            case "06": $dateMonth = 6; break;
            case "07": $dateMonth = 7; break;
            case "08": $dateMonth = 8; break;
            case "09": $dateMonth = 9; break;
            case "10": $dateMonth = 10; break;
            case "11": $dateMonth = 11; break;
            case "12": $dateMonth = 12; break;
        }

        if($dateYear == "0000")
            return null;       
       
        else if($dateYear < $year)
            return "bgcolor=#FF0000";               

        else if($dateYear > $year)
            return null;

        else if($dateMonth < $month)
            return "bgcolor=#FF0000";
       
        else if($dateMonth > $month)
            return null;

        else if($dateDay <= $mday)
            return "bgcolor=#FF0000";
       
        else
            return null;
       
    }
}

Hvad kan det være????
Avatar billede Slettet bruger
09. juli 2003 - 12:40 #1
Du kalder funktianen checkdate uden nogen parametre.... derfor den warning
Du kan enten finde fejler eller løse det ved
    function checkDate($date=null)
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:44 #2
Mon ikke du bare skulle kalde din funktion noget andet. Den tror
det er en constructor til klassen.
Avatar billede kasperbn Nybegynder
09. juli 2003 - 12:48 #3
Nu virker det da! Tak....

Hvordan kan det egentligt være at man skal give den en værdi???
Jeg indikerer vel bare at der skal bruges en parameter når funktionen skal kaldes eller???

Er det fordi jeg ikke har givet $date nogen type???
Avatar billede kasperbn Nybegynder
09. juli 2003 - 12:48 #4
Nu virker det da! Tak....

Hvordan kan det egentligt være at man skal give den en værdi???
Jeg indikerer vel bare at der skal bruges en parameter når funktionen skal kaldes eller???

Er det fordi jeg ikke har givet $date nogen type???
Avatar billede Slettet bruger
09. juli 2003 - 12:51 #5
du giver den bare en standart værdi... PHP virker sådan set fint alligevel om du gør det eller ej - det er trods alt kun en warning!
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:55 #6
Jeg synes nu min løsning er mere korrekt. Der er ikke meget sjov
ved bare at fjerne symptomet i stedet for at løse problemet ;)
Avatar billede fangel Nybegynder
09. juli 2003 - 15:49 #7
og er checkdate ikke en eksisterende funktion? måske der opstår en navnekonflikt
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 15:53 #8
Joh, der er "konflikt" med at den både bruges som constructor og som
funktion. I det setup, som spørgeren har, bliver den kaldt to gange.
1. gang ved new (hvor resultatet ikke bruges, og derfor giver overflødigt arbejde)
2. gang når den så kaldes rigtigt.

Der er bare det jeg synes er tosset :) Men, ok, der kommer igen fejl.
Avatar billede Slettet bruger
09. juli 2003 - 15:57 #9
erik>>Havde ikke lige lagt mærke til den detalje... :(
Faktisk så bør checkdate omdøbes til noget helt andet!
Eller objektet konstrueres ved:
$obj = new CheckDate($myrow["udloeb"]);
samtidigt med at checkdate omdøbes til CheckDate
Avatar billede kasperbn Nybegynder
10. juli 2003 - 17:47 #10
Ja.... Men jeg troede egentlig at php var case-sensetive... Er det ikke det???
Avatar billede fangel Nybegynder
10. juli 2003 - 17:52 #11
ved nogle ting, JA, andre ting NEJ

ved funktioner, nej
ved variabler, ja

Morten
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