Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pętla nie działa tak jak trzeba
Forum PHP.pl > Forum > Przedszkole
Zwariowany
  1. <?php
  2. $katalog='foty';
  3.  
  4.  
  5. $a='1';
  6. while ($a == '0')
  7. {
  8. echo '<a href="fotogaleria/'.$katalog.'/'.$a.'.jpg" ><img src="fotogaleria/'.$katalog.'/mini/'.$a.'.jpg" style="margin-top: 3px; border:0; margin-left: 3px; width: 130px;height:97px;"></a>';
  9.  
  10. $a++;
  11.  
  12.  
  13. $filename='fotogaleria/'.$katalog.'/'.$a.'.jpg';
  14. if (!file_exists($filename))
  15. {
  16. echo $filename;
  17. $a='0';
  18. }
  19.  
  20.  
  21.  
  22. }
  23. ?>



Stworzyłem taką pętle, która ma za zadanie wyświetlić wszystkie zdjęcia z katalogu (w którym jest aktualnie 20 zdjęć), a ona po prostu w ogóle nie działa, tzn nic mi się na stronie nie wyświetla. Co może być przyczyną?
ferrero2
Ponieważ na początku już przypisujesz zmiennej $a wartość 1 a pętla while jak sama nazwa wskazuje działa dopóki warunek jest spełniony, jako że warunek już na samym początku nie jest spełniony to nie wykonuje się ani razu. Zmień warunek na
while ($a==1) i będzie działać.
gsmphone
Wydaję mi się że jest problem z tym while ($a == '0')... ustawiłeś a jako 1 a tutaj mu karzesz wykonywać pętle gdy a będzie 0.
Nie wiem czy mam rację bo tak tylko szybko przejrzałem ale pokombinuj z tym.
kajzur
Hm, a nie lepiej wykorzystać jakaś funkcję którya czyta katalogi? Albo Iterator.. Jeśli masz same pliki *.jpg to użyj funkcji glob.

Przykład z manuala;
  1. <?php
  2. foreach (glob("*.txt") as $filename) {
  3.    echo "$filename size " . filesize($filename) . "\n";
  4. }
  5. ?>

Co da:
funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820

(przykładowe dane..)
Zwariowany
Jak tak zmieniłem też nie działa, tzn wyświetla tylko jedno zdjęcie i nic więcej.

  1. <?php
  2. $katalog='foty';
  3.  
  4. $a='1';
  5. while ($a == '1')
  6. {
  7. echo '<a href="fotogaleria/'.$katalog.'/'.$a.'.jpg"><img src="fotogaleria/'.$katalog.'/mini/'.$a.'.jpg" style="margin-top: 3px; border:0; margin-left: 3px; width: 130px;height:97px;"></a>';
  8.  
  9. $a++;
  10.  
  11.  
  12. $filename='fotogaleria/'.$katalog.'/'.$a.'.jpg';
  13. if (!file_exists($filename))
  14. {
  15. echo $filename;
  16. $a='1';
  17. }
  18.  
  19.  
  20.  
  21. }
  22. ?>
regisek
Gdyz albowiem warunek spelniony (while($a==1)) masz tylko raz. Po iteracji za=1 robi ci sie a=2 i juz ni hu hu.
Zwariowany
no tak, ale jeżeli file_exist nie wykryje następnego pliku:

  1. <?php
  2. if (!file_exists($filename))
  3. {
  4. echo $filename;
  5. $a='1';
  6. }
  7. ?>


to nadaje zmiennej $a wartość 1, i wówczas pętla powinna się zakończyć. Dobrze mówię?
behu
na początku ustalasz, że $a='1', więc pętla nie ma prawa się wykonać.

spróbuj tak:
  1. <?php
  2. $katalog='foty';
  3.  
  4.  
  5. $a='1';
  6. while ($a != '0')
  7. {
  8. echo '<a href="fotogaleria/'.$katalog.'/'.$a.'.jpg" ><img src="fotogaleria/'.$katalog.'/mini/'.$a.'.jpg" style="margin-top: 3px; border:0; margin-left: 3px; width: 130px;height:97px;"></a>';
  9.  
  10. $a++;
  11.  
  12.  
  13. $filename='fotogaleria/'.$katalog.'/'.$a.'.jpg';
  14. if (!file_exists($filename))
  15. {
  16. echo $filename;
  17. $a='0';
  18. }
  19.  
  20.  
  21.  
  22. }
  23. ?>
Pawel_W
  1. <?php
  2. $katalog='foty';
  3.  
  4. $a='1';
  5. while ($a != 0)
  6. {
  7. echo '<a href="fotogaleria/'.$katalog.'/'.$a.'.jpg"><img src="fotogaleria/'.$katalog.'/mini/'.$a.'.jpg" style="margin-top: 3px; border:0; margin-left: 3px; width: 130px;height:97px;"></a>';
  8.  
  9. $a++;
  10.  
  11.  
  12. $filename='fotogaleria/'.$katalog.'/'.$a.'.jpg';
  13. if (!file_exists($filename))
  14. {
  15. echo $filename;
  16. $a=0;
  17. }
  18.  
  19.  
  20.  
  21. }
  22. ?>
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.