Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z krótkim kodem
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
7sekund
nospor patrzyłem na tę stronę, którą podałeś i tam jest kod, który przerobiłem na swoje potrzeby:

  1. $src = 'xxx/';
  2. $dst = 'new/';
  3. $pliki = glob("/xxx/*.*");
  4.  
  5. foreach ($pliki as $plik)
  6. {
  7. $pliki_do_skopiowania = str_replace($src, $dst, $plik);
  8. copy($src.$plik, $dst.$plik);
  9. }


no ale niestety to nie działa, tzn nie kopiuje tych plików , a dodatkowo nie mam żadnego komunikatu zwrotnego o błędzie, bo serwer zwraca pustą stronę.... Nie rozumiem tego no i jestem dalej w punkcie wyjścia.
nospor
Szukasz plikow w /xxx/ a potem probujesz pliki kopiowac z xxx/

Wez najpierw okresl sam ktora sciezka jest wlasciwa i czy w ogole ktorakolwiek z nich, a potem kopiuj
gino
prostego kodu nie umiesz przepisać....

Kod
$pliki_do_skopiowania = str_replace($src, $dst, $plik);

sprawdź co robi ta linijka kodu i co jest pod zmienną $pliki_do_skopiowania, to nie będziesz się dziwił dlaczego nie wykonuje się copy($src.$plik, $dst.$plik);

Nie ma komunikatu? Funkcja copy() zwraca true lub false to obsłuż sobie ten błąd, w stylu if(!copy...) itd.
Sprawdź też, czy katalog new istnieje i zrób jakąś obsługę błędów gdyby nie dało się go utworzyć.
7sekund
Słucham waszych wskazówek, mimo iż zbieram przy okazji opieprz.

Zastosowałem się do tego co napisałeś gino i mam teraz taki kod:

  1. <?php
  2. $rozdzial4 = "../rozdzial4/";
  3. $new = "../new/";
  4.  
  5. if (file_exists($new))
  6. echo 'Katalog new już istnieje!';
  7. else if (!mkdir($new))
  8. {
  9. echo 'Tworzenie katalogu new nie powiodło się!';
  10. }
  11. else
  12. echo 'Katalog new został utworzony!';
  13.  
  14. $uchwyt1 = opendir($rozdzial4);
  15. $uchwyt2 = opendir($new);
  16.  
  17. $pliki = glob("$rozdzial4"."*.*");
  18.  
  19. foreach ($pliki as $plik)
  20. {
  21. $pliki_do_skopiowania = str_replace($rozdzial4, $new, $plik);
  22. echo $pliki_do_skopiowania;
  23. copy($rozdzial4.$plik, $new.$plik);
  24.  
  25. if(!copy($rozdzial4.$plik, $new.$plik))
  26. {
  27. echo '<br />Nie udało się skopiować pliku!';
  28. }
  29. }
  30.  
  31. closedir($uchwyt2);
  32. closedir($uchwyt1);
  33. ?>


Kod w większości działa, tzn. ta górna część, ale nie działa kopiowanie , bo wyrzuca teraz ten komunikat, że "Nie udało się skopiować pliku!" , oraz obok każdego jest wypisana ścieżka do tego pliku , tak jakby funkcja str_replace() podmieniała ciągi znaków, a nie pliki - funkcja echo $pliki_do_skopiowania; wypisuje mi ścieżkę do każdego pliku, którego nie udało się skopiować...

Pół dnia siedzę nad tym i nie widzę gdzie jest błąd. Czy ktoś coś może podpowiedzieć?
nospor
Caly czas popelniasz bezmyslnie bledy, to sie nie dziw ze dostajesz ochrzan wink.gif Tak jak teraz, cala masa rzeczy gdzie widac, ze w ogole nie myslisz

1) Po co 2 razy COPY? To COPY w IF w zupelnosci wystarczy

2) Po co to:
$pliki_do_skopiowania = str_replace($rozdzial4, $new, $plik);
skoro potem nie korzystasz z tego $pliki_do_kopiowania nigdize. No to skoro nie korzystasz to po co to robisz? Albo wywal, albo skorzystaj

3) Po co to:
$uchwyt1 = opendir($rozdzial4);
$uchwyt2 = opendir($new);
Co ci to daje w kontekscie uzywania GLOB i COPY?

4) copy($rozdzial4.$plik, $new.$plik);
Patrzyles w ogole co masz w $rozdzial4.$plik oraz $new.$plik ?
echo $rozdzial4.$plik;
echo $new.$plik;
Czy sciezki ktore to zwroci sa w ogole poprawne? Sprawdzales?


Generalnie przez wiekszosc czasu odnosze wrazenie ze walisz jakis losowy kod na zasadzie: a moze zadziala. no nie, tak sie nie programuje. Nalezy myslec nad tym co sie robi. Ja wiem, ze dopiero zaczynasz ale kurcze, jak dodajesz jakas linijke kodu to zastanow sie co ona w ogole robi
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.