login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP][Opgelost] RandomFoto

Offline KoenVR - 19/08/2006 10:59 (laatste wijziging 19/08/2006 14:32)
Avatar van KoenVRLid Hallo daar,
Daarnet ff een random-foto scriptje gemaakt,
maar het werkt niet 100%
voor 90% van de keren geeft hij een andere foto weer bij een refresh,
maar soms geeft hij geen foto.

zien jullie wat er fout is in de code?

  1. <html>
  2. <head>
  3. <title>Random php</title>
  4. </head>
  5. <body>
  6. <?php
  7. $adres[0]="foto/2004 Kamp Dilsem-Stokkem/";
  8. $adres[1]="foto/2005 Kamp La Roche/";
  9. $adres[2]="foto/2005 Weekend Hekelgem/";
  10. $adres[3]="foto/2006 Weekend Buggenhout/";
  11. $adres[4]="foto/2001 Kamp Alsemberg/";
  12. $adres[5]="foto/2002 Kamp Frankrijk/";
  13. $adres[6]="foto/2002 Speelclubkamp Mere/";
  14. $adres[7]="foto/2003 Kamp Lichtaart/";
  15. $adres[8]="foto/2004 Aspistrand/";
  16.  
  17. $dir=rand(0,8);
  18.  
  19. $teller=-1;
  20. if ($handle = opendir($adres[$dir])) {
  21. while (false !== ($file = readdir($handle))) {
  22. if ($file != "." && $file != "..") {
  23. $teller++;
  24. $img[$teller] = $file;
  25. }
  26. }
  27.  
  28. closedir($handle);
  29. }
  30. $random = rand(0, count($img));
  31. echo "<a href=$adres[$dir]$img[$random] TARGET=_blank><img src=\"$adres[$dir]$img[$random]\" width=140 height=170 border=0></a>";
  32. echo "<br>foto: $img[$random] <br>";
  33. echo "teller: $teller";
  34. ?>
  35. </body>
  36. </html>

de array met adressen klopt,
en in die mappen zitten enkel .jpg bestanden

13 antwoorden

Gesponsorde links
Offline Rik - 19/08/2006 11:13
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Waarom begin $teller op -1?
Offline Voldemort - 19/08/2006 11:15 (laatste wijziging 19/08/2006 11:17)
Avatar van Voldemort PHP ver gevorderde @Boukefalos: Omdat een array op 0 begint en hij eerst ++ doet en dan pas de array.

@KoenVR: Haal al je variablen buiten de quotes.
Offline KoenVR - 19/08/2006 11:40
Avatar van KoenVR Lid euhm,
ff een noob vraag,
je bedoelt wss op lijn 31?
maar hoe krijg je die er deftig buiten? 
Offline crasher - 19/08/2006 11:43 (laatste wijziging 19/08/2006 11:48)
Avatar van crasher Lid
  1. <?php
  2. echo "<a href=".$adres[$dir]$img[$random]." TARGET=_blank><img src=\"".$adres[$dir]$img[$random]."\" width=140 height=170 border=0></a>";
  3. echo "<br>foto: ".$img[$random]." <br>";
  4. ?>


ik dacht zo

//edit

  1. <?php
  2. echo "<a href='".$adres[$dir].$img[$random]."' TARGET=_blank><img src='".$adres[$dir].$img[$random]."' width=140 height=170 border=0></a>";
  3. echo "<br>foto: ".$img[$random]." <br>";
  4. ?>
Offline Voldemort - 19/08/2006 11:44 (laatste wijziging 19/08/2006 11:47)
Avatar van Voldemort PHP ver gevorderde
  1. <?php
  2. echo "<a href=$adres[$dir]$img[$random] TARGET=_blank><img src=\"$adres[$dir]$img[$random]\" width=140 height=170 border=0></a>";
  3. echo "<br>foto: $img[$random] <br>";
  4. echo "teller: $teller";
  5. ?>


==>

  1. <?php
  2. echo '<a href="'.$adres[$dir].$img[$random].'" TARGET="_blank"><img src="'.$adres[$dir].$img[$random].'" width="140" height="170" border="0"></a>';
  3. echo '<br>foto: '.$img[$random].'<br>';
  4. echo 'teller: '.$teller;
  5. ?>
Offline KoenVR - 19/08/2006 11:44 (laatste wijziging 19/08/2006 11:47)
Avatar van KoenVR Lid dacht ik ook, maar hij geeft bij mij een 'parse error'

edit:
zelfs met laatst gegeven oplosssing blijft hij parse error geven
Offline Voldemort - 19/08/2006 11:46
Avatar van Voldemort PHP ver gevorderde Ik had even nog enkele foutjes in de code. Heb ze nu opgelost. Probeer het eens.
Offline KoenVR - 19/08/2006 11:48 (laatste wijziging 19/08/2006 11:51)
Avatar van KoenVR Lid parse error is nu weg,
maar het witte plaatje blijft nu en dan verschijnen 


edit:
dus bij het witte plaatje geeft hij wel een juiste map weer, maar geen naam van een foto.
Offline ikkedikke - 19/08/2006 12:20
Avatar van ikkedikke PHP expert $random = rand(0, count($img));
$random = rand(0, count($img)-1);
Offline KoenVR - 19/08/2006 12:38
Avatar van KoenVR Lid het werkt,
(of het is enorm toevallig dat ik geen witte pic's meer krijg)

kan je ff die logica is uitleggen? want ik volg niet direct.
Offline BigBug - 19/08/2006 12:53
Avatar van BigBug PHP expert Bij count($img) worden de aantal items in de array geteld.. Stel je voor het zijn er 10 dan geeft count(); ook 10 aan. Arrays beginnen echter te tellen vanaf 0. Dus dan zou je 0 tot 9 moeten hebben (= 10 items). Dus als je de witte afbeelding kreeg betekende het dat je nummer 10 had. Die dus niet bestaat qua arraytelling.
Offline bosgroen - 19/08/2006 13:16 (laatste wijziging 19/08/2006 13:17)
Avatar van bosgroen Gouden medaille

PHP interesse
ben je zeker dat alle url's naar alle plaatjes werken?
of er geen wit plaatje tussen zit?
-- vaak zijn het zo'n belachelijke dinges
Offline KoenVR - 19/08/2006 14:32
Avatar van KoenVR Lid de array met map namen klopt zeker,
en er staat nergens een wit plaatje tussen,
(moest er een wit plaatje zijn dan zou hij nog een naam weergeven)

maar de oplossing is er...
dus opgeloste handel,
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.247s