login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Random Foto

Offline KoenVR - 27/07/2006 12:09
Avatar van KoenVRLid Ik ben op zoek naar een scriptje,
de taal waarin maakt weinig uit,
(liefst php of javascript)

ik heb op een server allemaal mappen staan,
met foto's in (namen van betanden zijn bv 01.jpg 02.jpg en oplopend)

nu zoek ik iets dat bij elke refresh van de pagina of bij mouseover een andere foto random kiest uit 1 van die mappen
(of uit 1 map)

kan iemand me helpen?

12 antwoorden

Gesponsorde links
Offline Button - 27/07/2006 12:14
Avatar van Button PHP ver gevorderde normaal hoort dit bij "samenwerken". Heb je al een keer bij de scripts gekeken?
Offline KoenVR - 27/07/2006 12:16
Avatar van KoenVR Lid heb ik reeds gekeken,
maar (als ik me niet vergis)
stonden daar allemaal scripts voor:
foto albums,
enzo,
maar niet voor een random foto te kiezen bij een refresh van een pagina
Offline Dark_Paul - 27/07/2006 12:25
Avatar van Dark_Paul PHP ver gevorderde zet alle bestandsnamen in een array en kies een willekeurig nummer uit de array.
  1. $bestanden = array('bestand1.gif', 'bestand2.gif', 'enzovoorts');
  2. $max = count($bestanden); // het aantal bestanden
  3. $foto = rand (0, ($max-1)); //kies een array-nummer tussen 0 en de grootte van de array -1.
  4. echo $bestanden[$foto];

ik heb 'm niet getest.
Offline svm - 27/07/2006 12:32
Avatar van svm PHP ver gevorderde Of een javascript (wel iets meer werk dan dat van Dark_Paul):
  1. <script language="JavaScript">
  2. <!--
  3.  
  4. function random_content(){
  5. var mycontent=new Array()
  6. //specify random content below.
  7. mycontent[1]='<img src="map1/plaatje1.jpg" alt="map1, plaatje 1">'
  8. mycontent[2]='<img src="map1/plaatje2.jpg" alt="map1, plaatje 1">'
  9. mycontent[3]='<img src="map1/plaatje3.jpg" alt="map1, plaatje 1">'
  10. mycontent[4]='<img src="map2/plaatje1.jpg" alt="map2, plaatje 1">'
  11. mycontent[5]='<img src="map2/plaatje2.jpg" alt="map2, plaatje 2">'
  12. // enzovoort
  13.  
  14.  
  15. var ry=Math.floor(Math.random()*mycontent.length)
  16. if (ry==0)
  17. ry=1
  18. document.write(mycontent[ry])
  19. }
  20. random_content()
  21. //-->
  22. </script>

Via anouksweb.nl
Offline Dark_Paul - 27/07/2006 12:34
Avatar van Dark_Paul PHP ver gevorderde het voordeel van een javascript is dat je dat met een onmouseover kan maken.. bij elke mousover een ander plaatje (zorg er wel voor dat je dan vantevoren de plaatjes hebt geladen, anders moet de gebruiker eerst het plaatje inladen bij een mousover).
Offline Button - 27/07/2006 12:35 (laatste wijziging 27/07/2006 12:36)
Avatar van Button PHP ver gevorderde als je foto's echt elkaar oplopen zoals 01.jpg, 02.jpg dan kan je beter een for-lus gebruiken in het script van Dark-Paul om ze zo in een array te stoppen.
Offline KoenVR - 27/07/2006 12:37
Avatar van KoenVR Lid ok bedankt al,
ik ga het direct proberen
Offline Maarten - 27/07/2006 12:37
Avatar van Maarten Erelid .. of als je met PHP werkt kan je met scandir() de hele map uitlezen.
Offline xSc - 27/07/2006 12:43
Avatar van xSc Onbekend Murfy, die werkt alleen in PHP 5. Uiteraard zijn er wel alternatieven (opendir()). Het is natuurlijk niet gezegd dat dat ondersteund wordt. Nadeel van JavaScript is dat het niet volstaat wanneer het script ook 'zojuist' geuploade foto's mee moet nemen in de random.

Dark_paul zit aardig in de richting.
Offline Dark_Paul - 27/07/2006 12:50 (laatste wijziging 27/07/2006 12:59)
Avatar van Dark_Paul PHP ver gevorderde combinatie van opendir() en een for-lus kan je misshcien alle bestanden mee in een array zetten. ik ga er eens mee prutsen, je hoort 't nog.
[b] dit kwam ik zo letterlijk tegen op php.net
  1. if ($dir = @opendir("/tmp")) {
  2. while (($file = readdir($dir)) !== false) {
  3. echo "$file\n";
  4. }
  5. closedir($dir);
  6. }

nog een klein ogenblik, dan heb ik 'm af (nog niet getest).
  1. <?php
  2. $bestanden = array();
  3. if ($map = @opendir("/image")) { //open de map
  4. while (($bestand = readdir($map)) === true) { //haal bestanden op
  5. $bestanden[] = $bestand; //zet bestanden in array
  6. }
  7. closedir($map); //sluit de map weer
  8. }
  9.  
  10. $max = count($bestanden); // het aantal bestanden
  11. $foto = rand (0, ($max-1)); //kies een array-nummer tussen 0 en de grootte van de array -1.
  12. echo $bestanden[$foto]; //laat de random foto zien
  13. ?>

nog niets getest, eerst ff eten je kan 'm zelfs nog uitgebreider maken door een controle in de while-loop te zetten op bestandsextensie om te controleren of het wel een plaatje is, en dan pas in de array zetten.
Offline Maarten - 27/07/2006 13:01
Avatar van Maarten Erelid Ehm.. je moet dan wel '.' en '..' eruit filteren, anders krijg je 2 op de count($bestanden) keer ellende 
Offline Grayen - 27/07/2006 13:07 (laatste wijziging 27/07/2006 13:08)
Avatar van Grayen PHP ver gevorderde dus dit:

  1. <?php
  2. $bestanden = array();
  3. if ($map = opendir("images/")) { //open de map
  4. while (($bestand = readdir($map)) === true) { //haal bestanden op
  5. if($bestand != '.' && $bestand != '..'){
  6. $bestanden[] = $bestand; //zet bestanden in array
  7. }
  8. }
  9. closedir($map); //sluit de map weer
  10. }
  11. $max = count($bestanden); // het aantal bestanden
  12. $foto = rand (0, ($max-1)); //kies een array-nummer tussen 0 en de grootte van de array -1.
  13. echo '<img src="images/'.$bestanden[$foto].'" alt="" />'; //laat de random foto zien
  14. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s