Gå til innhold

Problem med ordning av mapper + rar array feil


Anbefalte innlegg

Dårlig emnetittel. Vet ikke helt hva som burde stå der, men her kommer uansett mitt hodebry:

 

 

$open = opendir("."); // Åpner spesifisert mappe
while(false !== ($read = readdir($open))) // Looper igjennom
if($read !== ".." && $read !== ".") // Utelukker "opp" og "ned"
foreach (glob("$read/thumb/*") as $filename1) {
$arr1[] = strip ('Numbers', $filename1); //bruker strippefunksjonen og tar vekk tall
}

 

Jeg ønsker å vise random bilde fra de to siste albumene som er lagt til, dvs de mappene som er sist blitt lagt til. Jeg får det til med én mappe, men jeg klarer ikke å skille mappene fra hverandre når jeg har to. Nå legges alle bildene til samme array, mens jeg skulle hatt ett array for hver mappe. Om det finnes lettere måter å gjøre det på tar jeg gjerne imot hint.

Strippefunksjonen funker fint og det som kommer videre i scriptet funker fint. Er det å dele det opp jeg ikke forstår helt.

 

Har funnet veldig mange guider som viser random bilde fra én mappe, men jeg vil ha fra flere mapper og vil helst slippe å manuelt gå inn i scriptet for å skrive inn hvilke mapper det er. For det klarer jeg.

 

mvh Doffar

Endret av Doffar
Lenke til kommentar
Videoannonse
Annonse

Kanskje du kan modifisere denne funksjonen, hentet fra kommentarene på php.net/glob

 

//Something I used to sort dir & subdir into array (multidimensional) reflecting dir structure.

function getRecursiveFolderList($curDir,$currentA=false) 
  {					
	$dirs = glob($curDir . '/*', GLOB_ONLYDIR);	 

	$cur = 0;
	foreach($dirs as $dir)
	  {
		$currentA[$cur]['path'] = $dir;
		$currentA[$cur] = $this->getRecursiveFolderList($dir,$currentA[$cur]);

		++$cur;
	  }

	return $currentA;
  }

 

For å teste kan du f.eks gjøre slik

echo "<pre>";
print_r(getRecursiveFolderList(katalog_navn_her));
echo "</pre>";

Endret av Crowly
Lenke til kommentar

Jeg fikk til det jeg ønsker på en litt annen måte:

$open = opendir("."); // Åpner spesifisert mappe
while(false !== ($read = readdir($open))) { // Looper igjennom
if($read !== ".." && $read !== ".") { // Utelukker "opp" og "ned"
foreach (glob("$read/thumb/*") as $filename1) {
$arr1[] = strip ('Numbers', $filename1); //bruker strippefunksjonen og tar vekk bokstaver
}
$tilfeldig_tall_fra_arr1 = $arr1[array_rand($arr1)];
$bilde1 = '<a href="photos/thumb"><img src="photos/thumb/DSC_'.$tilfeldig_tall_fra_arr1.'.jpg" /></a>';
echo($bilde1);
}

}

 

Siden alle bildene vil ha navnet DSC_"tall".jpg så bruker jeg det slik det er nå.

 

Men nå oppstod det et nytt problem. Siden jeg skal inludere dette som en modul i joomla så må jeg benytte meg av rare veier gjennom mappesystemet for å komme meg til mappene. Hvordan går jeg opp et hakk i hiarkiet?

 

 

Jeg legger til et spørsmål her:

 

Hvorfor fungerer denne koden når den er på en standalone side, men når jeg skal legge den til som en modul i Joomla så får jeg feilmeldingen: "Warning: array_rand(): First argument has to be an array in.."? Noen som vet. Jeg skjønner ingenting nå. Her er koden jeg bruker:

$open = opendir($_SERVER['DOCUMENT_ROOT'] . '/bilder/'); // Åpner spesifisert mappe
while(false !== ($read = readdir($open))) { // Looper igjennom

if($read !== ".." && $read !== ".") { // Utelukker "opp" og "ned"


foreach (glob("$read/thumb/*") as $filename1) {
$arr1[] = strip ('Numbers', $filename1); //bruker strippefunksjonen og tar vekk bokstaver
//echo($filename1.'<br />');
}

$tilfeldig_tall_fra_arr1 = $arr1[array_rand($arr1)];
$bilde1 = '<a href="'.$read.'"><img src="photos/thumb/DSC_'.$tilfeldig_tall_fra_arr1.'.jpg" /></a>';

Endret av Doffar
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å
×
×
  • Opprett ny...