Avatar billede heine_p Nybegynder
03. juni 2003 - 13:43 Der er 13 kommentarer

Switch og function virker ikke

Jeg har en switch der ser sådan ud:
switch ($_GET["type"]){
    case "inbox"; msg_inbox(); break;
    case "read"; msg_read(); break;
    case "send"; msg_send(); break;
    case "sign"; msg_sign(); break;
    case "delete"; msg_delete(); break;
}

og jeg har functions der ser sådan ud:

function msg_inbox(){
    [PHP-koden]
}

osv... men det virker ikke.. Jeg får denne fejl:

Fatal error: Call to undefined function: msg_inbox() on line 30

Hvad kan der være galt??
Avatar billede roenving Novice
03. juni 2003 - 13:46 #1
I javascript ville det være : og ikke ;

-- tror det er der fejlen er ...
Avatar billede tipsen Nybegynder
03. juni 2003 - 13:48 #2
Den kender ikke funktionen msg_inbox() - som den så præcist fortæller...
Avatar billede jakoba Nybegynder
03. juni 2003 - 13:48 #3
enig. der skal stå : efter hver case-værdi

switch ($_GET["type"]){
    case "inbox": msg_inbox(); break;
    case "read": msg_read(); break;
    case "send": msg_send(); break;
    case "sign": msg_sign(); break;
    case "delete": msg_delete(); break;
}
Avatar billede heine_p Nybegynder
03. juni 2003 - 13:48 #4
-> Det er ikke det der er fejlen... der kommer stadig den samme fejl-meddelse.
Avatar billede heine_p Nybegynder
03. juni 2003 - 13:50 #5
Hvorfor kender den ikke msg_inbox når jeg har lavet den: function msg_inbox(){  }
Avatar billede jakoba Nybegynder
03. juni 2003 - 13:51 #6
det er så tipsens svar. du har ikke fået defineret den funktion der hedder msg_inbox

I php skal enhver funktion være defineret FØR du prøver at bruge den, du kan ikke nøjes med at definere funktionen længere ned i filen.
Avatar billede heine_p Nybegynder
03. juni 2003 - 13:54 #7
forstår ikke helt hvad du mener jakoba. Jeg har andre sider jeg har gjort præcis på samme måde og der kommer ingen fejl. -> Hvordan definerer man en funktion?
Avatar billede exp Juniormester
03. juni 2003 - 13:57 #8
function msg_inbox(){
    [PHP-koden]
}

switch ($_GET["type"]){
    case "inbox": msg_inbox(); break;
    case "read": msg_read(); break;
    case "send": msg_send(); break;
    case "sign": msg_sign(); break;
    case "delete": msg_delete(); break;
}
Avatar billede jakoba Nybegynder
03. juni 2003 - 13:58 #9
som du viser i dit spørgsmål:
    function msg_inbox(){
        [PHP-koden]
    }

din switch sætning er i linie 29 til linie 35.

hvis du først definerer funktionen msg_inbox i line 36 er det EFTER du prøver at bruge den, og det går ikke.
Avatar billede heine_p Nybegynder
03. juni 2003 - 14:00 #10
okay... takker.. det virker. Men jeg har gjort det modsat på to andre sider som virker... underligt. Men tak ;D
Avatar billede tipsen Nybegynder
03. juni 2003 - 14:04 #11
heine: Du vil vist kun få fejlen, hvis den tilhørende case er aktuel - dvs. hvis casen ikke evaluerer til true vil php ikke finde ud af, at den ikke kender funktionen...
Avatar billede jakoba Nybegynder
03. juni 2003 - 14:06 #12
Hvis din switch sætning ligger indeni en funktion er det det sted hvor den funktion bliver kald der skal være efter definitionen af de funktioner der bliver kaldt.
Avatar billede andy Nybegynder
04. juni 2003 - 09:50 #13
>I php skal enhver funktion være defineret FØR du prøver at bruge den, du kan ikke nøjes med at definere funktionen længere ned i filen.

Ahh, det er nu ikke rigtigt. Det er kun i nogle tilfælde PHP kræver funktionen er defineret før brug.

Læs mere http://dk.php.net/manual/en/functions.php
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