Avatar billede cpccorp Juniormester
28. oktober 2014 - 22:07 Der 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.
Avatar billede moddi100 Seniormester
28. oktober 2014 - 22:17 #1
Og hvad er det du gerne vil have hjælp til?

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';
Avatar billede cpccorp Juniormester
29. oktober 2014 - 13:35 #2
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='&raquo;' 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='&raquo;' 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='&raquo;' border='0' />";
$menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>";
break; 
}
$menupunkttaeller++;
}
Avatar billede moddi100 Seniormester
29. oktober 2014 - 18:42 #3
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å.
Avatar billede cpccorp Juniormester
30. oktober 2014 - 07:18 #4
////// HJÆLPEVARIABLER //////
define("PANEL_AKTIV","cbx_aktiviteter");
define("PANEL_AKTIV_MENU","cbx_aktivitetsmenu");
define("PANEL_EVENT","cbx_event");
$cbx_panel["aktivitetsfil"] = "aktivitet.php";
////// VARIABLER //////
$aktiv = array();
$idet = "";
$filnavnet = "";
$menustart = "<div id='navigation'><ul>";
$menuslut = "</ul></div>";
$menupunkter = "";
$menupunkttaeller = 1;
$firstlink = 0;
$firstlinket = "";
////// FILNAVNET //////
$filnavnet = basename($_SERVER['PHP_SELF']);
//echo $filnavnet;
////// AKTIVITET ///////
if(isset($_GET["a"])){ $idet = $_GET["a"];} else { $idet = 0;}
if($idet != 0){
$result = dbquery("SELECT * FROM ".PANEL_AKTIV." WHERE cbx_id='".$_GET["a"]."'");
while ($data = dbarray($result)) {
$aktiv["navn"] = $data["cbx_aktiv_navn"]; 
}
} else {
$aktiv["navn"] = "";
}
////// HENT MENUPUNKTER /////
$result = dbquery("SELECT * FROM ".PANEL_AKTIV_MENU." WHERE cbx_menu_aktivid='".$idet."' ORDER BY cbx_sort");
while ($data = dbarray($result)) {
opretmenupunkt($data["cbx_menu_menutype"],$data["cbx_menu_navn"],$data["cbx_menu_intern_link"],$data["cbx_menu_ekstern_link"],$data["cbx_menu_fil_link"],$data["cbx_menu_target"]);
}

if($filnavnet == $cbx_panel["aktivitetsfil"] && $aktiv["navn"] != "") {

openside($aktiv["navn"]);
echo $menustart.$menupunkter.$menuslut;
closeside();
Avatar billede cpccorp Juniormester
30. oktober 2014 - 07:19 #5
Ja det kan da sikkert finpudses
Avatar billede moddi100 Seniormester
01. november 2014 - 11:45 #6
Du siger at den fejler i "$firstlinket", når der ikke er valgt et menupunkt?

Når du gemmer et link, som f.eks.
$firstlinket = "?a=1&modul=2";
kan du ikke bagefter hente variablerne i $_GET['a'] og $_GET['modul']. I stedet for bør du have en struktur som hedder:

////// HJÆLPEVARIABLER //////
define("PANEL_AKTIV","cbx_aktiviteter");
define("PANEL_AKTIV_MENU","cbx_aktivitetsmenu");
define("PANEL_EVENT","cbx_event");
$cbx_panel["aktivitetsfil"] = "aktivitet.php";
////// VARIABLER //////
$default_a = 1;
$default_modul = 1;

... resten af din kode ....

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;
}


$menupunkter .= "<a href='".$linket."' target='".$menutarget."' class='side'><img src='".THEME."images/bullet.gif' class='bullet' alt='&raquo;' border='0' />";
$menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>";
break;
Avatar billede cpccorp Juniormester
01. november 2014 - 19:35 #7
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

a vil altid været defineret
Avatar billede moddi100 Seniormester
01. november 2014 - 20:37 #8
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().
Avatar billede cpccorp Juniormester
02. november 2014 - 02:29 #9
ok jeg prøver det lige
Avatar billede cpccorp Juniormester
05. november 2014 - 00:11 #10
Hvordan laver jeg de kode tags du indsætter kode på her på siden??
Avatar billede cpccorp Juniormester
05. november 2014 - 00:21 #11
DETTE ER DET MODUL DER LOADES PÅ SIDEN AKTIVITET.PHP
---------------------

<?php

/**
* @author Søren Klausen
* @copyright 2014
*/
////// PANEL CLASS //////

/// OPRET MENUPUNKT ///
function opretmenupunkt($menutype,$menunavn,$menuinternlink,$menueksternlink,$menufillink,$menutarget){
global $firstlink,$menupunkttaeller,$menupunkter,$firstlinket;
global $default_a, $default_link;
$linket = "";
$menupunkter .= "<li>";
switch($menutype){
case 1: ///intern link
$linket = "?".$menuinternlink."&a=".$_GET["a"];
if ($firstlink == 0){
$firstlink = $menupunkttaeller;
$default_a = $_GET["a"];
$default_link = $menuinternlink;
}
$menupunkter .= "<a href='".$linket."' target='".$menutarget."' class='side'><img src='".THEME."images/bullet.gif' class='bullet' alt='&raquo;' 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='&raquo;' 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='&raquo;' border='0' />";
$menupunkter .= " <span><strong>".$menunavn."</strong></span></a></li>";
break; 
}
$menupunkttaeller++;
}

/// OPRET LISTE ///
function opretliste(){

}

/// OPRET FUNKTION ///
function opretfunktion($aktivitetid,$aktivitetsnavn,$funktionsnummer){
global $locale;
switch($funktionsnummer){
case 1: /// NYHEDER
add_to_title($locale['global_201']."NYHEDER FRA ".$aktivitetsnavn);
opentable("NYHEDER FRA ".$aktivitetsnavn);
$result = dbquery("SELECT * FROM ".DB_NEWS." WHERE news_cat='".$aktivitetsnavn."'");
$numrows = dbrows($result);
if ($numrows != 0){
while ($data = dbarray($result)) {
$cbx_data["titel"] = $data["news_subject"];
$cbx_data["kategori"] = $data["news_cat"];
$cbx_data["opretter"] = $data["news_name"];
$cbx_data["nyheden"] = $data["news_news"];
dbquery("UPDATE ".DB_NEWS." SET news_reads=news_reads+1 WHERE news_id='".$data["news_id"]."'");
openside($cbx_data["titel"]);
echo "<table width='98%' align='center'>
<tr>
<td valign='top'>";
echo html_entity_decode($cbx_data["nyheden"]);
echo "</td>
</tr>
</table>";
closeside();
}
closetable();
} else {
echo "DER ER AKTUELT INGEN NYHEDER";

}
closetable();
break; 
case 2: /// EVENTS
add_to_title($locale['global_201']."EVENTS FRA ".$aktivitetsnavn);
opentable("EVENTS FRA ".$aktivitetsnavn);
$today = date("Y-m-d");
$returner = "";
$tilmdate = "";
$slutdato = "";
$starttid = "";
$sluttid = "";
$beskrivelsen = "";
$pdf = "";
$link = "";
$result = dbquery("SELECT * FROM ".PANEL_EVENT." WHERE cbx_aktiv='1' AND cbx_event_kategori='".$aktivitetsnavn."' ORDER BY cbx_event_start_dato");
$numrows = dbrows($result);
while ($data = dbarray($result)) {
openside("<font size=2>".dansk($data["cbx_event_navn"])."</font>");

$date1 = DateTime::createFromFormat("Y-m-d", $data["cbx_akt_start_dato"])->format("Y-m-d");
$date2 = DateTime::createFromFormat("Y-m-d", $data["cbx_akt_slut_dato"])->format("Y-m-d");
$startdato = DateTime::createFromFormat("Y-m-d", $data["cbx_event_start_dato"])->format("w-d-n-Y");
if($data["cbx_upload_fil"] != "") {$pdf = "<a href='".$cbx_mappe["event_pdf"].$data["cbx_upload_fil"]."' target='_blank' ><img src='".$cbx_mappe["event_ikoner"]."PDF.png' width='48' height='48' /></a><br>";}
if($data["cbx_event_link"] != "") {$link = "<a href='".$data["cbx_event_link"]."' target='_blank' ><img src='".$cbx_mappe["event_ikoner"]."Globe.png' width='48' height='48' /></a>";}
if ($data["cbx_event_slut_dato"] != "") {
$slutdato = "<tr><td colspan='2'><br><font size='2'><strong>Slutdato:</strong> ".event_datoen(DateTime::createFromFormat("Y-m-d", $data["cbx_event_slut_dato"])->format("w-d-n-Y"))."</font></td>
</tr>";
}
if($data["cbx_event_tilmeld_slut_dato"] != ""){
$tilmdate = "<tr><td colspan='2'><br><font size='2' valign='middle'><strong>Sidste tilmelding:</strong> ".event_datoen(DateTime::createFromFormat("Y-m-d", $data["cbx_event_tilmeld_slut_dato"])->format("w-d-n-Y"))."</font></td></tr>";
}
if ($data["cbx_event_beskrivelse"] != ""){
$beskrivelsen = "<tr><td colspan='2'><br><font size='2'><strong>Beskrivelse</strong><br>".html_entity_decode($data['cbx_event_beskrivelse'])."</font></td></tr>"; 
}
if($data["cbx_event_start_tid"] != ""){ $starttid = "<tr><td colspan='2'><br><font size='2' valign='middle'><strong>Starttid:</strong> ".$data["cbx_event_start_tid"]."</font></td></tr>";}
if($data["cbx_event_slut_tid"] != ""){ $sluttid = "<tr><td colspan='2'><font size='2' valign='middle'><strong>Sluttid:</strong> ".$data["cbx_event_slut_tid"]."</font></td></tr>";}

echo "<table width='100%'>
<tr>
<th rowspan='6' width='50px' align='center' valign='top'><img src='".$cbx_mappe["piktogram"].find_piktogram($data["cbx_event_kategori"])."' width='50px' height='50px' /></th>
<td colspan='2'><font size='2'><strong>Startdato:</strong> ".event_datoen($startdato)."</font></td>
<td rowspan='6' width='50px' align='center' valign='top'>".$pdf.$link."</td>
</tr>";
echo $slutdato;
echo $starttid;
echo $sluttid;
echo $tilmdate;
echo $beskrivelsen;
echo "</table>";
closeside(); 
}
closetable();
break;
case 3: /// KONTAKT SIDE

break; 
}
}

function find_piktogram($pikto){
global $cbx_settings;
$returner = "";
if ($pikto == $cbx_settings["kategori"]) {
$returner = $cbx_settings["kategori_pikt"];
} else {
$result = dbquery("SELECT * FROM ".PANEL_AKTIV." WHERE cbx_aktiv_navn='".$pikto."'");
$numrows = dbrows($result);
while ($data = dbarray($result)) {
$returner = $data["cbx_aktiv_piktogram"];
}
}
return $returner;
}

function event_datoen($date){
$returner = "";
$ugedage[0] = "Søndag";
$ugedage[1] = "Mandag";
$ugedage[2] = "Tirsdag";
$ugedage[3] = "Onsdag";
$ugedage[4] = "Torsdag";
$ugedage[5] = "Fredag";
$ugedage[6] = "Lørdag";
$mnd[1] = "januar";
$mnd[2] = "februar";
$mnd[3] = "marts";
$mnd[4] = "april";
$mnd[5] = "maj";
$mnd[6] = "juni";
$mnd[7] = "juli";
$mnd[8] = "august";
$mnd[9] = "september";
$mnd[10] = "oktober";
$mnd[11] = "november";
$mnd[12] = "december";
$datoen = explode('-',$date);
$returner = $ugedage[$datoen[0]].", den ".$datoen[1].". ".$mnd[$datoen[2]]." ".$datoen[3];
return $returner;   
}
Function dansk($string){
$returner = $string;
$returner  = str_replace("[OE]","Ø",$returner); 
$returner  = str_replace("[oe]","ø",$returner);
$returner  = str_replace("[AA]","Å",$returner);
$returner  = str_replace("[aa]","å",$returner);
$returner  = str_replace("[AE]","Æ",$returner); 
$returner  = str_replace("[ae]","æ",$returner);
$returner  = str_replace("OE","Ø",$returner); 
$returner  = str_replace("oe","ø",$returner);
$returner  = str_replace("AA","Å",$returner);
$returner  = str_replace("aa","å",$returner);
$returner  = str_replace("AE","Æ",$returner); 
$returner  = str_replace("ae","æ",$returner);
return $returner;       
}

function roter_dato($datoen){
$returner = "";
if ($datoen != ""){
$tempos = explode("-",$datoen);
$returner = $tempos[2]."-".$tempos[1]."-".$tempos[0];

return $returner;
}

////// HJÆLPEVARIABLER //////
define("PANEL_AKTIV","cbx_aktiviteter");
define("PANEL_AKTIV_MENU","cbx_aktivitetsmenu");
define("PANEL_EVENT","cbx_event");
$cbx_panel["aktivitetsfil"] = "aktivitet.php";
////// VARIABLER //////
$aktiv = array();
$idet = "";
$filnavnet = "";
$menustart = "<div id='navigation'><ul>";
$menuslut = "</ul></div>";
$menupunkter = "";
$menupunkttaeller = 1;
$firstlink = 0;
$firstlinket = "";
$default_a = "";
$default_link = "";
////// FILNAVNET //////
$filnavnet = basename($_SERVER['PHP_SELF']);
//echo $filnavnet;
////// AKTIVITET ///////
if(isset($_GET["a"])){ $idet = $_GET["a"];} else { $idet = 0;}
if($idet != 0){
$result = dbquery("SELECT * FROM ".PANEL_AKTIV." WHERE cbx_id='".$_GET["a"]."'");
while ($data = dbarray($result)) {
$aktiv["navn"] = $data["cbx_aktiv_navn"]; 
}
} else {
$aktiv["navn"] = "";
}
////// HENT MENUPUNKTER /////
$result = dbquery("SELECT * FROM ".PANEL_AKTIV_MENU." WHERE cbx_menu_aktivid='".$idet."' ORDER BY cbx_sort");
while ($data = dbarray($result)) {
opretmenupunkt($data["cbx_menu_menutype"],$data["cbx_menu_navn"],$data["cbx_menu_intern_link"],$data["cbx_menu_ekstern_link"],$data["cbx_menu_fil_link"],$data["cbx_menu_target"]);
}

if($filnavnet == $cbx_panel["aktivitetsfil"] && $aktiv["navn"] != "") {

openside($aktiv["navn"]);
echo $menustart.$menupunkter.$menuslut;
closeside();

}
?>
Avatar billede cpccorp Juniormester
05. november 2014 - 00:22 #12
DETTE ER HVAD AKTIVITET.PHP INDEHOLDER
------------------

<?php

/**
* @author Søren Klausen
* @copyright 2014
*/

require_once "maincore.php";
require_once THEMES."templates/header.php";

if (isset($_GET["side"]) && $_GET["side"] != "" && $_GET["a"] != "") {
opentable("DENNE SIDE INDHOLDER INGEN DATA");
echo "SIDER - SIDE=".$_GET["side"];
closetable();
}

if (isset($_GET["list"]) && $_GET["list"] != "" && $_GET["a"] != "") {
opentable("DENNE SIDE INDHOLDER INGEN DATA");
echo "lISTE - LISTE=".$_GET["list"];
closetable();
}

if(isset($_GET["func"]) && $_GET["func"] != "" && $_GET["a"] != "") {
opentable("DENNE SIDE INDHOLDER INGEN DATA");
echo "FUNKTIONER - FUNKTION =".$_GET["func"];
closetable();
}

if(isset($_GET["mod"]) && $_GET["mod"] != "" && $_GET["a"] != "") {
opentable("DENNE SIDE INDHOLDER INGEN DATA");
echo "MODULER - MODUL=".$_GET["mod"];
closetable();
}

if(!isset($_GET["func"],$_GET["side"],$_GET["modul"]) && isset($_GET["a"]) && $_GET["a"] != ""){
echo $default_link."<br>";
echo $default_a."<br>";
redirect("aktivitet.php?".$default_link."&a=".$default_a);
}
require_once THEMES."templates/footer.php";
?>
Avatar billede cpccorp Juniormester
05. november 2014 - 00:25 #13
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
Avatar billede moddi100 Seniormester
06. november 2014 - 00:13 #14
"Siden ikke kan vises" Har du en mere præcis fejlkode fra serveren af eller lign?

Generelt set laver du bokse ved at skrive [ div ] ..... [ /div ] uden mellemrummene rundt om det du ønsker at putte i en boks.
Avatar billede cpccorp Juniormester
02. december 2014 - 13:40 #15
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

Lig et svar
Avatar billede moddi100 Seniormester
02. december 2014 - 19:46 #16
Glad for at det lykkedes for dig.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester