• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

If SChleifen Problem

Furien

Mitglied
Hi Community,
Ich habe folgendes Problem:
Ich habe eine If Anweisung:
PHP:
             <?php
            $home = "index.php?page=home";
            $about = "index.php?page=about";
            $dl = "index.php?page=dl";
            $credits = "index.php?page=credits";

            if ($_GET[page] == home or empty($_GET[page])) {
                echo "<div id=\"simple_navi_div\">";
                echo "    <ul id=\"simple-navi\">";
                echo "        <li class=\"active\"><a href=\"$home\">HOME</a></li>";
                echo "        <li><a href=\"$about\">ABOUT ME</a></li>";
                echo "        <li><a href=\"$dl\">DOWNLOADS</a></li>";
                echo "        <li><a href=\"$credits\">CREDITS</a></li>";
                echo "    </ul>";
                echo "</div>";
            }
            elseif ($_GET[page] == about) {
                echo "<div id=\"simple_navi_div\">";
                echo "    <ul id=\"simple-navi\">";
                echo "        <li><a href=\"$home\">HOME</a></li>";
                echo "        <li class=\"active\"><a href=\"$about\">ABOUT ME</a></li>";
                echo "        <li><a href=\"$dl\">DOWNLOADS</a></li>";
                echo "        <li><a href=\"$credits\">CREDITS</a></li>";
                echo "    </ul>";
                echo "</div>";
            }
            elseif ($_GET[page] == dl) {
                echo "<div id=\"simple_navi_div\">";
                echo "    <ul id=\"simple-navi\">";
                echo "        <li><a href=\"$home\">HOME</a></li>";
                echo "        <li><a href=\"$about\">ABOUT ME</a></li>";
                echo "        <li class=\"active\"><a href=\"$dl\">DOWNLOADS</a></li>";
                echo "        <li><a href=\"$credits\">CREDITS</a></li>";
                echo "    </ul>";
                echo "</div>";
            }
            elseif ($_GET[page] == credits) {
                echo "<div id=\"simple_navi_div\">";
                echo "    <ul id=\"simple-navi\">";
                echo "        <li><a href=\"$home\">HOME</a></li>";
                echo "        <li><a href=\"$about\">ABOUT ME</a></li>";
                echo "        <li><a href=\"$dl\">DOWNLOADS</a></li>";
                echo "        <li class=\"active\"><a href=\"$credits\">CREDITS</a></li>";
                echo "    </ul>";
                echo "</div>";
            }

        ?>
Für mein Problem ist die erste Anweisung wichtig.
Wie bezwecke ich es, dass egal was in $_GET[page] steht,
die erste Anweisung ausgeführt wird?

E Ich weiß, ich könnte das einfach mit else regeln, ich möchte aber trotzdem gerne wissen, wie das so geht.
 
Werbung:
Ich verstehe zwar den Sinn Deiner Frage nicht so ganz. Aber wenn Du etwas ausführen lassen willst, egal wie der Wert einer Variable ist, dann frag die Variable nicht ab und lasse einfach die Anweisungen ausführen.

Ich vermute mal, dass Du das nicht gemeint hast. Aber trotzdem sind wohl noch Fehler in Deinem Script. Bei einem assoziativen Array gehören die Indizes in Hochkommas, und genauso die Literale, die geprüft werden. Also z.B. so:
PHP:
if ($_GET['page'] == 'home' or empty($_GET['page']))
Gruß thuemmy
 
Öhm, indem du das einfach vor den If-Block setzt?

Aber ein paar andere Sachen:
Um die Strings müssen '' oder "" (ersteres empfiehlt sich, weil schneller), das gilt auch für Array-Indizes (auch wenn es, glaube ich, teils auch ohne geht).

Für das, was du machst, bietet sich switch an.

Und, zuletzt, wenn ich den Zweck richtig erahne, dann geht das alles viel einfacher, z.B.:
PHP:
function isActive($p)
{
  return $p == $_GET['page'] ? 'class="active"' : '';
}
PHP:
echo '<li ' . isActive('home') . '><a href="' . $home . '">HOME</a></li>';
Spart einiges an Schreibarbeit ;)
 
Werbung:
Dank euch für die Verbessrung mit den Hochkommas.
Da ich den ganzen Kram jetzt eh schon geschrieben hab,
habe ich das einfach mit else gemacht.
 
Werbung:
Nunja, wenn $_GET nich gesetzt wurde, wird es aber auch nicht angezeigt, außer ich schreibe in else das gleiche. Habe ich aber eh so gemacht, dass die Navi, die da sein soll, wenn $_GET noch nicht gesetzt wurde, in echo steht.
 
Zurück
Oben