Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] funkcja ereg
Forum PHP.pl > Forum > Przedszkole
seba_pt
witam wszystkich,

Mam problem z kodem w php, chodzi o to ze cos zrobilem zle i nie dziala.

  1. <?php
  2. while ($plik = readdir($katalog)) {
  3.    if (ereg ("gif$|.jpg$", $plik) ) {$zdjecia[$i++] = $plik;}
  4. }
  5. closedir($katalog);
  6. foreach($zdjecia as $value)
  7.    echo '<p> ... </p>';
  8. ?>


wyswietlany jest blad w instrukcji foreach.

czy ktos moze orietuje sie co robie zle?

zapomnialem dodac ze jak usune funkcje ereg, foreach dziala
jareeny
Podaj treść błędu bo tak nie lubię pewnie jak większość 'coś zrobiłem źle i nie dziala'.

Pozdrawiam
guilty82
Prawdopodobnie do petli foreach jest przesylana zla lub pusta tablica
uzyj
  1. <?php
  2. print_r($zdjecia);
  3. ?>
batman
  1. <?php
  2. ereg (".+.gif$|.+.jpg$", $plik)
  3. ?>

To powinno załatwić sprawę. Pisane na szybkiego, więc mógł się wkraść błąd.
Poza tym powinieneś przed pętlą foreach sprawdzać czy tablica zawiera jakieś dane.

edit
Błąd się wkradł winksmiley.jpg
Teraz powinno działać.
seba_pt
guilty82, masz racje

wyswietla: Invalid argument supplied for foreach()

da sie to jakos rozwiazac, probowalem deklarowac wczesniej zmienna jako tablice, ale wciaz to samo.



dzieki Batman zaraz sprawdze,

wybaczcie ale wciaz ten sam blad wyswietla, nie rozumiem:(
batman
  1. <?php
  2. $i = 0;
  3. $zdjecia = array();
  4. while ($plik = readdir($katalog)) {
  5.    if (ereg (".+.gif$|.+.jpg$", $plik)) {
  6.        $i++;
  7.        $zdjecia[$i] = $plik;
  8.    }
  9. }
  10. closedir($katalog);
  11.  
  12. if(count($zdjecia) > 0) {
  13.    foreach($zdjecia as $value) {
  14.        echo '<p> ... </p>';
  15.    }
  16. }
  17. else {
  18.    echo 'Brak zdjęć';
  19. }
  20. ?>


Jeśli wyświetli "Brak zdjęć" to znaczy, że nie masz zdjęć w wybranym katalogu lub walnięta jest regułka. Jeśli nadal będzie pokazywał się błąd z foreach, to
  1. <?php
  2. var_dump($zdjecia);
  3. ?>
i wklej to co się pokaże.
webdice
Nie lepiej skorzystać z glob" title="Zobacz w manualu PHP" target="_manual?
guilty82
  1. <?php
  2. $katalog = opendir("pliki/");
  3. $zdjecia = array();
  4.  
  5. while (false !== ($plik = readdir($katalog))) {
  6.   if (ereg(".+.gif$|.+.jpg$", $plik)) $zdjecia[] = $plik;
  7. }
  8. closedir($katalog);
  9. foreach($zdjecia as $value)
  10.   echo $value;
  11. ?>
seba_pt
dzieki sprawdze i sie odezwe. pozdr

probowalem obydwu sposobow po funkcji ereg wyrzuca: array(0) { }

a potem:

Brak zdjec

sprobuje z glob

dzieki



problem rozwiazal sie z glob(), dzieki Webdice za podpowiedz, choc nie wiem dlaczego nie dziala z filtrowaniem plikow jest lepej bo wyswietla same pliki.

moze ktos zna jeszcze inne rozwiazania.

dzieki
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.