En till if-sats fråga

PHP

2 svar · 229 visningar · startad av donkey

Medlem sedan jan. 2004179 inlägg
Trådstart#1

På sidan använder jag mej av en if-sats och GET för att visa olika innehåll. Ex. såhär

<? if ($_GET['id'] == "1") { ?>
id1
<? } elseif ($_GET['id'] == "2" | "21") { ?>
id2 eller id21
<? } elseif ($_GET['id'] == "3" | "31") { ?>
id3 eller id31
<? } ?>

Jag tycker det här borde fungera, men det gör det inte. Den första (id1) och den andra (id2 & id21) fungerar, men den tredje fungerar inte, utan då visas bara den andra. Tanken är alltså att ex. ?id=2 eller ?id21 ska visa det andra alternativet.
Någon som kan förklara varför eller ge exempel på hur det annars kan lösas?

Medlem sedan aug. 20039 340 inlägg
#2

Vet inte hur du kom på den syntaxen :) men så här bör det se ut:

<? } elseif ($_GET['id'] == "2" || $_GET['id'] == "21") { ?>

Det som händer nu är att först kollas om id är "1" är det inte det går den vidare. Sen kollar den om antingen $_GET['id'] == "2" är sant eller om "21" är sant, eftersom koden är felskriven. Och eftersom strängen "21" alltid är sann om man säger så, kommer skriptet stanna där.
Ett annat sätt att göra samma sak är:

<? switch ($_GET['id']) { 
case "1":
?>
id1
<? break;
case "2":
case "21": ?>
id2 eller id21
<? break;

case "3":
case "31": ?>
id3 eller id31
<? break;
} ?>

Med denna syntax är det dock viktigt att du inte glömmer break efter varje alternativ, som jag visar ovan.

Medlem sedan jan. 2004179 inlägg
#3

Funkar tack så mycket för hjälpen!

271 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)