login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Foto's uit map tonen. (Opgelost)

Offline willie - 16/10/2011 19:43
Avatar van willie0 Ik heb hier een stukje script, dat de bestanden uit de map telt.
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. $album = $_GET['id'];
  5.  
  6. $map = "fotos/$album";
  7.  
  8. function AantalBestanden($map) {
  9. if(!$OpenMap = @opendir($map)) {
  10. echo("De map '$map' kon niet geopend worden!");
  11. return 0;
  12. }
  13. else {
  14. $i = 0;
  15. while(($b = readdir($OpenMap)) !== false) {
  16. if($b != '.' && $b != '..') {
  17. $i++;
  18. }
  19. }
  20. return $i;
  21. }
  22. }
  23. $Aantal = AantalBestanden("$map");
  24. echo '&nbsp;&nbsp;';
  25. echo 'Er '. ($Aantal != 1 ? 'staan ' : 'staat ') .$Aantal;
  26. echo ($Aantal != 1 ? ' bestanden in deze map.' : ' bestand in deze map.');
  27. ?>

Maar hoe kan ik deze foto's tonen?

4 antwoorden

Gesponsorde links
Offline WouterJ - 16/10/2011 20:01 (laatste wijziging 16/10/2011 20:02)
Avatar van WouterJ HTML gevorderde Via de PHP functie PHP.net: glob kun je alle bestanden uitlezen met een bepaalde extensie. Bijv:
  1. $pngImages = glob('path/to/directory/*.png'); // Alle .png bestanden in de map directory


Vervolgens kun je deze url pakken en die in een image tag echoën:
  1. $pngImages = glob('path/to/direcotory/*.png');
  2. foreach( $pngImages as $image )
  3. {
  4. echo '<img src="'.basename($image).'" />';
  5. }


Daarnaast zie ik dat je in je PHP code dit gebruikt: "$map". Dit is niet juist, variabele moet je altijd buiten de quotes houden, zoals ik in het voorbeeld hierboven doe.
Bedankt door: vinTage
Offline willie - 16/10/2011 20:17
Avatar van willie 0 Ik heb het dus zo,
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. $album = $_GET['id'];
  5.  
  6. $map = "fotos/$album";
  7.  
  8. function AantalBestanden($map) {
  9. if(!$OpenMap = @opendir($map)) {
  10. echo("De map '$map' kon niet geopend worden!");
  11. return 0;
  12. }
  13. else {
  14. $i = 0;
  15. while(($b = readdir($OpenMap)) !== false) {
  16. if($b != '.' && $b != '..') {
  17. $i++;
  18. }
  19. }
  20. return $i;
  21. }
  22. }
  23. $Aantal = AantalBestanden($map);
  24. echo '&nbsp;&nbsp;';
  25. echo 'Er '. ($Aantal != 1 ? 'staan ' : 'staat ') .$Aantal;
  26. echo ($Aantal != 1 ? ' bestanden in deze map.' : ' bestand in deze map.');
  27.  
  28. $pngImages = glob($map/'*.png');
  29.  
  30. foreach( $pngImages as $image )
  31.  
  32. {
  33. echo '<img src="'.basename($image).'" />';
  34. }
  35. ?>
Maar ik krijg niets te zien, maar wel een fout melding
  1. Warning: Division by zero in D:\werkmap\sites\testweb\Root\fotoalbum.php on line 29
Offline WouterJ - 16/10/2011 21:36
Avatar van WouterJ HTML gevorderde Nu kijken we dan naar regel 29:
$pngImages = glob($map/'*.png');

Hier zien we een / die volgens mij in de string hoort? Een een variabele koppel je aan een string door de . operator te gebruiken.
Offline willie - 16/10/2011 22:37 (laatste wijziging 16/10/2011 22:39)
Avatar van willie 0 Ik denk dat het zo wel werkt.
  1. <?php
  2. $Dir = $map;
  3. $Handle = opendir($Dir);
  4. while(false !== ($File = readdir($Handle)))
  5. {
  6. if($File == '.' || $File == '..')
  7. {
  8. continue;
  9. }
  10. else
  11. {
  12. $Result_Array[] = $File;
  13. }
  14. echo "<br />&nbsp;&nbsp;&nbsp;";
  15. echo "<a target=_blank href='$map/$File'><font color=ffffff>'$File'</font></a>";
  16. echo "<br />";
  17. }
  18. closedir($Handle);
  19. ?>
Alleen op de server van de site, kan ik twee mappen niet openen, maar de rest van de mappen wel.
de fout melding geeft die aan in deze 3 regels
  1. $Handle = opendir($Dir);
  2. while(false !== ($File = readdir($Handle)))
  3. closedir($Handle);

hier draaid de site phpnfo
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.365s