j-- Skrevet 26. juni 2005 Del Skrevet 26. juni 2005 Heihei. Først og fremst, beklager et litt kryptisk emnetittel. Driver nå og leker på clvn.net/simpel, og har kommet til menysystemet. Jeg vil ha det sånn at det er en hovedmeny som ligger på høyre side av innholdet, og en submeny som ligger på venstre side av innholdet. Dette har jeg klart, og når man nå trykker på knappen "blogg" på hovedmenyen så kommer submenyen frem. Det jeg nå vil er at hvis noen trykker på "blogg" -> "Personlig blogg" så skal fortsatt submenyen stå fremme, mens det bare er hovedinnholdet på siden som blir skiftet ut! Her er kodene som brukes: index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>simplifisert</title> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> </head> <body> <div id="main_content"> <h1><span id="hvit_h1">clvn</span><span id="orange_h1">net</span></h1> <br /> <?php $mappe = 'inc/'; $dir = opendir($mappe); $filer = array(); while (($filename = readdir($dir)) !== false) { if (is_file($mappe.$filename)) { $filer[$filename] = $mappe.$filename; } } if (isset($_GET['side']) && isset($filer[$_GET['side']])) { include $filer[$_GET['side']]; } else { include 'inc/hjem.php'; } ?> </div><!-- END main_content --> <div id="sidebar_l"><ul> <li><a class="meny_l" href="?side=hjem">Hjem</a></li> <li><a class="meny_l" href="?side=blogg">Blogg</a></li> <li><a class="meny_l" href="?side=filarkiv">Filarkiv</a></li> <li><a class="meny_l" href="?side=bildealbum">Bildealbum</a></li> <li><a class="meny_l" href="?side=portefolge">portefølje</a></li> <li><a class="meny_l" href="?side=info">Info</a></li> </ul></div><!-- sidebar_l --> <?php include 'submenu.php'; ?> <?php echo "$submenu" ?> </body> </html> submenu.php <?php if($_GET['side'] == 'blogg') { $submenu = " <div id=\"sidebar_r\"> <ul> <h3>Arkiv:</h3> <li><a class=\"meny_r\" href=\"#\">Mai 2005</a></li> <li><a class=\"meny_r\" href=\"#\">Juni 2005</a></li> <h3>Kategorier:</h3> <li><a class=\"meny_r\" href=\"?side=blogg_personlig_blogg\">Personlig blogg</a></li> <li><a class=\"meny_r\" href=\"#\">Ferie 2005</a></li> <li><a class=\"meny_r\" href=\"#\">Skoleblogg</a></li> <h3>Andre Bloggere:</h3> <li><a class=\"meny_r\" href=\"http://atomsopp.net\">Magnus Skaalsveen</a></li> <li><a class=\"meny_r\" href=\"http://atomsopp.net\">Anders Skaalsveen</a></li> <li><a class=\"meny_r\" href=\"#\">Ørjan Bo</a></li> </ul> </div> "; } if($_GET['side'] == 'filarkiv') { $submenu = " <div id=\"sidebar_r\"> <ul> <h3>Filarkiv:</h3> <li><a class=\"meny_r\" href=\"#\">Bla i filarkivet</a></li> <li><a class=\"meny_r\" href=\"#\">Last opp til filarkivet</a></li> </ul> </div> "; } if($_GET['side'] == 'bildealbum') { $submenu = " <div id=\"sidebar_r\"> <ul> <h3>Bildealbum:</h3> <li><a class=\"meny_r\" href=\"http://ff-norge.net\">Bla i Albumene</a></li> <li><a class=\"meny_r\" href=\"http://atomsopp.net\">5 siste bilder</a></li> </ul> </div> "; } if($_GET['side'] == 'info') { $submenu = " <div id=\"sidebar_r\"> <ul> <h3>Info:</h3> <li><a class=\"meny_r\" href=\"http://ff-norge.net\">Info om clvn.net</a></li> <li><a class=\"meny_r\" href=\"http://atomsopp.net\">Info om meg</a></li> </ul> </div> "; } ?> Filene som skal inkluderes på hovedsiden ligger i en mappe som heter inc/ . Så om noen kan forklare hvordan mans skal gjøre det for å få opp ting i hoveddelen på siden når man trykker på noe i submenyen, samt at submenyen står der til man trykker på noe annet i menyen til venstre, så vil jeg bli VELDIG glad På forrhånd takk til alle! Lenke til kommentar
kakkle Skrevet 26. juni 2005 Del Skrevet 26. juni 2005 Det er nok flere løsninger her, men her er en mulig: I submenu, må du benytte en annen variabel enn den du bruker i hovedmenyen. Velg så hvilken side som skal inkluderes utifra variabel i submeny. Dersom ikke noe er valgt i submeny, viser du default siden, som er den som skal vises når linken i hovedmenyen trykkes på. Ville kanskje latt hver submeny være en egen fil, slik at submenyen til f.eks blogg heter blogg.sub som inkluderes dersom blogg er valgt i hovedmenyen. Si fra dersom forklaringen ble litt kryptisk, så kan jeg muligens knote ned litt enkel kode som forklarer bedre. /Kakkle Lenke til kommentar
j-- Skrevet 27. juni 2005 Forfatter Del Skrevet 27. juni 2005 Da prøvde jeg litt, men fikk det ikke helt til. Om du kunne knotet ned en liten kodesnutt, så tror jeg det hadde hjulpet meg mye mer! Takker Lenke til kommentar
kakkle Skrevet 27. juni 2005 Del Skrevet 27. juni 2005 (endret) Her er bare et kjapt eksempel <? // Her kommer litt variabel innhenting først if (isset($GET["h"])) { $main = $_GET["h"]; if(isset($_GET["s"])) { // varibel s er fra submenu $includefile = $_GET["s"]; } else { $includefile = $main; } } else { $include_file="hovedside.php"; } ?> //Her er hovedmenyen <div class='mainmenu'> <li><a href='?h=blogg'>Blogg</a></li> <li><a href='?h=side2'>Side2</a></li> </div> <div class='maincontent'> // Her er hovedinnholdet include ("$includefile.php"); </div> <div class='submenu'> <? if(file_exists("$main.sub")) { include "$main.sub"; } ?> Her blir submeny vist etter hvilken link du har trykket i hovedmenyen, og er det samme ved trykk på submenu. Dersom det ikke er valgt noe fra hovedmenyen, vises hovedsiden (hovedside.php) og dersom det er valgt noe fra hovedmenyen, men ikke fra submenyen, vises filen med samme navn som hovedmenyen (F.eks. blogg.php) Og her er et eksempel på submenu fil: blogg.sub: <div id=\"sidebar_r\"> <ul> <h3>Kategorier:</h3> <li><a class=\"meny_r\" href=\"?h=$main&s=blogg_personlig_blogg\">Personlig blogg</a></li> <li><a class=\"meny_r\" href=\"?h=$main&s=ferie_2005\">Ferie 2005</a></li> <li><a class=\"meny_r\" href=\"?h=$main&s=Skoleblogg\">Skoleblogg</a></li> </ul> </div> Men den submenu tingen du har, funker egentlig like greit. Koden er ikke tilpasset din side. Dette er ment som et forslag om hvordan du kan gjøre det. Koden er heller ikke testet, og det kan være småfeil innimellom. Anbefaler ikke copy paste her. Mangler nok sikkert noen {, }, /(, ) og ; rundt omkring. Bør i teorien funke. Det som er litt viktig, er at du tar vare på hvilken link som er valgt i hovedmenyen, slik at koden heletiden vet hvilken submeny som skal vises. Håper du ble litt klokere. Si fra dersom dette ikke fungerer i det hele tatt EDIT: Fikset litt på submenyen, og tok kun med tre submeny punkter. /Kakkle Endret 27. juni 2005 av kakkle Lenke til kommentar
j-- Skrevet 27. juni 2005 Forfatter Del Skrevet 27. juni 2005 Tusen takk kakkle! Jeg fikk til det med submenyen, og lagret hver del i en .sub fil. Men jeg har problemer med selve hovedinnholdet på siden. Når man går rett inn på siden, så fungerer hovedinnholdet (inc/hjem.php), men når man bruker linkene i hovedmenyen så får jeg feilmeldingen: Warning: main() [function.main]: open_basedir restriction in effect. File(/portefolge) is not within the allowed path(s): (/home/web/wno63796:/var/tmp:/usr/local/lib/php) in /usr/home/web/wno63796/simpel/index.php on line 27 Warning: main(portefolge) [function.main]: failed to open stream: Operation not permitted in /usr/home/web/wno63796/simpel/index.php on line 27 Warning: main() [function.include]: Failed opening 'portefolge' for inclusion (include_path='.:') in /usr/home/web/wno63796/simpel/index.php on line 27 index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>simplifisert</title> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> </head> <body> <div id="main_content"> <h1><span id="hvit_h1">clvn</span><span id="orange_h1">net</span></h1> <br /> <p> <?php if (isset($_GET["h"])) { $main = $_GET["h"]; if (isset($_GET["s"])) { // varibel s er fra submenu $submenu = $_GET["s"]; } else { $includefile = "$main"; } } else { $includefile="inc/hjem.php"; } include ("$includefile"); ?> </p> </div><!-- END main_content --> <div id="sidebar_l"> <ul> <li><a class="meny_l" href="?h=hjem">Hjem</a></li> <li><a class="meny_l" href="?h=blogg">Blogg</a></li> <li><a class="meny_l" href="?h=filarkiv">Filarkiv</a></li> <li><a class="meny_l" href="?h=bildealbum">Bildealbum</a></li> <li><a class="meny_l" href="?h=portefolge">portefølje</a></li> <li><a class="meny_l" href="?h=info">Info</a></li> </ul> </div> <?php /*echo "$submenu"*/ ?> <?php if(file_exists("inc/$main.sub")) { include "inc/$main.sub"; } ?> </body> </html> Får altså beskjed om at feilen ligger på linje 27, altså "include ("$includefile");" Legger også med en .sub fil for ordens skyld: <div id="sidebar_r"> <ul> <h3>Filarkiv:</h3> <li><a class="meny_r" href="#">Bla i filarkivet</a></li> <li><a class="meny_r" href="#">Last opp til filarkivet</a></li> </ul> </div> Så kommer spørsmålene: Hva er det som gjør at man får den feilmeldingen når man trykke på noe i hovedmenyen. Og hva skal man skrive i <a href="?">link</a> i submenyen for at submenyen fortsatt skal være der, samtidig som den åpner en fil i hovedinnholdet? ----- Vil takke deg igjen, kakkle, for at du skrev ned det eksempelet Lenke til kommentar
kakkle Skrevet 27. juni 2005 Del Skrevet 27. juni 2005 (endret) Ligger alle include filene i folderen inc ? Da må du isåfall endre $includefile til dette: $includefile = "inc/$main.php" Forutsatt at filene dine har en .php endelse. evt kan de bytte stil inc eller hva du måtte ha. Du kan jo forsåvidt bake inn denne snutten i koden din, som du hadde fra før: $mappe = 'inc/'; $dir = opendir($mappe); $filer = array(); while (($filename = readdir($dir)) !== false) { if (is_file($mappe.$filename)) { $filer[$filename] = $mappe.$filename; } } Da kan du fjerne filendelsen fra $includefile og bruke $files[$includefile] I linkene i submenyen, må du skrive <a href="?h=$main&s=[side som submeny skal vise]"> EDIT: Se forøvrig i .sub eksempelet som jeg la med i forrige innlegg EDIT2: Ser også at du setter den variabelen som kommer fra submenu til $submenu. Sett denne til $includefile = "inc/".$_GET["s"] foreksempel, eller bare $_GET["s"] dersom du velger å benytte array metoden din. Endret 27. juni 2005 av kakkle Lenke til kommentar
j-- Skrevet 28. juni 2005 Forfatter Del Skrevet 28. juni 2005 Ok, klarte det til slutt med litt hjelp fra mange kanter Hvis det er interresant for dere så ser index.php fila sånn ut: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>simplifisert</title> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> </head> <body> <div id="main_content"> <h1><span id="hvit_h1">clvn</span><span id="orange_h1">net</span></h1> <br /> <?php $mappe = 'inc/'; $dir = opendir($mappe); $filer = array(); while (($filename = readdir($dir)) !== false) { if (is_file($mappe.$filename)) { $filer[$filename] = $mappe.$filename; } } if (isset($_GET["h"])) { $main = $_GET["h"]; if (isset($_GET["s"])) { // varibel s er fra submenu $submenu = $_GET["s"]; } else { $includefile = "inc/$main.inc"; } } else { $includefile="inc/hjem.inc"; } $linksubmenu="inc/$submenu.inc"; if(file_exists("inc/$submenu.inc")) { include "inc/$submenu.inc"; } if(isset($includefile)) { include "$includefile"; } ?> </div> <div id="sidebar_l"> <ul> <li><a class="meny_l" href="?h=hjem">Hjem</a></li> <li><a class="meny_l" href="?h=blogg">Blogg</a></li> <li><a class="meny_l" href="?h=filarkiv">Filarkiv</a></li> <li><a class="meny_l" href="?h=bildealbum">Bildealbum</a></li> <li><a class="meny_l" href="?h=portefolge">portefølje</a></li> <li><a class="meny_l" href="?h=info">Info</a></li> </ul> </div> <?php if(file_exists("inc/$main.sub")) { include "inc/$main.sub"; } ?> </body> </html> Tusen takk for hjelpa kakkle. Lenke til kommentar
j-- Skrevet 1. juli 2005 Forfatter Del Skrevet 1. juli 2005 Ok, nytt "problem". Vil ha "blogg" til å åpnes når man går inn på clvn.net/simpel. Fikk til dette med å bare skifte ut: $includefile="inc/hjem.inc"; med $includefile="inc/blogg.inc"; Men da åpnes ikke submenyen til blogg. Prøvde å få til dette med en if(), men fikk det ikke til. Hva skal jeg lese på for å finne det ut? Lenke til kommentar
kakkle Skrevet 1. juli 2005 Del Skrevet 1. juli 2005 Du må sette $main til blogg også... Kanskje like greit å sjekke om $_GET["h"] er satt eller ikke. Er den satt, sett $main til den verdien, hvis ikke, sett den til blogg. Prøv dette: if(isset($_GET["h"])) { $main = $_GET["h"]; } else { $main = "blogg"; } if(isset($_GET["s"])) { $includefile = "inc/".$_GET["s"].".inc"; } else { $includefile = "inc/$main.php"; } istedetfor: if (isset($_GET["h"])) { $main = $_GET["h"]; if (isset($_GET["s"])) { // varibel s er fra submenu $submenu = $_GET["s"]; } else { $includefile = "inc/$main.inc"; } } else { $includefile="inc/hjem.inc"; } Ikke testet i det hele tatt... Du kan forsåvidt fjerne variablen $submenu, tror jeg. Lenke til kommentar
j-- Skrevet 1. juli 2005 Forfatter Del Skrevet 1. juli 2005 Tusen * tusen takk måtte bytte ut en linje av koden ($includefile = "inc/$main.php"; med $includefile = "inc/$main.inc", men ellers var alt riktig Utrolig bra. Setter veldig pris på hjelpen du gir meg! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå