Gå til innhold

Modifisere funksjon som lister ut mapper og filer, legger i et array.


Anbefalte innlegg

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 av sxxxe83
Lenke til kommentar
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...