directory uitlezen en 4 random submappen tonen
Ik heb in een directory 150 submappen staan. Met onderstaand script geeft hij ze ook perfect weer.
Nu is het echter de bedoeling dat er van die 150 mappen maar 4 random worden weergegeven
In alle mappen zitten 10 plaatjes. Alle bestandsnamen zijn in elke map hetzelfde.
de bedoeling is om uiteindelijk links te creeeren met de diverse submappen zodat hij telkens andere content laat zien.
voorbeeld link :
http://www.website.nl/map1/01.jpg
"map1" is dan de submap die verandert word adhv de random keuze van het script. Er moeten in totaal 4 links worden aangemaakt en het zou op onderstaande manier ongeveer aangeroepen dienen te worden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
http://www.website.nl/$map(01)/01.jpg
http://www.website.nl/$map(02)/01.jpg
http://www.website.nl/$map(03)/01.jpg
http://www.website.nl/$map(04)/01.jpg
?>
http://www.website.nl/$map(01)/01.jpg
http://www.website.nl/$map(02)/01.jpg
http://www.website.nl/$map(03)/01.jpg
http://www.website.nl/$map(04)/01.jpg
?>
Onderstaande code werkt nu prima, maar dient dus uitgebreid te worden met een random opties waarbij hij maar 4 mappen uitleest en deze per map naar het scherm geschreven kan worden.
Heeft iemand enig idee hoe ik dit hetbeste aan kan pakken ?
Jullie hoeven het niet voor te kauwen hoor, maar ik weet niet goed waar ik die random erin moet zetten en hoe ik ze per map naar mijn scherm kan schrijven..
tips zijn dus van harte welkom...alvast bedankt voor alle moeite
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test";
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .,
while ($map = readdir($dir_handle))
{
if($map!="." && $map!="..")
echo $map;
}
//closing the directory
closedir($dir_handle);
?>
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test";
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .,
while ($map = readdir($dir_handle))
{
if($map!="." && $map!="..")
echo $map;
}
//closing the directory
closedir($dir_handle);
?>
gr
Robin
Gewijzigd op 01/01/1970 01:00:00 door Robin
$path = "/blablabla/htdocs/map" . rand(1, 100);
foutmelding
Unable to open /blablabla/htdocs/test1
edit :
ik heb er nu een / bij gezet zodat hij de random submap pakt, echter verschijnt er nu /blablabla/htdocs/test/1 (die 1 is dus random)
maar voor die 1 moet nog een 0 staan, dus map 01, 02, 03 etc...hoe krijg ik dat voor elkaar ?
heb nu :
$path = "/blablabla/htdocs/test/" . rand(01, 04);
maar dan laat hij die 0 dus niet zien en pakt hij de map niet.
En hoe kan ik deze per map naar het scherm schrijven dan ?
Gewijzigd op 01/01/1970 01:00:00 door Robin
$path = "/blablabla/htdocs/test/" . str_pad(rand(1, 4), 2, "0", STR_PAD_LEFT);
Op zich werkt jouw laatste toevoeging prima, maar het script blijkt nu niet te doen wat ik wil.
Hij opent nu namelijk random een map in de directory "test". en aangezien daar geen submappen in zitten geeft hij niets weer.
Naar mijn mening was het allereerste pad nog het beste : $path = "/blablabla/htdocs/test"
Echter moet er dus een soort van limiet in komen dat hij er maximaal 4 mag laten zien en daarna een random er overheen...
$path = "/blablabla/htdocs/test"" . LIMIT (1, 4); werkt helaas niet, limit kan je hier waarschijnlijk niet gebruiken omdat het geen query is...enig idee hoe ik het dan kan doen ?
die random zou toch echt ergens anders moeten ben ik bang....heb je nog suggesties ?
---------------------------------------
edit
---------------------------------------
op zich hoeft die limit eigenlijk niet eens, al zou het wel handig zijn want dat beperkt de laadtijd uiteraard...
maar als ik het voor elkaar kan krijgen om ze random te laten verschijnen dan ben ik er in principe al, want dat schrijf ik er gewoon maar 4 naar mijn scherm...
Daar heb ik echter nog een vraag over, namelijk :
met echo $map; heef ik alle mappen weer..... hoe kan ik ze per map weergeven ? moet ik het dan in een array gooien of iets anders doen ?
ik bedoel dat ik iets kan doen als :
echo $map(1);
echo $map(2);
alvast bedankt voor de moeite
gr
Gewijzigd op 01/01/1970 01:00:00 door Robin
Even samenvatten:
Je hebt een map: test
Daarin staan mappen: map1, map2, map3, enz.
In die mappen staan weer plaatjes: 01.jpg, 02.jpg, enz.
En nou wil je random 4 mappen uitlezen met alle plaatjes daarin?
het gaat er dus om dat ik 4 random mappen kan selecteren uit de directory "test" en de namen van de 4 mappen wil ik verwerken in een link en die ik dus apart naar mijn scherm te kunnen schrijven.
ik heb nu zeg maar 4 links op mijn website staan die er zo uit zien :
http://www.websites.nl/test/randommap1/1.jpg
http://www.websites.nl/test/randommap2/1.jpg
http://www.websites.nl/test/randommap3/1.jpg
http://www.websites.nl/test/randommap4/1.jpg
"randommap(1 tm 4)" dient dus te wijzigen adhv het script zodat hij met dezelfde links elke keer andere plaatjes" laat zien.
De rest van de linkinhoud is dus statisch en zal altid hetzelfde blijven.
Het script zal adhv een cookie of cronjob dagelijks worden aangeroepen waardoor er dagelijks 4 andere random mapnamen in de link verschijnen waardoor de gehele layout er anders uit komt te zien en dus dagelijks verandert.
Om even een compleet beeld te schetsen :
Het is de bedoeling dat ik op deze manier niets meer aan de site zelf hoef te veranderen. Als ik in de map "test" een nieuwe map met plaatjes toevoeg word die uiteindelijk zelf meegenomen in het script en vertoont op de site....zo hou ik het eea dynamisch.
Gewijzigd op 01/01/1970 01:00:00 door Robin
Robin schreef op 26.01.2008 17:24:
.... Als ik in de map "test" een nieuwe map met plaatjes toevoeg word die uiteindelijk zelf meegenomen in het script en vertoont op de site.....
Je had het eerst over 150 mappen. Maar dat getal verhoogt dus af en toe. Dan moet je eigenlijk steeds de hele inhoud van 'test' inlezen in een array(). Even shuffelen en de eerste 4 gebruiken.
maar dat in een array zetten en ff shuffelen klinkt makkelijker dan het is haha..heb al wat zitten knutselen, maar het gaat nog niet echt goed...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/map" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en ..
while(($map = readdir($dir_handle))!==false){
if($map != "." && $map != ".." && !is_dir($map)) {
$array[$map];
shuffle($array);
$link1 = $array[0];
$link2 = $array[1];
$link3 = $array[2];
$link4 = $array[3];
}
}
//directory sluiten
closedir($dir_handle);
?>
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/map" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en ..
while(($map = readdir($dir_handle))!==false){
if($map != "." && $map != ".." && !is_dir($map)) {
$array[$map];
shuffle($array);
$link1 = $array[0];
$link2 = $array[1];
$link3 = $array[2];
$link4 = $array[3];
}
}
//directory sluiten
closedir($dir_handle);
?>
volgens mij ligt het aan dit gedeelte : $array[$map];
maar weet niet goed wat er achter moet komen, of zit ik helemaal mis ?
op de pagina verschijnt nu alleen de tekst "Array" als ik array echo
gr
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
dit heb ik nu :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .. en stop alles in een array
while(($map = readdir($dir_handle))!==false)
{
if($map != "." && $map != ".." && is_dir($map))
{
$array[] = $map;
}
}
shuffle($array);
//directory sluiten
closedir($dir_handle);
echo $array;
?>
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .. en stop alles in een array
while(($map = readdir($dir_handle))!==false)
{
if($map != "." && $map != ".." && is_dir($map))
{
$array[] = $map;
}
}
shuffle($array);
//directory sluiten
closedir($dir_handle);
echo $array;
?>
Gewijzigd op 01/01/1970 01:00:00 door Robin
$link1 = $array[0];
$link2 = $array[1];
$link3 = $array[2];
$link4 = $array[3];
als ik een van de links echo (zoals in onderstaande code) dan verschijnt er niets, echter ook geen foutmelding.
is het volgende stukje wel correct ?
$array[] = $map;
Ik heb onderstaande nu een keer of 40 doorlopen en gecontroleerd, maar voor zover ik kan zien staan er geen fouten in....jij nog enige suggesties ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .. en stop alles in een array
while(($map = readdir($dir_handle))!==false)
{
if($map != "." && $map != ".." && is_dir($map))
{
$array[] = $map;
}
}
//shuffle array en produceer de links
shuffle($array);
$link1 = $array[0];
$link2 = $array[1];
$link3 = $array[2];
$link4 = $array[3];
//directory sluiten
closedir($dir_handle);
echo $link1;
?>
$array = array();
//vul hier de directory in die doorzocht moet worden
$path = "/blablabla/htdocs/test" ;
//open de directory
$dir_handle = @opendir($path) or die("Unable to open $path");
//haal de submappen eruit en verwijder de . en .. en stop alles in een array
while(($map = readdir($dir_handle))!==false)
{
if($map != "." && $map != ".." && is_dir($map))
{
$array[] = $map;
}
}
//shuffle array en produceer de links
shuffle($array);
$link1 = $array[0];
$link2 = $array[1];
$link3 = $array[2];
$link4 = $array[3];
//directory sluiten
closedir($dir_handle);
echo $link1;
?>
------------------------------------
edit
-------------------------------------
ergens zit het hem in die array...als ik namelijk onderstaande code probeer dan werkt alles prima.
op een of andere manier lijkt jij met bovenstaande code niets in de array te zetten...
Code (php)
-------------------------------
edit 2
--------------------------------
geloof het of niet, maar ik heb het waarschijnlijk gevonden !!! Ik heb nu de volgende regel aangepast en nu lijkt alles prima te werken
if($map != "." && $map != ".." && is_dir($path . "/" . $map))
ik heb nu even te lang naar mijn scherm zitten staren dus wil morgen nog ff wat test, maar ja het werkt nu in ieder geval wel
Gewijzigd op 01/01/1970 01:00:00 door Robin