Avatar billede t-johansen Juniormester
28. januar 2016 - 22:39 Der er 10 kommentarer og
2 løsninger

If med flere Or til kontrol af bruger adgang

Jeg har en form hvor nogle input felter skal være readonly, nogen skal skjules og nogen skal kunne redigeres, alle afhænge af hvilken bruger_level der er logget ind.

Bemærk jeg har 7 bruger_levels og de har ikke et mønster for hvilke inputs de må hvad i så jeg skal definerer det for hver input felt.

Noget ligende dette, dog virker det bare ikke når derer flere "Or" i en If:


<input class="cell"
                                    <? if($brugerlevel == 1 or 2 or 4 or 6) {echo "type=\"text\" readonly";} ?>
                                    <? if($brugerlevel == 3 ) {echo "type=\"hidden\" ";} ?>
                                    <? if($brugerlevel == 6 or 7 ) {echo "type=\"text\" ";} ?>
                                   
                name="saelger" value='<? echo $row->saelger; ?>'></input>




nogen der har en god ide til hvordan man får flere "Or" til at virke?
Avatar billede t-johansen Juniormester
28. januar 2016 - 22:51 #1
har fundet ud af at man kan gøre det sådan her:

<input class="cell"
                                    <? if($brugerlevel == 1 or $brugerlevel == 4 or $brugerlevel == 6) {echo "type=\"text\" readonly";} ?>
                                    <? if($brugerlevel == 7 ) {echo "type=\"hidden\" ";} ?>
                                    <? if($brugerlevel == 3 or $brugerlevel == 7 ) {echo "type=\"text\" ";} ?>
                                   
                name="saelger" value='<? echo $row->saelger; ?>'></input>


men er der en smartere måde?
Avatar billede t-johansen Juniormester
28. januar 2016 - 23:00 #2
Det skal hertil nævnes at disse 3 if sætninger skal laves for 28 input felter.
Avatar billede sonalias Seniormester
29. januar 2016 - 00:50 #3
$levels = array("1", "4", "6");

if (in_array($brugerlevel, $levels)) {
    echo "type=\"text\" readonly";
}

Så kan du sammenligne med hele arrays istedet :)
Avatar billede sonalias Seniormester
29. januar 2016 - 00:52 #4
**Du får nok problemer med at sammenligne strenge og ints, så dit array skal nok istedet være array(1,4,6); men håber du forstår ideen.
Avatar billede jakobdo Ekspert
29. januar 2016 - 09:04 #5
Og lidt videre på sonalias ide:

$readonly = array(1,4,6);
$hidden = array(3);
$text = array(6,7);

if(in_array($brugerlevel, $readonly)){
  echo "READONLY";
}

if(in_array($brugerlevel, $hidden)){
  echo "HIDDEN";
}

if(in_array($brugerlevel, $text)){
  echo "TEXT";
}

Så bliver din kode også lidt nemmere at forstå. :)
Avatar billede t-johansen Juniormester
29. januar 2016 - 10:57 #6
Tak for inputs, det er altid rart at se løsnings ide fra flere vinkler.

prøver jeres ideer af lidt senere.

post svar så deler jeg point mellem jer hvis det er acceptabelt.
Avatar billede tryltryl Juniormester
29. januar 2016 - 12:09 #7
Tænk lidt over dine skjulte felter. Hvis man kigger i kildekoden til browseren, så kan man se dem der. Så hvis dem med level 3 absolut ikke må se med, så skal der ikke en echo på.
Avatar billede t-johansen Juniormester
29. januar 2016 - 13:00 #8
Tryltryl, det havde jeg ikke lige tænkt over, så takker for info.


lige i denne er det ikke så vigtigt, men det kan jo være meget relevant.
Avatar billede sonalias Seniormester
29. januar 2016 - 14:35 #9
"svar"
Avatar billede jakobdo Ekspert
30. januar 2016 - 22:22 #10
Svar hvis du har brugt mine inputs.
Avatar billede t-johansen Juniormester
05. februar 2016 - 13:52 #11
beklager sene udmelding, men her er point, og takker, det var en stor hjælp
Avatar billede jakobdo Ekspert
05. februar 2016 - 14:01 #12
Takker for point.
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

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