If, elseif, else - problem

Tags:    php

<?
if($menu=1) {
echo "1 working"; }
elseif($menu=2) {
echo "2 working"; }
elseif($menu=3) {
echo "3 working";}
elseif($menu=4) {
echo "4 working"; }
elseif($menu=5) {
echo "5 working"; }
elseif($menu=6) {
echo "6 working"; }
elseif($menu=7) {
echo "7 working"; }
elseif($menu=8) {
echo " 8 working"; }
else {
echo ("Frontpage");
}
?>


Hvad er der galt her?
Jeg har lavet nogle ændringer. Der skal bruger include i stedet for echo, men det er if,elseif same else der er problemet.
Den poster "1 working" heletiden.



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
<?
if($menu=1) {
echo "1 working"; }
elseif($menu=2) {
echo "2 working"; }
elseif($menu=3) {
echo "3 working";}
elseif($menu=4) {
echo "4 working"; }
elseif($menu=5) {
echo "5 working"; }
elseif($menu=6) {
echo "6 working"; }
elseif($menu=7) {
echo "7 working"; }
elseif($menu=8) {
echo " 8 working"; }
else {
echo ("Frontpage");
}
?>


Hvad er der galt her?
Jeg har lavet nogle ændringer. Der skal bruger include i stedet for echo, men det er if,elseif same else der er problemet.
Den poster "1 working" heletiden.


Hej

Grunden til at det ikke virker er at

if($menu=1) skal ændres til if($menu==1) dvs. dobbelt == (Skal der altid være, også i elseif)

Groyk.dk
Simon Madsen

[Redigeret d. 16/10-03 19:47:26 af Simon Madsen]



Okay.

Det er normal sat lidt pænere op, men ved ikke lige hvad den laver her.



LOL... det viste jeg da godt - kæmpe klovn jeg er.
point til dig :)



En lille fodnote... Lav det da som en switch. Det er efters sigende ca 15% hurtigere end if/elseif/else til den slags.. Her kan du se hvordan jeg ville gøre det:
<?
switch($menu)
{
case 1: echo '1 working'; break;
case 2: echo '2 working'; break;
case 3: echo '3 working'; break;
case 4: echo '4 working'; break;
case 5: echo '5 working'; break;
case 6: echo '6 working'; break;
case 7: echo '7 working'; break;
case 8: echo '8 working'; break;
default: echo 'Frontpage';
}
?>
Som du kan se, bruger jeg også enkelt anførselstegn, istedet for dobbelt. Dobbelt anførselsteg er kun smart, hvis du absolut vil have variabler til at stå inde i en tekst, og ikke gider at bruge enkelt anførselstegn kombineret med konkatenation (eller hvad det hedder når man sætter to strings sammen med et punktum).

Thus, I conclude



Tror jeg er lidt for n00b til at kaste mig ud i det endnu.
Har problemer nok med det mest basale :P



:D ok så. Bare du har det i baghovedet, til når du en dag kommer op på det mere avancerede niveau ;)

Thus, I conclude



En lille fodnote... Lav det da som en switch. Det er efters sigende ca 15% hurtigere end if/elseif/else til den slags.. Her kan du se hvordan jeg ville gøre det:
<?
switch($menu)
{
case 1: echo '1 working'; break;
case 2: echo '2 working'; break;
case 3: echo '3 working'; break;
case 4: echo '4 working'; break;
case 5: echo '5 working'; break;
case 6: echo '6 working'; break;
case 7: echo '7 working'; break;
case 8: echo '8 working'; break;
default: echo 'Frontpage';
}
?>
Som du kan se, bruger jeg også enkelt anførselstegn, istedet for dobbelt. Dobbelt anførselsteg er kun smart, hvis du absolut vil have variabler til at stå inde i en tekst, og ikke gider at bruge enkelt anførselstegn kombineret med konkatenation (eller hvad det hedder når man sætter to strings sammen med et punktum).

Thus, I conclude


Det er jo for genialt, og 100x mere overskueligt end alle de if/elseif/else sætninger :) - kan også bruges med include (se eksempel). Jeg giver lige en lille forklaring, så det er lettere at forstå ;-)

switch($id){
case "link1": include("link1.php");
break;
case "link2": include("link2.php");
break;
default: include("link2.php")
break;
}

- case fungere på samme måde som if, men er mere overskueligt.
- default bruges får der ikke er var nogen værdi for variabel (id).




t