sxxxe83 Skrevet 19. januar 2010 Del Skrevet 19. januar 2010 (endret) Hei, justerer litt på hoved index.php fila som skal gjøre det meste, for at sidene vises slik jeg vil. Jeg har et array (manuelt oppsett): $pages = array ( "content" => array ("home" => "id1", "about" => "id2", "guestbook" => "id3", "addguestbook" => "id4", "contact" => "id5" ), "arbeider" => array ("newindex" => "id6", "index" => "id7" ), "foto" => array ("index" => "id8", "site2" => "id9" ), "artikler" => array ("Da Cora fikk en stemme" => "id10" ) ); Mappestrukturen er slik: inc/arbeider/ inc/content/ inc/foto/ inc/artikler/ I index.php fila har jeg dette som sørger for at riktig mappe og fil hentes/vises: // Find the category and page to use. if(isset($_GET['category'], $pages[$_GET['category']])) { $category = $_GET['category']; } else { $category = 'content'; } if(isset($_GET['page'], $pages[$category][$_GET['page']])) { $page = $_GET['page']; } else { $page = 'home'; } // Include the selected content page. require $_SERVER["DOCUMENT_ROOT"] . ("/inc/{$category}/{$page}.php"); Det ville jo vært mye enklere om jeg ikke måtte endre array for hver gang en fil endres/legges til etc. Fant en funksjon som gjorde omtrent det jeg ville, problemet er at output til array jeg satt opp manuelt ikke er helt lik det denne funksjonen spytter ut : function hashify_directory($topdir, &$list, $ignoredDirectories=array('counter','inc')) { if (is_dir($topdir)) { if ($dh = opendir($topdir)) { while (($file = readdir($dh)) !== false) { if (!(array_search($file,$ignoredDirectories) > -1) && preg_match('/^\./', $file) == 0) { if (is_dir("$topdir$file")) { if(!isset($list[$file])) { $list[$file] = array(); } ksort($list); hashify_directory("$topdir$file/", $list[$file]); } else { array_push($list, $file); } } } closedir($dh); } } } Array (manuelt) output: (justerte output til kun en mappe) Array ( [content] => Array ( [home] => id1 [about] => id2 [guestbook] => id3 [addguestbook] => id4 [contact] => id5 ) ) Array -> funksjon output: (justerte output til kun en mappe) Array ( [inc] => Array ( [content] => Array ( [0] => about.php [1] => home.php [2] => guestbook.txt [3] => contact.php [4] => guestbook.php [5] => addguestbook.php ) ) ) Jeg har da prøvd "ommøblere" linken slik at siden skal vises, men det fungerte ikke, da med tanke på output til manuelt array, og funksjon array... Linken for about siden er da altså slik: index.php?category=content&page=about Noen som kan hjelpe meg med å stokke det om slik at output til funksjonen blir lik den jeg satt opp manuelt?? Om ønskelig kan jeg sikkert legge ut mere informasjon. Men det fungerer altså fint med array jeg satt opp manuelt. Mvh Torgeir Endret 19. januar 2010 av sxxxe83 Lenke til kommentar
BlueEAGLE Skrevet 19. januar 2010 Del Skrevet 19. januar 2010 Jeg tror du er litt på bærtur her. Hovedsaklig så brukes numeriske ID-er til å hente ting fra databaser. Hvis du har en filstruktur så vil du mye heller bla igjennom filkatalogen(e) og lagre disse i f.eks. $_SESSION. Alternativt lagre det i en statisk fil som leses. Funksjoner av interesse er: http://php.net/glob http://php.net/opendir http://php.net/readdir eller http://php.net/scandir http://php.net/closedir (du vil lukke katalogen etter den er lest) http://php.net/foreach (for å gå igjennom matrisen med filnavn) Jeg anbefaler å lese kommentarene. Sannsynligvis så er glob() det som er mest aktuelt for deg. Du vil da kunne bruke matriseindeksen som ID i urlen av type index.php?id=3 vil vise filen som ligger i $_SESSION['filelist'][3] for eksempel. Håper det hjelper. Lenke til kommentar
sxxxe83 Skrevet 19. januar 2010 Forfatter Del Skrevet 19. januar 2010 Interessant. Skal lese Takk for info. 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å