28. oktober 2014 - 22:07Der er
15 kommentarer og 1 løsning
Function script som tjekker om $_GET er sat
jeg har lavet en funktion tjekker en aktivitetsmenu for første interne link. Dette link gemmer den i en variabel $firstlinket.
Når siden loades vil jeg gerne kunne lave en funktion som tjekker om der er valgt et menupunkt.
Forstået på denne måde: Hvis man klikker på et menupunkt reloades siden og siden skulle gerne tjekke for følgende: $_GET["a"] Kategorien for aktiviteten $_GET["func"] Funktion som eksempelvis en liste skal vises $_GET["side"] En intern side skal vises $_GET["modul"] Et modul som jeg har oprettet skal vises
hvis ikke $_GET["a"] er sat skal der vises en tekst at siden ikke findes hvis $_GEt["a"] er sat skal der tjekkes for om $_GET["func"] $_GET["side"] $_GET["modul"]
er sat og skal hvis så vise "indholdet". hvis ikke skal den reloade side med $firstlinket.
Generelt set bør du kigge på funktionen isset(), der kontrollerer om en variabel eksisterer. Dog kigger den ikke på selve indholdet, som muligvis også kunne være relevant her.
// Følgende er kun sandt såfremt alle 4 variabler er sat if(isset($_GET['a'],$_GET['func'],$_GET['side'],$_GET['modul'])) echo 'Alt er sat'; else echo 'En eller flere er muligvis sat, men ikke alle';
Ingen af $_GEt variablerne vil være sat på én gang
Kan godt se det er lidt uklart formuleret ;-)
Havde selv lavet et script, men det fejlede altid i den del som skulle vise $firstlinket
Altså: hvis en af $_GET variablerne er sat vises det der tilhører den variabel dvs. hvis følgende er sat "?a=1&modul=2" - vises aktivitetsmenuen 1 og modulet 2
hvis ingen af $_Get variablerne er sat skal den vise siden som bliver genereret med $firstlinket
$firstlinket kan være "?a=1&side=2"
følgende funktion finder $firstlinket: function opretmenupunkt($menutype,$menunavn,$menuinternlink,$menueksternlink,$menufillink,$menutarget){ global $firstlink; global $menupunkttaeller; global $menupunkter; global $firstlinket; $linket = ""; $menupunkter .= "<li>"; switch($menutype){ case 1: ///intern link $linket = "?".$menuinternlink."&a=".$_GET["a"]; if ($firstlink == 0){$firstlink = $menupunkttaeller; $firstlinket = $linket;} $menupunkter .= "<a href='".$linket."' target='".$menutarget."' class='side'><img src='".THEME."images/bullet.gif' class='bullet' alt='»' border='0' />"; $menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>"; break; case 2: ///extern link $menupunkter .= "<a href='".$menueksternlink."' target='".$menutarget."' class='side'><img src='".THEME."images/bullet.gif' class='bullet' alt='»' border='0' />"; $menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>"; break; case 3: ///fil link $menupunkter .= "<a href='".$menufillink."' target='".$menutarget."' class='side'><img src='".THEME."images/bullet.gif' class='bullet' alt='»' border='0' />"; $menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>"; break; } $menupunkttaeller++; }
Kan du ikke også poste den kode som kalder funktionen?
Hvad er formålet med at din funktion tager imod både $menuinternlink, $menueksternlink og $menufillink, fremfor blot at sende den relevante og kalde den $link ? Du ville i princippet kunne undgå hele din switch så.
function opretmenupunkt($menutype,$menunavn,$menuinternlink,$menueksternlink,$menufillink,$menutarget){ global $firstlink; global $menupunkttaeller; global $menupunkter; global $firstlinket;
// Følgende linje tilføjes, bemærk at man godt kan have flere variabler adskilt af et komma global $default_a, $default_modul;
$linket = ""; $menupunkter .= "<li>"; switch($menutype){ case 1: ///intern link $linket = "?".$menuinternlink."&a=".$_GET["a"];
// Her sættes de to variabler til at indeholde standardværdierne fremfor en tekststreng if ($firstlink == 0){ $firstlink = $menupunkttaeller; $default_a = $_GET['a']; $default_modul = $menuinternlink; }
Det hele skulle laves fordi at hvis de første menupunkter ikke var interne skulle den finde den første interne og vise siden som default, når a eks. var 1 og ikke andet var sat
Når der klikkes på andre interne link skulle de vises, dvs eks modul/side/func var sat
Alt sammen skulle styres på samme side. Funktionen i "menuvisning", skulle bare finde det første interne link
Det ovenstående forstår jeg så godt
Men skal der defineres en default til moduler/sider/func
Jamen så er ovenstående jo vejen frem. Ligesom du kører nu kan du bruge globals og $firstlink så det kun er første interne menupunkt, der sætter variablerne.
Du laver så samtidig lige så mange standard ($default_xx) variabler, som du har behov for - en for hvert modul, side og func. Skal disse ændre sig alt efter hvilket menupunkt der er først, jamen så må du have værdierne for dette med, når du kalder funktionen opretmenupunkt().
Det der sker når man vælger aktivitet.php?a=1 er at den skal vise menuen i venstre side og hvis kun a er sat skal den finde det første interne link og vise indholdet af dette.
Hvilket funktion i modulet finder, men når jeg kalder aktivtet.php?a=1 - skriver den efter kort tid at siden kan ikke vises. Selv om redirect linket er korrekt
Hej tak for hjælpen, jeg brugte det du skrev til mig, og fandt ud af at lave det således at i stedet for at the reloadede siden at kalde funktioner i stedet, dette gjorde at siden ikke fejlede
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.