webForumDet fria alternativet

navigeringsproblem

PHP

7 svar · 530 visningar · startad av annaica

Medlem sedan maj 200753 inlägg
Frågan#1

Gör en testsida där jag ska använda php-navigering. Det har jag använt förut och nu har jag bara använt copy&paste för att få in koden. Den funkar felfritt på en annan sida men jag får det inte att funka nu.

<div id="left">
    <li><a href="index.php?page=s1">L&auml;nk 1</a></li>
    <li><a href="index.php?page=s2">L&auml;nk 2</a></li>
    <li><a href="index.php?page=s3">L&auml;nk 3</a></li>
</div>

<div id="small">
<?php
if (!isset($_GET["page"]))echo "funkar inte";
	 else
        if ($_GET["page"] == s01) require("small/s01.php");
        if ($_GET["page"] == s02) require("small/s02.php");
		if ($_GET["page"] == s03) require("small/s03.php");
        ?> 
</div>

sidorna som skall inkluderas innehåller bilder och inget annat...

Någon som ser vad jag gjort fel?

Medlem sedan juni 200032 967 inlägg
#2
if ($_GET["page"] == "s1")

etc?

Medlem sedan juni 20001 251 inlägg
#3

När ett villkor sträcker sig flera påståenden än ett måste det kapslas in med { }, alternativt använda den http://se.php.net/manual/en/control-structures.alternative-syntax.php

<div id="small"> 
<?php 
if (!isset($_GET["page"]))echo "funkar inte"; 
     else 
        if ($_GET["page"] == s01) require("small/s01.php"); 
        if ($_GET["page"] == s02) require("small/s02.php"); 
        if ($_GET["page"] == s03) require("small/s03.php"); 
        ?> 
</div>

Blir således:

<div id="small"> 
<?php 
if (!isset($_GET["page"])) { echo "funkar inte"; }
     else {
        if ($_GET["page"] == "s01") require("small/s01.php"); 
        if ($_GET["page"] == "s02") require("small/s02.php"); 
        if ($_GET["page"] == "s03") require("small/s03.php"); 
     }
        ?> 
</div>
Medlem sedan maj 200753 inlägg
#4

stevenet skrev:

När ett villkor sträcker sig flera påståenden än ett måste det kapslas in med { }, alternativt använda den http://se.php.net/manual/en/control-structures.alternative-syntax.php

Blir således:

<div id="small"> 
<?php 
if (!isset($_GET["page"])) { echo "funkar inte"; }
     else {
        if ($_GET["page"] == "s01") require("small/s01.php"); 
        if ($_GET["page"] == "s02") require("small/s02.php"); 
        if ($_GET["page"] == "s03") require("small/s03.php"); 
     }
        ?> 
</div>

Gör ingen skillnad.

och som sagt, jag har klippt och klistrat en kod jag redan skrivit som ser ut exakt så som jag skrev och där funkar det utan problem.

Medlem sedan juni 200032 967 inlägg
#5

Där blev det lite citationstecken i stevenet-inlägget också. ;)

Se också bara till att du använder samma värden överallt. Skickar du s1 i querystring får du se till att jämföra mot det också - inte mot s01.

Medlem sedan juni 20001 251 inlägg
#6

Ange exakt hur skriptet ser ut, samt eventuellt felmeddelande. Även PHP-version kan vara intressant.

[r] @nders hittade nog rätt, dina länkar pekar fel. :)

Medlem sedan maj 200753 inlägg
#7

@nders skrev:

if ($_GET["page"] == "s1")

etc?

haha, en sån liten grej alltså. Ja, ibland är man blind!

Medlem sedan sep. 20025 506 inlägg
#8

Varför inte bara

<?php 
if (isset($_GET['page']) && file_exists("small/".$_GET['page'].".php"))
   require ("small/".$_GET['page'].".php");
else
   echo "Funkar inte";
?>
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)