Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie pól - jak to przejąć?
Forum PHP.pl > Forum > PHP
thomson89
Witam!

Dodaję pola, typu file to pewnego formularza gdzie dodaję pliki.

Pola dodaję tak:
[JAVASCRIPT] pobierz, plaintext
  1. function dodaj_element(kontener){
  2. var znacznik = document.createElement('input');
  3. znacznik.setAttribute('type', 'file');
  4. znacznik.setAttribute('name', 'plik');
  5. znacznik.className = 'upload';
  6. var kontener = document.getElementById(kontener);
  7. kontener.appendChild(znacznik);
  8. }
[JAVASCRIPT] pobierz, plaintext


Załóżmy, że tych pól jest 20 + 1 istniejące o name "plik". Jak teraz dodać te obrazki za pomocą PHP?

erix
Nie rozumiem pytania? Wiesz, jak się obsługuje upload? Wiesz, jak się wykonuje operacje na obrazach? To to połącz.
thomson89
Mnie się nie pytaj czy ty nie rozumiesz pytania.

Dałem tak, i zupladowałem dwa pliki - jeden z istniejącego pola drugi z pola dodanego przez powyższy skrypt - nie działa.

  1. <?php
  2. $plik_tmp = $_FILES['plik']['tmp_name'];
  3.  
  4. if(is_uploaded_file($plik_tmp)) {
  5. echo 'ok';
  6. }
  7. ?>
Wicepsik
Jeżeli każdemu inputowi dajesz name plik to jak chcesz odebrać kilka plików ?
thomson89
Czyli dodając pola z plikami, moim kodem, nie da się tego odebrać w PHP? To jak przerobić ten skrypt i jak potem zliczyć ile pól się dodało?
ADeM
Sprawdz co Ci da coś takiego:
  1. <input type="typ" name="nazwa[]" value="1" />
  2. <input type="typ" name="nazwa[]" value="0" />
thomson89
Poradziłem sobie z tym.

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. <!--
  3. function dodaj_element(kontener){
  4. var ilosc = document.getElementById('ilosc');
  5. var suma = parseInt(ilosc.value);
  6. ilosc.value = suma + 1;
  7. var znacznik = document.createElement('input');
  8. znacznik.setAttribute('type', 'file');
  9. znacznik.setAttribute('name', 'plik' + ilosc.value);
  10. znacznik.className = 'upload';
  11. var kontener = document.getElementById(kontener);
  12. kontener.appendChild(znacznik);
  13. }
  14. //-->
  15. </script>
[JAVASCRIPT] pobierz, plaintext

  1. <?php
  2. $plik_tmp = $_FILES['plik']['tmp_name'];
  3. $plik_nazwa = $_FILES['plik']['name'];
  4. $plik_rozmiar = $_FILES['plik']['size'];
  5.  
  6. if(is_uploaded_file($plik_tmp)) {
  7. move_uploaded_file($plik_tmp, $plik_nazwa);
  8. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  9. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!<br />";
  10. }
  11.  
  12. $i = 0;
  13. while($i <= $_POST['ilosc'])
  14. {
  15. $plik_tmp = $_FILES['plik'.$i]['tmp_name'];
  16. $plik_nazwa = $_FILES['plik'.$i]['name'];
  17. $plik_rozmiar = $_FILES['plik'.$i]['size'];
  18.  
  19. if(is_uploaded_file($plik_tmp)) {
  20. move_uploaded_file($plik_tmp, $plik_nazwa);
  21. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  22. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!<br />";
  23. }
  24. $i ++;
  25. }
  26.  
  27. ?>
ADeM
Naokoło trochę biggrin.gif
Na przyszłość jednak radziłbym sprawdzić, co zwróci formularz z inputami, które podałem wyżej. Może się przydać :]
thomson89
Wiem, że na około, ale widziałem ten sposób w jakimś innym dodawaczu pól - więc zgapiłem co nie co.
Wicepsik
I zamiast while użyć foreach smile.gif
erix
~Wicepsik - FYI - foreach jest 2x bardziej pamięciożerne od while.

Jedyny sens stosowania foreach jest przy obiektach implementujących interfejs iteratora. We wszystkich pozostałych albo while, albo for.
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.