Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc w kodzie galerii
Forum PHP.pl > Forum > PHP
piwib
Witam. Znalazłem gotową galerie tylko mam problem z jej przekształceniem. Cały program opiera się na dwóch plikach:

galeria.php
  1. <?
  2.  
  3. /*****************************************************************************
  4. * Skrypt galerii v1.0  *
  5. * Autor: Błażej Gruszka "Sn!pe"  *
  6. * Date: 2006-01-04 *
  7. * www.snipe.ekipa.be *
  8. * www.ekipa.be *
  9. * *
  10. * Skrypt potrzebuje biblioteki GD aby dzialal poprawnie  *
  11. * Opisy powinny znajdowac sie w pliku images.txt w danym katalogu, *
  12. * w osobnych linijkach w formacie: obrazek1.jpg|Jakis opis do obrazka  *
  13. * *
  14. * Jesli chcesz uzywac tego skryptu zostaw maly buttonik na stronie *
  15. * z adresem do strony domowej autora *
  16. ******************************************************************************/
  17.  
  18. ob_start(gz_handler);
  19.  
  20. // funkcja pokazuje katalogi
  21. function show_img_folders()
  22. {
  23. $dp = opendir('./');
  24. while(false !== ($img_dir = readdir($dp)))
  25. {
  26. if($img_dir!='.' && $img_dir!='..')
  27. if(is_dir($img_dir)) echo '<a href="?dir='.$img_dir.'">'.$img_dir.'</a><br />';
  28. }
  29. }
  30.  
  31. // funkcja pobiera obrazki z katalogu
  32. function get_images($dir)
  33. {
  34. // tablica z roszerzeniami ktore bedzie obslugiwac nasza galeria
  35. $extensions = array('jpg','jpeg');
  36.  
  37. // ladujemy obrazki
  38. $dp = opendir($dir);
  39. while(false !== ($image = readdir($dp)))
  40. {
  41. if($image != '.' && $image != '..')
  42. {
  43. $ext = explode('.', $image);
  44. if(in_array(strtolower($ext[1]), $extensions)) // sprawdzamy rozszerzenie
  45. $images[] = $image;
  46. }
  47. }
  48. return $images;
  49. }
  50.  
  51. // funkcja pobiera opisy
  52. function get_desc($dir)
  53. {
  54. // otwieramy plik z opisami
  55. $file = 'images.txt';
  56. if(file_exists($dir.$file))
  57. {
  58. $dp = fopen($dir.$file, 'r');
  59. while(!feof($dp))
  60. {
  61. $desc = fgets($dp); // zczytujemy linijke z opisem
  62. $desc_exp[] = explode('|',$desc); // rozbijamy z formatu: obrazek.jpg|jakis opis
  63. }
  64. fclose($dp); // zamykamy plik
  65. return $desc_exp; // zwracamy tablice
  66. } else die('<font color="red">Stworz plik: "images.txt" w katalogu: <b>'.$dir.'</b></font>');
  67. }
  68.  
  69.  
  70.  
  71. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  72. {
  73. if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  74. {
  75. $dir = $_GET['dir'].'/'; // katalog z fotkami
  76. $images = get_images($dir); // pobieramy do zmiennej nazwy obrazkow
  77. $descriptions = get_desc($dir); // pobieramy do zmiennej opisy
  78.  
  79. $col = 4; // ilosc kolumn obrazkow
  80.  
  81. // sprawdzamy czy tablica zawiera jakies nazwy obrazkow
  82. if(count($images) == 0) die('Nie znaleziono plikow graficznych');
  83.  
  84. // wyswietlamy wszystko
  85. echo '<table align="center" style="border: 1px solid #000000"><tr><td colspan="'.$col.'"><b>'.$dir.'</b></td></tr><tr>';
  86. foreach($images as $img)
  87. {
  88. echo '<td align="center"><table><tr><td valign="top" align="center"><a href="'.$dir.$img.'" target="_blank"><img src="graph.php?img_name='.$dir.$img.'" width="100" height="100" border="0"></a></td></td></tr><tr><td align="center">';
  89. foreach($descriptions as $desc)
  90. {
  91. if($desc[0]==$img) echo $desc[1];
  92. else echo '&nbsp;';
  93. }
  94. echo '</td></tr></table>';
  95. $i++;
  96. if($i==$col) // jesli $i = liczbie kolumn, tworzymy nowy wiersz
  97. {
  98. $i=0;
  99. echo '</tr><tr>';
  100. }
  101. }
  102. echo '</tr><tr><td colspan="'.$col.'"><a href="http://www.snipe.ekipa.be" target="_blank"><img src="logo.gif" border="0"></a></td></tr></table>';
  103. } else echo 'Katalog nie istnieje';
  104. } else show_img_folders(); // pokazujemy katalogi
  105. ?>


i graph.php
  1. <?
  2. // File and new size
  3. $filename = $_GET['img_name'];
  4. $percent = 0.2;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // Get new sizes
  10. list($width, $height) = getimagesize($filename);
  11. $newwidth = $width * $percent;
  12. $newheight = $height * $percent;
  13.  
  14. // Load
  15. $thumb = imagecreatetruecolor($newwidth, $newheight);
  16. $source = imagecreatefromjpeg($filename);
  17.  
  18. // Resize
  19. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  20.  
  21. // Output
  22. imagejpeg($thumb);
  23. ?>


I co mnie boli... Chce wyłączyć funkcje show_img_folders która wyświetla wszystkie foldery w katalogu. Hmm Chodzi mi o to by pominął ten etap i sama strona galeria.php wyswietlała galerie. Oczywiście trzeba wcześniej zdeklarować $dir=folder_ze_fotami...
No własnie... Próbowałem ją deklarowac na początu programu i kombinowac jak można ale nie dałem sobie radę. Program działa mi tylko wtedy gdy url=galeria.php?dir=folder_ze_fotami. Prosze więc o pomoc. Z góry dziękuje
Kas
Przecież w kodzie masz wszędzie:

  1. <?php
  2. $_GET['dir']
  3. ?>


Jak Twoim zdaniem to ma inaczej działać? Jak chcesz na sztywno zadeklarować folder to nie wystarczy przypisać wartość zmiennej $dir. Potem i tak masz:

  1. <?php
  2. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  3. {
  4. if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  5. {
  6. $dir = $_GET['dir'].'/'; // katalog z fotkami
  7. ?>


Jak koniecznie chcesz na sztywno ustawić to musz ustawić wartość zmiennej i usunąć w/w fragmenty.
piwib
Oj mistrzu spróbuj tego dokonac bo męcze się z tym już od godzinki smile.gif
Kas
Na górze daj:

  1. <?php
  2. $dir = jakis_folder;
  3. ?>

Teraz usuń:

  1. <?php
  2. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  3. {
  4. if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  5. {
  6. ?>

A w pozostałych miejscach zamień:

  1. <?php
  2. $_GET['dir']
  3. ?>

na:

  1. <?php
  2. $dir
  3. ?>
Powinno działać.
piwib
Czyli:
  1. <?
  2. $dir = foty;
  3. /*****************************************************************************
  4. * Skrypt galerii v1.0  *
  5. * Autor: Błażej Gruszka "Sn!pe"  *
  6. * Date: 2006-01-04 *
  7. * www.snipe.ekipa.be *
  8. * www.ekipa.be *
  9. * *
  10. * Skrypt potrzebuje biblioteki GD aby dzialal poprawnie  *
  11. * Opisy powinny znajdowac sie w pliku images.txt w danym katalogu, *
  12. * w osobnych linijkach w formacie: obrazek1.jpg|Jakis opis do obrazka  *
  13. * *
  14. * Jesli chcesz uzywac tego skryptu zostaw maly buttonik na stronie *
  15. * z adresem do strony domowej autora *
  16. ******************************************************************************/
  17.  
  18. ob_start(gz_handler);
  19.  
  20. // funkcja pokazuje katalogi
  21. function show_img_folders()
  22. {
  23. $dp = opendir('./');
  24. while(false !== ($img_dir = readdir($dp)))
  25. {
  26. if($img_dir!='.' && $img_dir!='..')
  27. if(is_dir($img_dir)) echo '<a href="?dir='.$img_dir.'">'.$img_dir.'</a><br />';
  28. }
  29. }
  30.  
  31. // funkcja pobiera obrazki z katalogu
  32. function get_images($dir)
  33. {
  34. // tablica z roszerzeniami ktore bedzie obslugiwac nasza galeria
  35. $extensions = array('jpg','jpeg');
  36.  
  37. // ladujemy obrazki
  38. $dp = opendir($dir);
  39. while(false !== ($image = readdir($dp)))
  40. {
  41. if($image != '.' && $image != '..')
  42. {
  43. $ext = explode('.', $image);
  44. if(in_array(strtolower($ext[1]), $extensions)) // sprawdzamy rozszerzenie
  45. $images[] = $image;
  46. }
  47. }
  48. return $images;
  49. }
  50.  
  51. // funkcja pobiera opisy
  52. function get_desc($dir)
  53. {
  54. // otwieramy plik z opisami
  55. $file = 'images.txt';
  56. if(file_exists($dir.$file))
  57. {
  58. $dp = fopen($dir.$file, 'r');
  59. while(!feof($dp))
  60. {
  61. $desc = fgets($dp); // zczytujemy linijke z opisem
  62. $desc_exp[] = explode('|',$desc); // rozbijamy z formatu: obrazek.jpg|jakis opis
  63. }
  64. fclose($dp); // zamykamy plik
  65. return $desc_exp; // zwracamy tablice
  66. } else die('<font color="red">Stworz plik: "images.txt" w katalogu: <b>'.$dir.'</b></font>');
  67. }
  68.  
  69.  
  70.  
  71.  
  72. $dir = $dir.'/'; // katalog z fotkami
  73. $images = get_images($dir); // pobieramy do zmiennej nazwy obrazkow
  74. $descriptions = get_desc($dir); // pobieramy do zmiennej opisy
  75.  
  76. $col = 4; // ilosc kolumn obrazkow
  77.  
  78. // sprawdzamy czy tablica zawiera jakies nazwy obrazkow
  79. if(count($images) == 0) die('Nie znaleziono plikow graficznych');
  80.  
  81. // wyswietlamy wszystko
  82. echo '<table align="center" style="border: 1px solid #000000"><tr><td colspan="'.$col.'"><b>'.$dir.'</b></td></tr><tr>';
  83. foreach($images as $img)
  84. {
  85. echo '<td align="center"><table><tr><td valign="top" align="center"><a href="'.$dir.$img.'" target="_blank"><img src="graph.php?img_name='.$dir.$img.'" width="100" height="100" border="0"></a></td></td></tr><tr><td align="center">';
  86. foreach($descriptions as $desc)
  87. {
  88. if($desc[0]==$img) echo $desc[1];
  89. else echo '&nbsp;';
  90. }
  91. echo '</td></tr></table>';
  92. $i++;
  93. if($i==$col) // jesli $i = liczbie kolumn, tworzymy nowy wiersz
  94. {
  95. $i=0;
  96. echo '</tr><tr>';
  97. }
  98. }
  99. echo '</tr><tr><td colspan="'.$col.'"><a href="http://www.snipe.ekipa.be" target="_blank"><img src="logo.gif" border="0"></a></td></tr></table>';
  100. } else echo 'Katalog nie istnieje';
  101. } else show_img_folders(); // pokazujemy katalogi
  102. ?>


I wywala błąd w 100 lini...
Kas
Dobry nawyk to buforowanie wyjścia na samej górze skryptu.

Myślałem, że to oczywiste. Jak usuwasz:

  1. <?php
  2. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  3. {
  4. if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  5. {
  6. ?>


to musisz też się pozbyć:

  1. <?php
  2. } else echo 'Katalog nie istnieje';
  3. } else show_img_folders(); // pokazujemy katalogi
  4. ?>

Pod warunkiem, że o czymś nie zapomiałem powinno działać.
piwib
O właśnie. Dzięki Kas za pomoc...
Kas
Jeszcz jedna drobna uwgaa. Dobry nawyk to ustawienia buforowania wyjścia na samej górze. Co prawda tutaj wcześniej nic nie wysyłasz, ale i tak proponuję:

  1. <?php
  2. ob_start(gz_handler);
  3. ?>


dać tuż za <?php.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.