isset($_GET) problemer.

Tags:    php

Min menu, har lidt problemer med get. med class='current'
Den metode har virket før, men er begyndt at bruge isset, for at undgå fejl med:

error_reporting(-1);
ini_set('display_errors', 1);

Men det giver nogle start problemer for mig.
Den skal gør current aktiv når det er den side man er under, ellers ikke.


Fold kodeboks ind/udPHP kode 


Nogen der kan løse det med mig?.

Lige nu gør den dem alle 3 aktive ved at være på "forsiden". Men de andre sider, så er der intet.



10 svar postet i denne tråd vises herunder
6 indlæg har modtaget i alt 21 karma
Sorter efter stemmer Sorter efter dato
I tænker allesammen forkert ... bortset fra Nikolaj. Der har valgt at lave noget helt anden kode.

Fold kodeboks ind/udPHP kode 


Du har bare lavet den fejl at test på om isset() er en string og isset() er altid en boolean ... Du skal huske at teste på om variablen er sat OG om den er lig en ønsket værdi.



Indlæg senest redigeret d. 07.01.2014 06:22 af Bruger #17081
Som Daniel Mautone fint pointere, er der problemer med dine logiske operatorer.

!= betyder IKKE lig med.
== betyder lig med.

Af samme årsag oplever du fejl i dit script, da du har bedt dit script udføre noget andet, end hvad du havde i tankerne.

Hvis du beder du script om, at tilføje klassen "current" på de sider, der ikke er lig dine strenge i dine kontrol-statements (if, elseif, else), er det klart, at de får klassen "current", når ikke du er på den side, som du har angivet i din streng.

Som dit script er nu, sker følgende:

Hvis $_GET key'en "side" ikke er sat, skal "forside" være current.
Hvis $_GET key'en "side" IKKE er lig "test", skal "test" have klassen current.
Hvis $_GET key'en "side" IKKE er lig "kontakt", skal "kontakt" have klassen current.

Hvad du vil ende op med, vil være omvendt - ihvertfald for de to punkter, der kræver en hvis værdi:

Hvis $_GET key'en "side" ER LIG "test", skal "test" have klassen current.
Eller hvis $_GET key'en "side" ER LIG "kontakt", skal "kontakt" have klassen current.

Du kunne også gøre brug af et switch statement.
Du kan eventuelt tage udgangspunkt i følgende eksempel:

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 07.01.2014 04:48 af Bruger #16122
Hvis du nu lige retter dine if sætninger så der stå følgende:
Fold kodeboks ind/udPHP kode 

Lige så gælder det for test.

Den du har nu siger at hvis det ikke er lig med kontakt eller test så gør dette.
Den jeg har smidt siger hvis lig med kontakt så gør dette



PHP er ikke så meget efter om man benytter isset i $_GET ... PHP er efter om man prøver, at referere et ikke defineret index.

f.eks. $_GET['hejmeddig'], hvis 'hejmeddig' ikke er et index i $_GET vil du få en fejl. Derfor skal du først teste om 'hejmeddig' er sat: isset($_GET['hejmeddig']) og hvis den er sat kan du så bruge den.



Indlæg senest redigeret d. 08.01.2014 06:33 af Bruger #17081
Hvad fejl sker der?



jeg har nævner ikke noget om, at du skal sammensætte noget. Du skal bare erstatte 2 linier i dit originale kode.



At test og kontakt bliver sat med current når man ikke er på forsiden.

Altså test og kontakt samtidig.



Indlæg senest redigeret d. 07.01.2014 03:41 af Bruger #17554
Hvordan vil du så sammensætte de to du snakker om dan ?



Det virker også fint nok med:

Fold kodeboks ind/udPHP kode 

Dog forlanger den Undefined altså isset, og så virker det ikke med kontakt, for så vil kontakt ikke få current



Indlæg senest redigeret d. 07.01.2014 10:39 af Bruger #17554
Argh, ja det virker.
Og mange tak for jeres hjælp.

Kan i forklare mig hvorfor php er så meget efter om man benytter isset i $_GET ?





Tak :)



t