Toon posts:

[php] random images uit dir

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een fotogallery script. Allereerst krijg je per aanwezig boek een introductie.
Deze bestaat uit een link naar het fotoboek en een omschrijving van de activiteit wanneer de foto's gemaakt zijn.
Nu wil ik hier graag een random image bij uit de dir die in het boek staat.

Het boek werkt als volgt:
* hij leest alle images uit een dir en stopt deze in een array
* deze array wordt ASC gesorteerd
* hierna worden de entry's (per 20 per page) getoond

Nu is mijn vraag:
Hoe krijg ik een random image bij het "boekenoverzicht". Moet ik hiervoor ook de dir in een array lezen en dan een random image laten kiezen?
Volgens mij is dit omslachtig omdat je dan onnodige veel server opdrachten uitvoert, maar kan echter geen sneller en slimmer methode bedenken.

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Heel simpel:

1. Pakt dezelfde array mt daarin alle plaatjes uit één dir.
2. Sorten hoeft niet, laat maar lekker achterwege!
3. $tot = count($array), krijg je aantal pics terug
4. $tot = $tot - 1; (want arrays beginnen met 0!!!)
5. genereer een willekeurig getal(minimaal 0, maximaal $tot)
6. $array[$wil_getal];

C'est tout!

P.S. Als ik beetje vaag ben dan moet je het ff zeggen ik ben Bob Marley anat luisteren ;)

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Verwijderd

Topicstarter
bob rules :-)

ja dat had ik in gedachte. Alleen moet ik dan dus per entry in het overzicht alle bestanden in array lezen.

Wordt de pagina hier niet langzaam door?

Trouwens hieronder ff de code voor de array zoals ik hem nu heb:
PHP:
1
<?// dir lezen en bestanden in array plaatsen$open = opendir($dir); $i=0;while (false !== ($bestanden = readdir($open))) {if(($bestanden<>".") AND ($bestanden<>"..") AND ($bestanden<>"thumbnails") AND (substr($bestanden,-3)=="jpg")){   $bestandslijst[$i] = $bestanden;   $i++; } } closedir($open);// totaal aantal entry's in array$aantalEntries = count($bestandslijst);// array alfabetisch sorterensort($bestandslijst);// begin for lus en aangeven startpositie in arrayfor ($i=$file_nr;$i<count($bestandslijst);$i++) { echo $bestandslijst[$i];?>

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Op vrijdag 12 juli 2002 10:53 schreef Ketje het volgende:
bob rules :-)

ja dat had ik in gedachte. Alleen moet ik dan dus per entry in het overzicht alle bestanden in array lezen.

Wordt de pagina hier niet langzaam door?
Nehhh niet echt, als je enkel de bestandsnamen inleest is er geen probleem! :)
Als je echter meer in gaat lezen kun je probleempje veroorzaken.

Wat je ook kunt doen:
pagina.php -> Statische tekst over cat met daarin het plaatje pic.php
pic.php -> Hier genereer je het plaatje via de passthrew-methode(of hoe je dat in Nederland schrijf, in Jamaica doen we dat zo :7)

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Verwijderd

Topicstarter
oke ik snap alles

alleen hoe genereer ik een random images tussen min en max getal?

voor de rest is het helder en kan ik gewoon de query gebruiken zoals ik die gebruik voor fotogalery.php

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
PHP:
1
<?// dir lezen en bestanden in array plaatsen$open = opendir($dir); $i=0;while (false !== ($bestanden = readdir($open))) {    if(($bestanden<>".") AND ($bestanden<>"..") AND ($bestanden<>"thumbnails") AND (substr($bestanden,-3)=="jpg")){        $bestandslijst[$i] = $bestanden;        $i++;     } } closedir($open);//generate entry$entry = array_rand($bestandslijst);// $img = filename$img = $bestandslijst[$entry[0]];?>

Ik raad het echt aan Bob Marley op je werk! Nou ja werk :z
Tis alelen wel slim om nou net die joint nie mee te nemen ;)

edit:
array_rand gebruikt!

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 01-08 09:33

Don't be afraid of the dark, be afraid of what it hides


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Op vrijdag 12 juli 2002 11:18 schreef TheDark het volgende:
http://www.php.net/manual/en/function.array-rand.php is misschien makkelijker :?
Niet aan ged8! Thnx :)
Maar opzich was mijn code ook goed ;)

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Verwijderd

Topicstarter
thanx probeer het nu ff uit :P

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Op vrijdag 12 juli 2002 11:23 schreef Ketje het volgende:
thanx
ff opletten ik heb nog klein fixje gedaan

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Verwijderd

Topicstarter
ja die array random

werkt perfect... alleen nu de uitlijning nog. De tekst moet naast de image en niet deels naast en deels eronder

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 01-08 09:33
Tabelletje eromheen?
code:
1
2
3
+-------+------------+
| tekst | afbeelding |
+-------+------------+

Andersom kan natuurlijk ook :)

Don't be afraid of the dark, be afraid of what it hides


Verwijderd

Op vrijdag 12 juli 2002 11:18 schreef TheDark het volgende:
http://www.php.net/manual/en/function.array-rand.php is misschien makkelijker :?
Duurt denk ik veel langer..

Nog een tip:
Zorg ervoor dat je een index script maakt die al een array voor je maakt en wegschrijft in een bestand, nu hoef je alleen dit bestand nog maar te includen en je beschikt over een array.. (handig bij een grote dir)

Zorg ervoor dat er alleen maar jpegs in je directory staan, dan hoef je geen substring meer te gebruiken en dit bespaard tijd

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 01-08 09:33
Don't forget to call srand() to seed the random number generator.
Moet je nog ff doen :)
PHP:
1
<?srand ((float) microtime() * 10000000);?>

Don't be afraid of the dark, be afraid of what it hides

Pagina: 1