PHP mehrere Werte mit Wert von $_GET vergleichen

mackilly

Cadet 3rd Year Pro
Registriert
Aug. 2005
Beiträge
38
Hallo,
ich möchte erreichen dass ein Link bei bestimmten Werten von $_GET oder wenn nichts übermittelt wurde, hervorgehoben wird oder normal erscheint.
als PHP-Anfänger bekomme ich ein Problem wenn ich mehrere Werte habe als Möglichkeit.
Wenn ich nur einen Wert vergleichen will dann ist diese Konstruktion
sinnvoll:

Code:
if(isset ($_GET['section']) AND $_GET['section'] == "kuchen")
{
echo "Link hervorgehoben";    
} else {
  echo "Link normal ";
}


Wie kann ich nach mehreren Werten suchen lassen?

z.B.: nach kuchen, brot und butter sowie wenn kein $_GET-Wert übermittelt wurde.

Habe schon versucht ein array zu erstellen und den Inhalt mit $_GET zu vergleichen aber ich habe nichts funktionierendes hinbekommen.

Code:
$bio   = array ("kuchen", "brot ", "butter" );
if (in_array (($_GET ['section']), $bio))
{
echo "Link hervorgehoben";    
} else {
  echo "Link normal ";
}

auch dieser Ausdruck hat nicht funktioniert:

Code:
if (isset ($_GET ['section']) and ($_GET ['section']) == "kuchen" or (isset($_GET ['section'])) == "brot" or (isset ($_GET ['section'])) == "butter"  or empty ($_GET))

Kann mich jemand korrigieren oder mit einem einfachem Ausdruck helfen?
 
Hi,

Code:
&& bedeutet UND

Code:
|| bedeutet ODER

Versuche es mal so (Pseudocode)

Code:
if (($Wert1 == 'x') || ($Wert2 == 'y'))
{
    //Mache irgendwas
}

VG,
Mad

Edit:

Noch ein Tipp: Wenn bei jedem Wert etwas anderes passieren soll schaue dir "switch case" an. Dann kannst du den Wert deiner GET-Variable einfach auf verschiedene Dinge prüfen und je nach Variablenwert etwas anderes tun.
 
Zuletzt bearbeitet:
Code:
$bio = array("kuchen", "brot ", "butter" );
if (in_array($_GET['section'], $bio))
{
echo "Link hervorgehoben";    
} else {
  echo "Link normal ";
}

So müsste es gehen, weil dein Beispiel hat nen Syntax Fehler.

mfg Jojo
 
Hey,
du könntest auch probieren, mehrere if zu machen.

Code:
if (Bedingung 1) 
{ } 
elseif(Bedingung 2) 
{ } 
else {}
 
Zuletzt bearbeitet:
vielen Dank für den Vorschlag. Ich habe den Ausdruck geändert und jetzt so getestet:

Code:
if (isset ($_GET ['section']) & ($_GET ['section']) == "brot" || (isset($_GET ['section'])) == "kuchen" || (isset ($_GET ['section'])) == "butter" || empty ($_GET))
{
echo "Link hervorgehoben";    
} else {
  echo "Link normal ";
}

Dann blieb der Link aber hervorgehoben nachdem er einmal gedrückt wurde.
 
Mehere "if" geht bei kleinen Seiten.
Es würde auch mit "case" gehen.
Wenn du längere Navigationsmenüs hast, vtl noch mit Unterpunkten bietet sich "foreach" an. Mit Rekursiven Schleifen hast du dann nur nen Bruchteil von dem Code, den du mit 20 "if" etc hast.


Du hast da ja auch ganze viele Oder Bedingungen. Oder = Und-oder nicht entweder oder... und irgendwas wird dann immer erfüllt. Bei der Art wäre "switch - case" wohl besser.
 
Zuletzt bearbeitet:
danke vielmals jojo, der kleine Fehler war es auch, aber hier habe ich das Problem dass eine Fehlermeldung kommt wenn die $_GET-Variable leer ist weil im Link nichts steht.
Wenn zum Beispiel die Startseite angewählt wird.
Dann kommt erstmal ein index-Fehler.
Wie kann ich diesen Fall abfragen und hier einbauen?

$bio = array("kuchen", "brot ", "butter" );
if (in_array($_GET['section'], $bio))
{
echo "Link hervorgehoben";
} else {
echo "Link normal ";
}
 
Zuletzt bearbeitet:
Zitat:
Dann blieb der Link aber hervorgehoben nachdem er einmal gedrückt wurde.
Und was hätte passieren sollen?

Wenn ich einen anderen Link im Menü drücke dann soll er wieder wie normal erscheinen.
Ergänzung ()


Damit habe ich es schon weiter oben probiert, ohne erfolg. :(
 
Ja entweder du prüfst da mit "isset" oder du gibts dem ganzen einfach nen Anfangswert.
Z.B. section = home danach holst du die Variable mit get und hast dann die neue oder es bleibt bei dem Anfangswert und "home" ist aktiv.
Bzw. besser du machst ein machst das "isset in eine if abfrage und gibts "section" im "else" einen Wert, wenn "isset" negativ ist.


edit:
So irgendwie nur schnell zusammenkopiert...
if (isset($_GET["section"]))
{
$bio = array("kuchen", "brot ", "butter" );
if (in_array($_GET['section'], $bio))
{
echo "Link hervorgehoben";
} else {
echo "Link normal ";
}
}
else
{
$section=home;

edit:
vtl. in dem Fall auch eher direkt
echo "Home hervorgehoben";
}
 
Zuletzt bearbeitet:
Code:
if (isset($_GET["section"]))
{
$bio = array("kuchen", "brot ", "butter" );
if (in_array($_GET['section'], $bio))
{
echo "Link hervorgehoben";
} else {
echo "Link normal ";
}
}
else
{
$section=home;
}

Das funktioniert fast, nur beim ersten mal aufrufen ist der Link verschwunden. :p


wie wäre es hiermit:

(...)
if (in_array($_GET['section'], $bio))

elseif empty ($_GET)
{
echo "Link hervorgehoben";
} else {
echo "Link normal ";
}

Hier habe ich leider auch hier Probleme mit der Syntax.
Müssen da nochmal geschweifte Klammern vor das elseif hin?
Ergänzung ()

danke vielmals, das war es, jetzt ist es auch beim Start der Seite der Link hervorgehoben.

danke auch an alle anderen die geholfen haben.


schönen Abend euch allen

mackilly
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben