![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Przedstawię kod jaki posiadam a potem opiszę problem. Kod <script language="JavaScript"> function deleteFileInput(hyperlink) { $(hyperlink).parent().remove(); return false; } function createFileInput(description, max) { var description = description ? true : false; var max = max ? max : false; var nextId = 0; var wrappers = $('.photoWrapper'); if (!max || wrappers.length < max) { wrappers.each(function (i) { var id = parseInt($(this).attr('id').replace('photoWrapper', '')); if (id >= nextId) { nextId = id + 1; } }); var p = $('<div>'); div.addClass('photoWrapper'); div.attr('id', 'photoWrapper' + nextId); var input = $('<input type="file" />'); input.addClass('file'); input.attr('name', 'photo[' + nextId + ']'); div.append(input); if (description) { div.html(p.html() + ' Opis '); var input = $('<input type="text" />'); input.addClass('text'); input.attr('name', 'photo_description[' + nextId + ']'); div.append(input); } var a = $('<a>'); a.addClass('foto'); a.attr('href', ''); a.html(' usuĹ?'); a.click(function () { return deleteFileInput(this); }); div.append(a); div.insertAfter($('.photoWrapper:last')); } return false; } </script> Teraz w pliku foto.php jest rozbudowany skrypt do uploadu fotek ale mój problem jest następujący jaką funkcją w php wszystkie fotki dodane za pomocą formularza obrobię przez ten jeden skrypt. Myślałem nad jakąś pętlą ale to chyba odpada ? Czy to tego typu zadania foreach będzie ok ? Proszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 6.05.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Chyba jedynym wyjściem będzie tu właśnie foreach ($_FILES) ...
Jeśli ktoś zna inny pomysł, to też z chęcią go poznam. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 13 Dołączył: 20.03.2007 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Pamietaj zeby wydluzyc max. okres wykonywania skryptu i mozliwy rozmiar wysylanych danych POST-em.
Opjce: - max_execution_time - post_max_size |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
Pamietaj zeby wydluzyc max. okres wykonywania skryptu i mozliwy rozmiar wysylanych danych POST-em. Opjce: - max_execution_time - post_max_size OK, ale mam jedno pytanie. Przecież będą przetwarzane dane cały czas to chyba skrypt nie zatrzyma się po standarodwych 30-40 sekundach ? Sorry za to pytanie ale jak ustawić: - max_execution_time - post_max_size (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
OK, dzięki za pomoc ale zrobiłem teraz takie skrypt:
Kod <style type="text/css"> <!-- input.upload { display: block; } --> </style> <script type="text/javascript"> <!-- function dodaj_element(kontener){ var znacznik = document.createElement('input'); znacznik.setAttribute('type', 'file'); znacznik.setAttribute('name', 'val[]'); znacznik.className = 'upload'; var kontener = document.getElementById(kontener); kontener.appendChild(znacznik); } //--> </script> </head><body> <? echo "<h1>ADD News</h1>"; if (isset($_POST['joketext'])) { foreach( $_FILES as $val ) { if( is_uploaded_file( $val['tmp_name'] ) ) { if( move_uploaded_file( $val['tmp_name'], 'foto/' . $val['name'] ) ) { echo 'Plik '. $val['name'] .' został pomyślnie uploadowany! <br />'; } else { echo 'Upload pliku '. $val['name'] .' nie powiódł się!'; echo '<pre>' . print_r( $_FILES, true ) . '</pre>'; die(); } } else { echo 'Upload pliku '. $val['name'] .' nie powiódł się!'; echo '222222<pre>' . print_r( $_FILES, true ) . '</pre>'; die(); } } } ?> <form action="test-news.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="joketext"> <div id="pliki"> <input type="file" name="val[]" /> </div> <div> <a href="#" onclick="dodaj_element('pliki');" />Dodaj pole</a> <input class="sub" type="image" src="gfx/zapisz.gif" title="Zapisz" /> </div> </form> </body> </html> Ale wywala z niego błąd: Upload pliku Array nie powiódł się!222222 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Co jest źle, nie rozumiem tego :/ |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 875 Pomógł: 122 Dołączył: 2.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A co ci pokazuje print_r($_FILES)...?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
print_r($_FILES) wyświetla:
Cytat Array ( [photo] => Array ( [name] => Array ( [0] => DSC00135.JPG ) [type] => Array ( [0] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phpSQvuje ) [error] => Array ( [0] => 0 ) [size] => Array ( [0] => 381448 ) ) ) Powyżej pokazuje dla jednej fotki dla 2 foteki i więcej też działa ładnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Sorry za post pod postem ale wynika z tego ,że najwyraźniej po błędzie coś nie tak jest z przesłaniem przez HTTP POST: Cytat if( is_uploaded_file( $val[0]['tmp_name'] ) ) Czyli plik nawet nie dostaje się do skryptu raczej hhhmmmm... Ten post edytował oomaster 3.08.2008, 08:37:30 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Popatrz jeszcze raz na strukturę którą wyświetliło ci print_r" title="Zobacz w manualu PHP" target="_manual.
Podpowiem tylko, że na pewno nie: $val[0]['tmp_name'] |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
Być może jestem głupi lub niemądry ale jedyne rozwiązaniem aby wszystkie pliki obsłużyć jest:
Cytat <? $val['tmp_name'] ?> Ewentualnie może być: Cytat <? $val[++1]['tmp_name'] ?> (ale to już jest bzdura kompletna) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie problem w 90% rozwiązany zostaje jeszcze jeden szczegół (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Fotki uploadują się na serwer i są na nim i dostaje taki komunikat (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)
Cytat Plik av-4119.png został pomy�lnie uploadowany! Plik babcia i zmieniaki.jpg został pomy�lnie uploadowany! Upload pliku nie powiódł się!222222 Array ( [val] => Array ( [name] => Array ( [0] => av-4119.png [1] => babcia i zmieniaki.jpg ) [type] => Array ( [0] => image/png [1] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phphBjdZw [1] => /tmp/phpucsalW ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 12385 [1] => 86491 ) ) ) NIe wiem dlaczego pisze ,że jest OK a poniżej ,że jest błąd którego nie ma w rzeczywistości ?! O to kod który jest poprawny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod <html><head>
<style type="text/css"> <!-- input.upload { display: block; } --> </style> <script type="text/javascript"> <!-- function dodaj_element(kontener){ var znacznik = document.createElement('input'); znacznik.setAttribute('type', 'file'); znacznik.setAttribute('name', 'val[]'); znacznik.className = 'upload'; var kontener = document.getElementById(kontener); kontener.appendChild(znacznik); } //--> </script> </head><body> <? echo "<h1>ADD Multi foto v1.2</h1>"; if (isset($_POST['joketext'])) { foreach( $_FILES as $val ) { for ($i=0;$i<sizeof($val);$i++) { if( is_uploaded_file( $val['tmp_name'][$i] ) ) { if( move_uploaded_file( $val['tmp_name'][$i], 'foto/' . $val['name'][$i] ) ) { echo 'Plik '. $val['name'][$i] .' został pomyślnie uploadowany! <br />'; } else { echo 'Upload pliku '. $val['name'][$i] .' nie powiódł się!'; echo '<pre>' . print_r( $_FILES, true ) . '</pre>'; die(); } } else { echo 'Upload pliku '. $val['name'][$i] .' nie powiódł się!'; echo '222222<pre>' . print_r( $_FILES, true ) . '</pre>'; die(); } } } } ?> <form action="test-news.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="joketext"> <div id="pliki"> <input type="file" name="val[]" /> </div> <div> <a href="#" onclick="dodaj_element('pliki');" />Dodaj pole</a> <input class="sub" type="image" src="gfx/zapisz.gif" title="Zapisz" /> </div> </form> </body> </html> |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 3 Dołączył: 4.08.2006 Skąd: GDA Ostrzeżenie: (0%) ![]() ![]() |
No ale popatrz:
$i=0; - ustawia na początek 0 do zmiennej $i<sizeof($val); - sprawdza ile jest elementów $val i nie moze ich skrypt naliczyć więcej niż jest ich w tablicy $i++ - dodaje za każdym razem +1 Możesz powiedzieć w jakim sensie jest błąd: $i<sizeof($val) Dzięki wielkie wszystkim za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) udało się rozwiązać mi tą ostatnią zagadkę. Oto rozwiązanie: Kod for ($i=0;$i<sizeof($val[size]);$i++) { Jeszcze raz dzięki wielkie Ten post edytował oomaster 3.08.2008, 12:40:02 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 08:13 |