Avatar billede tobrukDk Novice
23. maj 2012 - 19:35 Der er 35 kommentarer og
1 løsning

menu til hver rank

hej

det er sådan at jeg vil ikke lige include file til hver brugere side, så vil høre om der er nogle måde som gøre at det er muligt at jeg kan lave noget if og else til hvis den er rank 0 eller ikke log ind så skal den vise en bedste menu frem og hvis den er rank 1 så skal den vise admin menu frem og hvis det er fra 2 og op af så skal den vise brugere menu

jeg har brugt den her


<ul id="menu">
    <li><a href="http://xxx./forside/">Forsiden</a></li>
</ul>

Admin

<ul id="menu">
    <li><a href="http://xxx./admin-forside/">Forsiden</a></li>
</ul>

bruger

<ul id="menu">
    <li><a href="http://xxx./bruger-forside/">Forsiden</a></li>
</ul>


hvordan skal jeg del det op ??
Avatar billede jakobdo Ekspert
23. maj 2012 - 20:22 #1
Kunne du ikke bruge en switch?

switch($rank){
  case 1:
    echo "Admin menu";
    break;
  case 2:
    echo "Bruger menu";
    break;
  default:
    echo "Login menu";
}
Avatar billede tobrukDk Novice
23. maj 2012 - 20:51 #2
jeg har aldrig forstår switch, vil du forklare mig hvordan det virker?? hvis du har lyst? jeg har aldrig sådan rigtigt forstår det..
Avatar billede jakobdo Ekspert
23. maj 2012 - 21:03 #3
//Her putter du den værdi ind, som skal "testes" på... $rank
switch($rank){
  case 0:
    //Hvis rank = 0
    echo "Rank = 0";
    break;
  case 1:
    //Hvis rank = 1
    echo "Rank = 1";
    break;
  case 2:
    //Hvis rank = 2
    echo "Rank = 2";
    //Nu "glemmer" jeg en break;
  case 3:
    //Hvis rank = 3
    echo "Rank = 3";
    break;
  default:
    //Hvis RANK ikke matcher nogle af de andre, 0,1,2,3, så vil den "altid" tage denne...
    echo "Rank er ikke 0,1,2,3";
}

Prøv at lave en var med $rank og angiv $rank = 0, $rank = 1 osv... Og se hvordan koden arbejder...
Avatar billede tobrukDk Novice
23. maj 2012 - 21:57 #4
kan jeg f.eks lave sådan at den siger >= 2?
Avatar billede jakobdo Ekspert
23. maj 2012 - 22:30 #5
Det ser ud til du kan bruge > og <.
Men er det så ikke nemmere med en:

if(...)
else if(...)
else
Avatar billede tobrukDk Novice
23. maj 2012 - 23:08 #6
vil du bygge det sådan her eller hvad?


switch($rank){
  if(case 1):
    echo "Admin menu";
    break;
elseif(>= case 2)
    echo "Bruger menu";
    break;
else default:
    echo "Login menu";
Avatar billede tobrukDk Novice
23. maj 2012 - 23:56 #7
eller skal jeg bygge det sådan her


<?php
if($rank == 1)
{
   
}
elseif($rank == 2)
{
   
}
else
{
   
}
?>
Avatar billede kjeldsted Novice
24. maj 2012 - 00:05 #8
#6 kan ikke lade sig gøre. En switch skal have et statement som den tester. Så hvis du skal lave en større end, så du bruge en if sætning.

Desuden kan #7 omskrives til:

<?php
switch($rank) {
    case 1:
        //Vis for ét
    break;
   
    case 2:
        //Vis noget andet for to
    break;

    default:
        //Hvis noget tredje hvis $rank er hverken 1 eller 2
    break;
}
Avatar billede kjeldsted Novice
24. maj 2012 - 00:11 #9
En anden mulighed er også at tilføje flere muligheder for én visning. Altså:

<?php
switch($rank) {
    case 0:
        //Vis noget hvis $rank er 0   
    break;

    case 1:
        //Vis noget andet hvis $rank er 1
    break;
 
    case 2:
    default:
        //Hvis noget tredje hvis $rank er 2 eller noget andet.
    break;
}


Ovenstående ville dog give samme resultat med blot default: (altså uden case 2:)
Men man kan jo fx. bruge det som:

shitch($var) {
case 1:
    //Gør noget hvis 1
break;

case 2:
case 3:
case 4:
    //Gør noget andet hvis $var er 2,3 eller 4
break;

default:
    //Gør noget tredje hvis $var er hverken 1,2,3,4
break;
}
Avatar billede tobrukDk Novice
24. maj 2012 - 00:24 #10
Jeg forstår overhovedet ikke hvordan det virker,

#kjeldsted nu gøre du mig bare mere forvirret sorry men det er ikke ondt ment eller ligne, men jeg vil heller sige det frem for at intet at sige, men lige nu gøre det mig bare mere og mere forvirret den måde som du har sæt det op på, det kan godt være at det er lidt der skal til for jeg bliver forvirret men det er nok fordi jeg aldrig sådan rigtigt at haft skulle bruge det før nu,

Men kan du ikke prøve forklare mig sådan lidt længe nede af hvordan det virker og ligne. seriøst jeg forstår det bare ikke overhovedet.. hmm
Avatar billede jakobdo Ekspert
24. maj 2012 - 08:54 #11
tobrukDK: Har du kigget på mit eksempel fra #3?
For hvis ikke du forstår den forklaring, så tror jeg desværre aldrig du kommer til at forstå det.
Det er ganske "simpelt"

Du kan vel se det som en værdi, som afgør hvilken "dør" du skal gå ud af. :o)
Avatar billede tobrukDk Novice
24. maj 2012 - 12:59 #12
#11 Jakobdo

Jeg forstår godt hvad du mener sådan helt, men jeg skal bare have bygge op sådan at 2 og op af bliver sendt / har den menu.. hvis du kan se hvad jeg mener. jeg synes du forklare det måde en simpelt måde men efter det som kjeldsted skrive eller vise mig så bliver jeg bare forvirret hvordan jeg skulle gøre det?
Avatar billede jakobdo Ekspert
24. maj 2012 - 13:01 #13
Prøv at tag mit simple eksempel og start med at få styr på det.

Prøv evt. selv at ret $rank 1 til 10
Og se resultatet.
Så burde du kunne se hvordan det virker.
Og faktisk selv udtænke din løsning. :o)
Avatar billede tobrukDk Novice
24. maj 2012 - 13:19 #14
#13 det vil jeg også gøre,

jeg skal bare prøve at arbejde med at sådan hvis talet 2 er højre så skal den vise sådan her, hvis du kan følge hvad jeg mener i det hele taget omkring det der. ;) jeg skal bare arbejde på det..
Avatar billede jakobdo Ekspert
24. maj 2012 - 13:21 #15
Jeg kan sagtens følge dig.
Vil bare have du tænker selv og prøver lidt selv.
Avatar billede tobrukDk Novice
24. maj 2012 - 14:25 #16
#15 jeg skal nok prøve og jeg vil prøve mig frem, og se hvad jeg kan gøre ellers må du lige ret på mig :)
Avatar billede tobrukDk Novice
24. maj 2012 - 14:25 #17
#15

kan jeg gøre noget i den still som jeg gøre i #6 ?
Avatar billede jakobdo Ekspert
24. maj 2012 - 14:39 #18
prøv at test $rank med forskellig værdi fra mit indlæg #1
Avatar billede tobrukDk Novice
24. maj 2012 - 14:52 #19
kan jeg bygge det sådan her

<?php
switch($rank)
{
    if($rank == 1)
    {
    case 1:
        echo "Admin menu";
        break;
    }
    elseif($rank >= 2)
    {
    case 2:
        echo "Bruger menu";
        break;
    }
    else
    {
    default:
        echo "Login menu";
    }
}
?>
Avatar billede tobrukDk Novice
24. maj 2012 - 14:52 #20
sorry ikke dit indlæg før nu,
Avatar billede tobrukDk Novice
24. maj 2012 - 15:01 #21
men kan jeg bygge det op sådan som jeg havde lavet det?
Avatar billede jakobdo Ekspert
24. maj 2012 - 15:06 #22
Har du prøvet at teste min kode fra #1 ?
Avatar billede tobrukDk Novice
24. maj 2012 - 15:23 #23
den kommer kun frem og siger "Login menu" selv om jeg er log ind og det hele .. hmm
Avatar billede jakobdo Ekspert
24. maj 2012 - 15:28 #24
Hvad er $rank så ?
Avatar billede tobrukDk Novice
24. maj 2012 - 15:30 #25
skal jeg ikke tag den ude fra databasen eller hvad?
Avatar billede jakobdo Ekspert
24. maj 2012 - 15:37 #26
Det skal du jo gerne kunne fortælle mig. :o)
Men jo, der hvor en brugeres rank er gemt, skal du jo trække den ud fra.
Avatar billede tobrukDk Novice
24. maj 2012 - 15:51 #27
ja okay ;)

jeg har gjordt sådan her


<?php
if ($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere`')) {
    $stmt->execute();
    $stmt->bind_result($rank);
    switch($rank){
      case 1:
        echo "Admin menu";
        break;
      case 2:
        echo "Bruger menu";
        break;
      default:
        echo "Login menu";
    }
    $stmt->close();
} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
men de siger stadig det samme..  hmmm
Avatar billede jakobdo Ekspert
24. maj 2012 - 15:58 #28
Prøv denne kode:

<?php
$username = "tobrukdk";
if($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere` WHERE `brugernavn` = ?')){
  $stmt->bind_param("s", $username);
  $stmt->execute();
  $stmt->bind_result($rank);
  $stmt->fetch();
 
  switch($rank){
    case 1:
      echo "Admin menu";
      break;
    case 2:
      echo "Bruger menu";
      break;
    default:
      echo "Login menu";
  }
  $stmt->close();
} else {
  /* Der er opstået en fejl */
  echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
Avatar billede tobrukDk Novice
24. maj 2012 - 16:04 #29
#28 Det er email den skal se efter, men sådan her min log ind side ud


<form action="http://xx_xx-.xxxxxx.dk/godkendt-bruger/" method="POST">
            <table border="0">
                <tr>
                    <td id="tb-w_a">Email Brugernavn</td>
                    <td>:</td>
                    <td><input type="email" name="email"/></td>
                </tr>
                <tr>
                    <td id="tb-w_a">Adgangskode</td>
                    <td>:</td>
                    <td><input type="password" name="password"/></td>
                </tr>
                <tr>
                    <td id="tb-w_a"></td>
                    <td></td>
                    <td><input type="submit" value="Log ind" /></td>
                </tr>
            </table>
            </form>


det her er sådan menu som bliver include til siderne


<?php
$username = ;
if($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere` WHERE `brugernavn` = ?')){
  $stmt->bind_param("s", $username);
  $stmt->execute();
  $stmt->bind_result($rank);
  $stmt->fetch();
 
  switch($rank){
    case 1:
      echo "Admin menu";
      break;
    case 2:
      echo "Bruger menu";
      break;
    default:
      echo "Login menu";
  }
  $stmt->close();
} else {
  /* Der er opstået en fejl */
  echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
Avatar billede tobrukDk Novice
24. maj 2012 - 17:50 #30
jeg har prøve gøre sådan her

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/jesperbo/public_html/,,,.dk/bruger_index.php:17) in /home/jesperbo/public_html/,,,.dk/include/menu.php on line 18

og sådan her ser det ud med session endnu man bliver logge ind på siden

$_SESSION["logged_in"] = true;
        $_SESSION["user_id"] = $id;
        $_SESSION["djnavn"] = $djnavn;
        $_SESSION["rank"] = $rank;
        $_SESSION["email"] = $email;



og sådan her ser min menu ude


<?php
session_start();
$username = $_SESSION["email"];
if($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere` WHERE `email` = ?')){
  $stmt->bind_param("s", $username);
  $stmt->execute();
  $stmt->bind_result($rank);
  $stmt->fetch();
 
  switch($rank){
    case 1:
      echo "Admin menu";
      break;
    case 2:
      echo "Bruger menu";
      break;
    default:
      echo "Login menu";
  }
  $stmt->close();
} else {
  /* Der er opstået en fejl */
  echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
Avatar billede tobrukDk Novice
24. maj 2012 - 18:50 #31

<?php
session_start();
include("include/database/db.php");
if($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere` WHERE `email` = ?')){
  $stmt->bind_param("s", $email);
  $email = $_SESSION["email"];
  $stmt->execute();
  $stmt->bind_result($rank);
  $stmt->fetch();
 
  switch($rank){
    case 1:
      echo "Admin menu";
      break;
    case 2:
      echo "Bruger menu";
      break;
    default:
      echo "Login menu";
  }
  $stmt->close();
} else {
  /* Der er opstået en fejl */
  echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
Avatar billede tobrukDk Novice
24. maj 2012 - 19:42 #32
jeg skal lige session_start(); inde på de sider hvor jeg skal bruge menu :D og jakobdo, nu skal jeg bare havde bygge sådan at den siger ">="
Avatar billede jakobdo Ekspert
25. maj 2012 - 08:17 #33
kan du ikke bare bruge default til det ?
Avatar billede tobrukDk Novice
25. maj 2012 - 17:20 #34
#33 jeg har en anden måde at lave det som jeg vil lave . Men lige et svar som tak før hjælpen
Avatar billede jakobdo Ekspert
25. maj 2012 - 23:35 #35
Svar!
Avatar billede jakobdo Ekspert
25. maj 2012 - 23:50 #36
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
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