10. januar 2012 - 14:07Der er
5 kommentarer og 1 løsning
Php IF Nested statement
Hejsa alle eksperter..
Jeg har et lille spørgsmål her. Jeg har lavet et intranet på mit arbejde, og deri er der nogle elev visninger, og der har jeg lavet nogle if statement, til at håndtere, om folkene fra afdeling a, må se elev knapperne fra afdeling b osv..
Koden er: __________________________
<?php if
//Forstandere og Sekretariet (($_SESSION['MM_Afdeling'] == "Forstandere" || $_SESSION['MM_Afdeling'] == "Sekretariet") || // Kompetence center Og Socialrådgivere ($_SESSION['MM_Afdeling'] == "Kompetencecenter") || ($_SESSION['MM_Afdeling'] == "Socialrådgivere") ||
// Dagskole se sine egne ($row_Boeg['dagsprojekt'] == "Dagskole") ||
// EHS Se sine egne ($row_Boeg['dagsprojekt'] == "Erhvervsskole") ||
En af de komplekse ting, er at dem fra dagskolen og erhvervsskolen gerne må se hinandens "knapper", i mens at Servie kun må se de knapper på eleverne, som er tilknyttet erhvervsskolen.
Du kommer nok til at forklare lidt mere. Jeg gætter foreløbigt på det følgende:
Når en bruger åbner systemet, bliver titlen på alle projekter kaldt fra databasen. For projekter i de 'kategorier' der må ses af brugeren vises der en form med en 'Elev Filer' knap for at hente projektet. Hvad brugeren må se afhænger af brugerens afdeling. Brugerens afdeling står i $_SESSION['MM_Afdeling']. Projektets kategori står i $row-Boeg['dagsprojekt']. Er det nogenlunde korrekt?
Hvad er så beslutningsreglerne? Der synes kun at være to 'kategorier' af projekter, dagskole og erhvervsskole. Er der også, i realiteten, kun to slags afdelinger, Service, og alle andre? Således at hvis $_SESSION['MM_Afdeling'] er Forstandere eller Sekretariaet eller Kompetencecenter eller Socialrådgivere eller Uranusmini må brugeren se alle projekter, men hvis $_SESSION['MM_Afdeling'] er Service må brugeren kun se projekter af kategori erhvervsskolen?
Hvis det er forkert, hvad er da beslutningsreglerne, og hvordan ved man hvilke brugere der hører til hvilke afdelinger og hvilke projekter der hører til hvilke kategorier?
Siden som det hele står på, kalder alle databaser på eleverne, så der fra for man, f.eks: $row-Boeg['dagsprojekt'].
I det brugeren logger ind, bliver: $_SESSION['MM_Afdeling'] oprettet, afhændigt af, hvad afdeling de hører inde under.
Så når jeg f.eks, logger ind, er min: $_SESSION['MM_Afdeling'] "Service".
Hvilket vil sige, at jeg må kun se de knapper på eleverne, som eleverne der i databasen, har deres "Dagsprojekt", som Erhvervsskole".
SÅ først og fremmest, kommer det helt an på, hvad afdeling, man hører til .
Hvis jeg f.eks var på bostedet uranus mini, så må jeg se knapper, på alle eleverne, som er på bostedet uranus mini, som denne definere: // Bosted ($_SESSION['MM_Afdeling'] == "Uranusmini"))
Men derimod, hvis jeg er: Forstander, kompetencecenter, sekretariat, må jeg altid se knappen.
og hvis jeg er på Erhvervsskolen, må jeg kun se de elever, som har deres: $row-Boeg['dagsprojekt'] == "Erhvervsskole".
Så det er de 2 faktorer, det spiller ind på, enten om man er på samme "bosted" som eleven, eller om man er i det samme dagsprojekt, som eleven.
Og elevernes data, bliver taget fra databasen, og de bliver så stillet op i mod brugerenes session, eller de variabler, som der selv er smidt ind.
Det er en ret besværlig måde, jeg har haft fået fat i den før, men så skulle jeg ændre i den, fordi dagskolen og erhvervsskolen måtte se hinandens elevers knapper.
Hvis du kender en smartere måde, er jeg meget interreseret i at hører det! :-)
Du siger, at der er 2 faktorer der spiller ind på, bosted og dagsprojekt-kategori.
Du viser to variabler, $_SESSION['MM_Afdeling'] og $row_Boeg['dagsprojekt'], hvor der trækkes oplysninger fra.
Det med dagsprojekter er rimeligt klart. De står i $row_Boeg['dagsprojekt'], og du har vist to dagsprojekt-'kategorier', Dagskole og Erhvervsskole (men der kunne være flere.)
Brugerens afdeling vises i $_SESSION['MM_Afdeling'], siger du. Men om en knap må vises kan afhænge af både brugerens afdeling og elevens afdeling, for eksempel om de begge hører til 'afdeling' Uranusmini. Hvor kan man se afdelingen/bostedet for den elev der har lavet et dagsprojekt? Er der en row_Boeg['bosted'] eller sådan noget?
Og så kunne det se ud, som $_SESSION['MM_Afdeling'] bruges til flere forskellige slags oplysninger, bosted (Uranusmini), afdeling(service), og position(forstander, sekretariat). Eller kommer det ud på det samme? Altså (i pseudokode)
if($_SESSION['MM_Afdeling'] == Forstandere || Sekretariat || Kompetencecenter || Dagskolen || Erhvervsskolen) vis knappen. (Alle dagsprojekter må ses.)
else if($_SESSION['MM_Afdeling'] == Service && $row_Boeg['dagsprojekt'] == erhvervsskolen) vis knappen. (Serviceafdelingen må kun se erhvervsskolens dagprojekter)
else if($_SESSION['MM_Afdeling'] == row_Boeg['bosted']) vis knappen.
Hvis du kan fastlægge det krystalklart, så kan vi komme igang med en kode.
Der en row_Boeg['bosted'], som den kunne spejles op imod.
Sidder lige paa en linux computer, som ikke helt forstaar dansk tastetur, derfor disse: aa, oe...
Men lige nu, er den hardcodet ind i selve koden, til hver enkelte tabel, som viser elever.
Derfor er den eneste som aandres loebende denne: // Bosted ($_SESSION['MM_Afdeling'] == "Uranusmini")) {
Da alle de andre er faste.
Forstander og sekretariat og socialraadgivere, gaar ogsaa ind som afdelinger, derfor er de ogsaa i samme session.
Man kan sige, selve kode betydningen:
//Tjekker om brugeren kommer fra Forstandere eller sekretariet afdelingen, og hvis de goer, saa giv adgang. (($_SESSION['MM_Afdeling'] == "Forstandere" || $_SESSION['MM_Afdeling'] == "Sekretariet") ||
// Tjekker om brugeren kommer fra Kompetencecenter eller socialraadgiver afdelingen, og hvis de goer, saa giv adgang. ($_SESSION['MM_Afdeling'] == "Kompetencecenter") || ($_SESSION['MM_Afdeling'] == "Socialrådgivere") ||
// Hvis eleven er paa dagsprojektet: Dagskolen, saa giv adgang til at vise //knappen. ($row_Boeg['dagsprojekt'] == "Dagskole") ||
// Hvis eleven er paa dagsprojektet: Erhvervsskole, saa giv adgang til at //vise knappen. ($row_Boeg['dagsprojekt'] == "Erhvervsskole") ||
//Man kunne i princippet, sagens smede disse 2 sammen, da Erhvervsskolen //og Dagskolen maa se hinandens elev knapper.
// Tjekker foerst og fremmest, om elevens dagsprojekt er Erhvervsskole, og // her efter, tjekker vi om brugerens afdeling er Erhvervsskole. ($row_Boeg['dagsprojekt'] == "Erhvervsskole" && $_SESSION['MM_Afdeling'] == "Service") ||
// Her tjekker vi under den enkelte unge, om paadagogen har adgang til at // se knappen. ($_SESSION['MM_Afdeling'] == "Uranusmini")) {
// Her ville man maaske ogsaa kunne pege den op i mod databasen, i stedet //for at lave ren tekst.
For at tage din kode:
if($_SESSION['MM_Afdeling'] == Forstandere || Sekretariat || Kompetencecenter || socialraadgivere ||) vis knappen. (Alle elev knapper må ses.)
else ($row_Boeg['dagsprojekt'] == Dagskole || Erhvervsskole ) vis knappen. (alle elev knapperne, hvor eleven er tilknyttet erhvervsskolen eller dagskolen via: $row_Boeg['dagsprojekt'], maa ses.)
else if($_SESSION['MM_Afdeling'] == Service && $row_Boeg['dagsprojekt'] == erhvervsskolen) vis knappen. (Serviceafdelingen må kun se erhvervsskolens dagprojekter)
else if($_SESSION['MM_Afdeling'] == row_Boeg['bosted']) vis knappen.
Og hvis intet af dette opfyldes, skal html koden med knappen indeni ikke vises.
haaber det gav lidt mere mening.
Det er en ret besvaarlig kode, og endnu mere besvaarlig maade, det er gjort paa, kan jeg godt se, jo mere, jeg kigger paa det, saa at kunne lave det mere automatisk, kunne vaare genialt.
Siger tusinde tak for hjælpen, kan godt se, hvad min fejl nu har været.
Synes godt om
Ny brugerNybegynder
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.