Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z pętlą for
Forum PHP.pl > Forum > PHP
rollon
Witam wszystkich po dlugiej nieobecności

Mam oto taki kod:

  1. <?
  2.  
  3.  switch ($_GET['strona'])
  4. {
  5. case 0: 
  6.  
  7. $dirPath = "zd/"; 
  8. $dirDP=opendir( $dirPath ); 
  9. $ile = 0;
  10. while( $element = readdir( $dirDP ) ) { 
  11. if ( $element != '.' and $element != '..' ) { 
  12. $elementy[] = $element; 
  13. $ile++;
  14. } 
  15. } 
  16. for ($i=0;$i<=($ile-1);$i++) {
  17. echo '<table align="center" style="border:1px white solid; width:300px;"><tr><td style="text-align:center;">';
  18. echo '<a href=index.php?wys=17&strona=1&kat='.$elementy[$i].'><img src="images/galery_ikon.jpg" style="border:none;" /></a></td></tr><tr><td style="text-align:center;">';
  19. echo '<a class="tytul_prawa" href=index.php?wys=17&strona=1&kat='.$elementy[$i].'>';
  20. echo $elementy[$i];
  21. echo '</a>';
  22. echo '<br><br></td></tr></table><br>';
  23.  }  
  24.  closedir($dirDP);
  25.  
  26. break;
  27.  
  28. case 1: 
  29.  
  30. $katalog=$_GET['kat'];
  31.  
  32. $dir = "zd/$katalog/"; 
  33. $ext = ".jpg|.gif|.png|.JPG";
  34.  
  35. $puntero=opendir($dir);
  36. while ($fichero = readdir($puntero)) {
  37. if (is_file($dir.$fichero) && eregi($ext,$dir.$fichero)) { 
  38. $fotos["nombre"][$imagen] = $fichero;
  39. $fotos["modi"][$imagen] = filemtime($dir.$fichero);
  40. $imagen++;
  41. }
  42. }
  43. closedir($puntero);
  44. echo '<div class="tytul_prawa" style="text-align:center;">'.$katalog.'</div><br>';
  45. for ($i>=0;$i<=($imagen-1);$i++) {
  46. echo '<table align="center"><tr><td>';
  47. echo '<a style="border:2px white solid;" href="java script:fWin(''.$dir.$fotos["nombre"][$i].'','850','650')"><img width=300 src='.$dir.$fotos["nombre"][$i].' border="none"></a><br>';
  48. echo '</td></tr></table>';
  49. }
  50. }
  51. ?>


kod ma za zadanie odczytac nazwe katalogu, pobrac zdjęcia ktore sie w nim znajduja i wyswietlic w petli for, problem w tym ze w k
talogu mam 7 zdjec a on uparcie wyswietla mi 6 ;/ sądze ze jest to problem z petla. prosze o pomoc.
marcio
po co ci te -1 w petli for??a po drugie dlaczego robisz tak i>=0; zrob tylko tak i=0; i tyle
rollon
  1. <?php
  2. $katalog=$_GET['kat'];
  3.  
  4. $dir = "zd/$katalog/"; 
  5. $ext = ".jpg|.gif|.png|.JPG";
  6.  
  7. $puntero=opendir($dir);
  8. while ($fichero = readdir($puntero)) {
  9. if (is_file($dir.$fichero) && eregi($ext,$dir.$fichero)) { 
  10. $fotos["nombre"][$imagen] = $fichero;
  11. $fotos["modi"][$imagen] = filemtime($dir.$fichero);
  12. $imagen++;
  13. }
  14. }
  15. closedir($puntero);
  16. echo '<div class="tytul_prawa" style="text-align:center;">'.$katalog.'</div><br>';
  17. for ($i=0;$i<=$imagen;$i++) {
  18. echo '<table align="center"><tr><td>';
  19. echo '<a style="border:2px white solid;" href="javascript:fWin(''.$dir.$fotos["nombre"][$i].'','850','650')"><img width=300 src='.$dir.$fotos["nombre"][$i].' border="none"></a><br>';
  20. echo '</td></tr></table>';
  21. ?>


gdy mam tak to nie wyswietla mi pierwszego i ostatniego zdjecia ;/ link:
http://www.ligota.net/index.php?wys=17&...cyjny_pokaz_OSP
marcio
fajne fotki kto podpalal malacza smile.gif a teraz nie chce powiedziec czegos glupiego ale jeszcze sie nie bawilem w przegladanie katalogow a nie mozna zastosowac feof czyli while(!feof($fichero)) zrob w pierwszej petli while ta ale nie wiem czy tak mozna robic na katalogach
rollon
hehe pierwsza podpalali a pozniej gasili smile.gif

ja tez sie nie bawilem, dzisiaj pierwszy raz i siadlem wlasnie na tym ;/

nie bardzo rozumiem o co Ci chodzi, ale moze cos dodukam smile.gif
colinQ
  1. <?php
  2. for ($i=-1;$i<=$ile;$i++) {
  3. echo '<table align="center" style="border:1px white solid; width:300px;"><tr><td style="text-align:center;">';
  4. echo '<a href=index.php?wys=17&strona=1&kat='.$elementy[$i].'><img src="images/galery_ikon.jpg" style="border:none;" /></a></td></tr><tr><td style="text-align:center;">';
  5. echo '<a class="tytul_prawa" href=index.php?wys=17&strona=1&kat='.$elementy[$i].'>';
  6. echo $elementy[$i];
  7. echo '</a>';
  8. echo '<br><br></td></tr></table><br>';
  9.  }
  10. ?>


Może tak spróbuj...
Pisane z palca wiec nie jestem pewien...
rollon
nic to nie zmienilo ;/ poddaje się ;/
JaRoPHP
Zainteresuj się biblioteką SPL (SPL - Standard PHP Library), w szczególności DirectoryIterator.
Więcej mozesz dowiedzieć się z: MichałMech.pl :: Blog / Iteratory w PHP, czyli stare nowe SPL.

Natomiast stricte Twój prolem. Która pętla nie działa? Przypuszczam, że druga. Spróbuj tak:
  1. <?php
  2. for ($i=0;$i<$imagen;$i++) {
  3. // ...
  4. }
  5. ?>

Na przyszłość: nie ma potrzeby tworzenia zmiennej licznika $imagen, możesz policzyć elementy tablicy (count" title="Zobacz w manualu PHP" target="_manual), natomiast przeglądając całą tablicę możesz skorzystać z instrukcji foreach" title="Zobacz w manualu PHP" target="_manual.
rollon
for ($i=0;$i<$imagen;$i++)

w przypadku tego rozwiazania wyswietla 6 zdjec z 7, ale dodatkowo dorysowuje pustą ramke na koncu, dlatego w moim zapisie odjąłem 1.
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.