Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Nie działają pola input o name > 20
--Jakub--
post
Post #1





Goście







Cześć wszystkim

Od dłuższego czasu pracuję nad własnym CMSem, a teraz właściwie już nad jego drugą edycją. Napotkałem problem, którego nie wiem jak rozwiązać i bardzo proszę o pomoc.

Sprawę opiszę krótko: formularz z polami input do wrzucenia 30 zdjęć. Zdjęcia są wrzucane na serwer, skalowane itp, ścieżka dodawana do bazy danych. Ale...

Skrypt działa mi tylko gdy wybiorę zdjęcie (albo zdjęcia) których atrybut "name" nie jest większy od 20. W praktyce wygląda to tak, że dodając do formularza 30 zdjęć, skrypt wczyta mi tylko 20 pierwszych. A jeśli dodam do formularza 20 ostatnich, to wczyta mi tylko 10 zdjec, bo ostatnia 10 jest dziwnie ucięta.

Wklejam kod. Ogólnie jest on dużo bardziej rozbudowany, ale żeby rozwiązać problem uprościłem go do minimum i zobaczyłem kilka ciekawych rzeczy.

test.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
  4. <title>test</title>
  5.  
  6.  
  7. </head>
  8. <form enctype="multipart/form-data" action="test_skrypt.php" method="POST">
  9.  
  10. <tr><td><input type="hidden" name="MAX_FILE_SIZE" value="99999999999999999999999999999999999999999999999999999999999999999999999999" /></td></tr>
  11. <tr><td>Zdjecie 1<input name="zdjecie1" type="file" /></td></tr>
  12. <tr><td>Zdjecie 2<input name="zdjecie2" type="file" /></td></tr>
  13. <tr><td>Zdjecie 3<input name="zdjecie3" type="file" /></td></tr>
  14. <tr><td>Zdjecie 4<input name="zdjecie4" type="file" /></td></tr>
  15. <tr><td>Zdjecie 5<input name="zdjecie5" type="file" /></td></tr>
  16. <tr><td>Zdjecie 6<input name="zdjecie6" type="file" /></td></tr>
  17. <tr><td>Zdjecie 7<input name="zdjecie7" type="file" /></td></tr>
  18. <tr><td>Zdjecie 8<input name="zdjecie8" type="file" /></td></tr>
  19. <tr><td>Zdjecie 9<input name="zdjecie9" type="file" /></td></tr>
  20. <tr><td>Zdjecie 10<input name="zdjecie10" type="file" /></td></tr>
  21. <tr><td>Zdjecie 11<input name="zdjecie11" type="file" /></td></tr>
  22. <tr><td>Zdjecie 12<input name="zdjecie12" type="file" /></td></tr>
  23. <tr><td>Zdjecie 13<input name="zdjecie13" type="file" /></td></tr>
  24. <tr><td>Zdjecie 14<input name="zdjecie14" type="file" /></td></tr>
  25. <tr><td>Zdjecie 15<input name="zdjecie15" type="file" /></td></tr>
  26. <tr><td>Zdjecie 16<input name="zdjecie16" type="file" /></td></tr>
  27. <tr><td>Zdjecie 17<input name="zdjecie17" type="file" /></td></tr>
  28. <tr><td>Zdjecie 18<input name="zdjecie18" type="file" /></td></tr>
  29. <tr><td>Zdjecie 19<input name="zdjecie19" type="file" /></td></tr>
  30. <tr><td>Zdjecie 20<input name="zdjecie20" type="file" /></td></tr>
  31. <tr><td>Zdjecie 21<input name="zdjecie21" type="file" /></td></tr>
  32. <tr><td>Zdjecie 22<input name="zdjecie22" type="file" /></td></tr>
  33. <tr><td>Zdjecie 23<input name="zdjecie23" type="file" /></td></tr>
  34. <tr><td>Zdjecie 24<input name="zdjecie24" type="file" /></td></tr>
  35. <tr><td>Zdjecie 25<input name="zdjecie25" type="file" /></td></tr>
  36. <tr><td>Zdjecie 26<input name="zdjecie26" type="file" /></td></tr>
  37. <tr><td>Zdjecie 27<input name="zdjecie27" type="file" /></td></tr>
  38. <tr><td>Zdjecie 28<input name="zdjecie28" type="file" /></td></tr>
  39. <tr><td>Zdjecie 29<input name="zdjecie29" type="file" /></td></tr>
  40. <tr><td>Zdjecie 30<input name="zdjecie30" type="file" /></td></tr>
  41.  
  42. <tr><td><input name="submit" type="submit" /></td></tr>
  43.  
  44. </form>
  45. </body>
  46. </html>


test_skrypt.php

  1. <?
  2.  
  3. $liczba = 1;
  4. while($liczba < 31)
  5. {
  6.  
  7. $plik = 'zdjecie'.$liczba;
  8. $zdjecie_tmp = $_FILES[$plik]['tmp_name'];
  9.  
  10.  
  11. if(is_uploaded_file($zdjecie_tmp))
  12. {
  13.  
  14. $zdjecie_nazwa = $_FILES[$plik]['name'];
  15. move_uploaded_file($zdjecie_tmp, "../zdjecia/$zdjecie_nazwa");
  16. }
  17. ++$liczba;
  18. }
  19.  
  20. ?>


I teraz parę modyfikacji skryptu i co następuje :

  1. <?
  2.  
  3. $liczba = 1;
  4. while($liczba < 31)
  5. {
  6.  
  7. $plik = 'zdjecie'.$liczba;
  8. $zdjecie_tmp = $_FILES[$plik]['tmp_name'];
  9.  
  10. if(is_uploaded_file($zdjecie_tmp))
  11. {
  12. echo $liczba.'kuba<br />';
  13. }
  14. ++$liczba;
  15. }
  16.  
  17. ?>


Powyższy skrypt wyświetla na ekranie napis "kuba" poprzedzony liczbą 1-20 ile plików załadowałem, oczywiście mowa tylko o 20 pierwszych polach formularza.

I następne mody:

  1. <?
  2.  
  3. $liczba = 1;
  4. while($liczba < 31)
  5. {
  6.  
  7. $plik = 'zdjecie'.$liczba;
  8. $zdjecie_tmp = $_FILES[$plik]['tmp_name'];
  9.  
  10. echo $liczba.'petla<br />';
  11.  
  12. if(is_uploaded_file($zdjecie_tmp))
  13. {
  14. echo $liczba.'kuba<br />';
  15. }
  16. ++$liczba;
  17. }
  18.  
  19. ?>


Wyświetli mi wstawiony napis 30 razy -czyli pętla wykonuje się bez problemu. Wyświetla dodatkowo to co poprzednio.

I ostatni:

  1. <?
  2.  
  3. $liczba = 1;
  4. while($liczba < 31)
  5. {
  6.  
  7. $plik = 'zdjecie'.$liczba;
  8. $zdjecie_tmp = $_FILES[$plik]['tmp_name'];
  9.  
  10. echo $liczba.'petla<br />';
  11.  
  12. if(!empty($_FILES[$plik]))
  13. {
  14. echo $liczba.'nie jest pusty';
  15. }
  16.  
  17. if(is_uploaded_file($zdjecie_tmp))
  18. {
  19. echo $liczba.'kuba<br />';
  20. }
  21. ++$liczba;
  22. }
  23.  
  24. ?>


Wyświetli to co poprzednio + 20 razy wyświetony napis "nie jest pusty". Tak jakby pola od 21-30 miały przypisaną jakąś wartość?

Pliki jakie wrzucam to nie są duże pliki, po kilkadziesiąt kb, ew. 500kb.

A tutaj istotne ustawienia PHP mojej domeny:

memory_limit = 128M
post_max_size = 64M
file_uploads = On
upload_max_filesize = 128M


Bardzo proszę o jakąś pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.09.2025 - 11:42