Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dodawanie w foreach
lary7
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich.


Zrobiłem skrypt uploadu i mam pewien problem. Podczas uploadu można wybrać wiele plików, które nie powinny razem przekraczać np. 400kb. Więc pomyślałem, że w foreach wyciągnę rozmiar każdego pliku, a następnie wszystko zsumuje. Kod wygląda tak:

  1. foreach( $_FILES as $file_name => $file_array ) {
  2. echo $file_array['size'].'<br>';
  3. }


Co daje mi rozmiary wszystkich plików (oczywiście są w nowych liniach przez <br>, normalnie są "złączone"):
Kod
18
33976
889


I mam teraz pytanie... jak to wszystko pododawać w foreach?

Ten post edytował lary7 24.08.2009, 21:37:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
TrevorGryffits
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 29.07.2007
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


Poczytaj np. o array_sum. Na przykład. Możesz też ustawić jakąs zmienną, która będzie przechowywała sumę rozmiarów, a potem oparetor += i heja.
Go to the top of the page
+Quote Post
Suh
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


  1. $suma = 0;
  2.  
  3. foreach($_FILES as $file_name => $file_array) {
  4. $suma += $file_array['size'];
  5. }
  6.  


np. tak ?

Ten post edytował Suh 24.08.2009, 21:46:38


--------------------
Pomogłem ? Odwdzięcz się, kliknij POMÓGŁ.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja osobiście przy zdarzeniu onsubmit bym już JS zaprzągł i sprawdził u klienta, czy aby pliki nie są za duże. Po co ściągać je na serwer ileś tam czasu by się nagle okazało, że ktoś chciał wrzucić 10MB plik przy ograniczeniu 100kB? Sprawdzasz sumaryczny rozmiar plików i jeśli za duże to nawet nie próbujesz uploadu. A na serwie i tak sprawdzasz rozmiar bo userom sie nie ufa. Nie bez powodu admini piszą o użyszkodnikach winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
lary7
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Zrobiłem tak jak mówił Suh i można powiedzieć, że prawie się udało. Gdy mam taki kod:
  1. $sum = 0;
  2. foreach( $_FILES as $file_name => $file_array ) {
  3. echo $sum += $file_array['size'];
  4. }

to wynik jaki się wyświetla to 1836518, czyli skrypt "pokazuje" jak dodaje liczby, a mi chodzi tylko o wynik, czyli o liczbę 518. Pomyślałem, że po prostu ograniczę ilość wykonywania pętli:
  1. $sum = 0;
  2. $i = 0;
  3. foreach( $_FILES as $file_name => $file_array ) {
  4. echo $sum += $file_array['size'];
  5. $i++;
  6. if ($i==1) break
  7. }

ale przy czymś takim wyświetlana jest tylko pierwsza liczba (18). Czy istnieje możliwość wyświetlenia tylko ostatniego zapętlenia?



PS. A co do sprawdzania w JS, to już praktycznie zrobiłem ;]

Ten post edytował lary7 25.08.2009, 11:20:24
Go to the top of the page
+Quote Post
Suh
post
Post #6





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


Cytat(lary7 @ 25.08.2009, 12:18:47 ) *
Czy istnieje możliwość wyświetlenia tylko ostatniego zapętlenia?


Tak, bardzo prosto. Z pętli foreach usuń polecenie echo. Natomiast po pętli daj echo $sum;

PS. Aaa i oczywiście usuń to co napisałeś ze zmienna $i bo to w zupełności zbędne winksmiley.jpg

Ten post edytował Suh 25.08.2009, 11:29:56


--------------------
Pomogłem ? Odwdzięcz się, kliknij POMÓGŁ.
Go to the top of the page
+Quote Post
lary7
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Dzięki, wszystko ładnie działa biggrin.gif Tyle z tym kombinowałem, pisałem jakieś funkcje, a jak zwykle wyszło, że najprostsze rozwiązania są najlepsze...
Go to the top of the page
+Quote Post
ucho
post
Post #8





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

Ostrzeżenie: (0%)
-----


Cytat(thek @ 24.08.2009, 22:55:56 ) *
Ja osobiście przy zdarzeniu onsubmit bym już JS zaprzągł i sprawdził u klienta, czy aby pliki nie są za duże.

Oświeć mnie jak się to robi bo cały czas byłem pewien, że z poziomu JS nie można nawet sprawdzić nazwy wysyłanego pliku nie mówiąc o jego rozmiarze.
Go to the top of the page
+Quote Post
Pawel_W
post
Post #9





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


nazwę sprawdzisz, ale rozmiaru nie winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:03