|
TwojePC.pl © 2001 - 2025
|
 |
A R C H I W A L N A W I A D O M O Ś Ć |
 |
| |
|
[szkółka weekendowa php cd] coś źle robię , kubazzz 22/08/08 21:28 if((!empty($_FILES['plik'])) && ($_FILES['plik']['error'] == 0))
{
for ($i = 0; $i <= 2; $i += 1)
{
if (($_FILES['plik']['type'][$i] == "image/jpeg") && ($_FILES['plik']['size'][$i] < 2000000))
{
$zalacznik[$i] = $_FILES['plik']['name'][$i];
if ((move_uploaded_file($_FILES['plik']['tmp_name'][$i],"uploadfotkix/".$zalacznik[$i])))
{
echo "The file has been saved as: ".$zalacznik[$i];
}
else
{
echo "Błąd podczas uploadu!";
}
}
else
{
echo "Plik za duży albo złego typu";
}
}
}
else
{
echo "Błąd";
}
I to co dostaje zawsze to błąd, czyli pierwsza pętla nie działa.
Formularz wyglada tak
<input type="file" name="plik[]" accept="image/jpeg"><br>
<br>
<input type="file" name="plik[]" accept="image/jpeg"><br>
<br>
<input type="file" name="plik[]" accept="image/jpeg"><br>
<br>
<input type="submit" value="wyslij">
Nie do końca mogę dojść jak ta tablica $_FILES działa i dlaczego pierwszy warunek mi nie przechodzi.SM-S908 - bo ma byc ... , DrLamok 22/08/08 21:38
w 8 linijce
"upload fotki xxx" zamiast "upload fotki x"
sorki na php sie nie znam, jakby było w perlu to bym pomógł.
walcz dalej :)
pozdrówka - dodam tylko , kubazzz 22/08/08 21:38
ze pliki sa uploadowane bo gdy wywale te warunki i petle to proste polecenia dzialaja, tyle tylko, ze musza byc pewne warunki.SM-S908 - primo , Deus ex machine 22/08/08 21:39
poznaj komende var_dump
secundo uzyj var_dump($FILES) przed calym kodem i zobaczysz co masz w tablicy
i po trzecie ( ,) )wystarczy Ci jeden input ( bo kazdy z nich ma taka sama nazwe) poza submitem
a pierwszy link z googla http://www.programuj.com/faq/php/upload.php powinien Ci nasiwtlic sytuacje
.) badz dzielny i walcz dalej"Uti non Abuti" - google już przekopałem , kubazzz 22/08/08 21:44
i to wiem, tylko chodzi o to że są trzy pola uploadu bo ktoś może dołączyć od 0 do 3 plików.
Ja normalnie bym zrobił plik1, plik2 i plik3, ale wypatrzyłem, że można zrobić plik[] i wtedy wgrać więcej plików.
I teraz problem bo php może dostać 0 plików, albo 3, z czego każdy musi sprawdzić co do typu i rozmiaru.
Pętla jest w tym wypadku najlepsza.
Jeśli ja to testuje i zrobię sobie skrypt
echo $_FILES['plik']['name'][0];
to dostaje prawidlowa nazwe, plik jest uploadowany.
nawet move_uploaded_files dziala.
ale schodzy sie zaczely jak wprowadzilem warunki i petle, a konkretnie wywala się przy tym pierwszym warunku:
if((!empty($_FILES['plik'])) && ($_FILES['plik']['error'] == 0))
To co mi dałeś z google'a to znam..SM-S908 - var_dump , kubazzz 22/08/08 21:48
array(5) { ["name"]=> array(3) { [0]=> string(10) "06.jpg" [1]=> string(10) "09.jpg" [2]=> string(13) "examples.html" } ["type"]=> array(3) { [0]=> string(10) "image/jpeg" [1]=> string(10) "image/jpeg" [2]=> string(9) "text/html" } ["tmp_name"]=> array(3) { [0]=> string(14) "/tmp/phpggYhjL" [1]=> string(14) "/tmp/phptZa30P" [2]=> string(14) "/tmp/phpNgcWIU" } ["error"]=> array(3) { [0]=> int(0) [1]=> int(0) [2]=> int(0) } ["size"]=> array(3) { [0]=> int(69633) [1]=> int(123013) [2]=> int(1705) } }SM-S908 - czyli nie w tym problem , kubazzz 22/08/08 21:49
mowiac krotko.SM-S908
- hmmm , Norton 22/08/08 22:15
nie pętla tylko warunek
if((!empty($_FILES['plik'])) && ($_FILES['plik']['error'] == 0))
1. nadmiar nawiasów
if (!empty($_FILES['plik']) && $_FILES['plik']['error'] == "0")
2. nie jest spełniony drugi warunek
$_FILES['plik']['error'] == "0"
bo error to u Ciebie array. Sprawdź
$_FILES['plik']['error']['0'] == "0" && $_FILES['plik']['error']['1'] == "0" && $_FILES['plik']['error']['2'] == "0"
a najlepiej to przeleć całą tablicę (foreach) jakąś funkcją bo to mi wygląda na multiupload. Mam rację?Zmień swój podpis na Boardzie
maks 100 znaków, 3 linie,
zabroniony spam oraz reklama - tak, multiupload , kubazzz 22/08/08 22:28
ale robilem to juz z warunkiem [plik][error][1] i tez tak samo sie konczylo.
wywalilem ten warunek i na razie dziala.
ale dzieki za sugestie, pozmieniam moze na foreach.
bo na razie mam tak:
f(!empty($_FILES['plik'])) // czyli sprawdza czy tablica z plikami nie jest pusta
{
for ($i = 0; $i <= 2; $i += 1)
{
if (($_FILES['plik']['type'][$i] == "image/jpeg") && ($_FILES['plik']['size'][$i] < 2000000))
{
$zalacznik[$i] = $_FILES['plik']['name'][$i];
if ((move_uploaded_file($_FILES['plik']['tmp_name'][$i],"uploadfotkix/".$zalacznik[$i])))
{
echo "It's done! The file has been saved as: ".$zalacznik[$i];
}
else
{
echo "Error: A problem occurred during file upload!";
}
}
else
{
echo "Plik za duży albo złego typu";
}
}
}
else
{
echo "Błąd";
}
w sumie nie wiem, ale chyba tak moze zostac;)SM-S908
- czytaj kubazzz , Grocal 22/08/08 22:06
$_FILES['plik']['error'] zawiera tablice a nie liczbe calkowita!
Warunekt $_FILES['plik']['error'] == 0 nie ma sensu. Poza tym wrzucaj kod przez jakis serwis typu [ http://rafb.net/paste/ ]. Lepiej sie czyta, zwlaszcza jak sie stosuje wciecia.Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - okej , kubazzz 22/08/08 22:12
nie wiedzialem ze board wywali wciecia.
A co do tego warunku, to zerżnąłem go stąd
http://www.webcheatsheet.com/PHP/file_upload.php
Wszedzie sa przyklady dla jednego pliku, a u mnie $_FILES zawiera kilka plikow i przez to mam ciagle jakies przygody.
Dzieki za nakierowanie.SM-S908 - glad I could help , Grocal 22/08/08 22:27
Board uzywa czcionki proporcjonalnej a nie o stalej szerokosci i wywala wciecie - kod wszelkiego rodzaju staje sie niezbyt czytelny.
Co do tego, ze $_FILES['plik'] jest de facto tablica plikow, to wynika z tego, ze nazwales pola (inputy) file[], file[], ... PHP odczytuje wowczas tak nazwane zmienne jako... elementy tablicy. Stad kazde pole (input) i dane z nich sa w jednej, numerowanej kolejno tablicy. Sprawdzanie errora wrzuc w takim razie do foreacha, gdzie sprawdzasz co sie wrzucilo na serwer i kopiujesz w odpowiednie miejsce.Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie!
- RTMF , Holyboy 22/08/08 22:28
ehhh http://pl2.php.net/.../pl/features.file-upload.phpStrength is irrelevant.
Resistance is futile.
We wish to improve ourselves. - RTMF - Real Time Mind Fuc*er , john565 22/08/08 22:32
dwukropek pf*ck - neheh , Holyboy 22/08/08 22:38
of coz RTFM :)Strength is irrelevant.
Resistance is futile.
We wish to improve ourselves.
- ok dziękuję za pomoc, zrobiłem tak: , kubazzz 22/08/08 23:01
foreach ($_FILES['plik']['error'] as $i=>$blad)
{
if ($blad == UPLOAD_ERR_OK)
{
if ((!empty($_FILES['plik']['name'][$i]) && [$_FILES['plik']['type'][$i] == "image/jpeg") && ($_FILES['plik']['size'][$i] < 2000000))
{
$zalacznik[$i] = $_FILES['plik']['name'][$i];
if ((move_uploaded_file($_FILES['fplik']['tmp_name'][$i],"uploadfotkix/".$zalacznik[$i])))
{
echo "It's done! The file has been saved as: ".$zalacznik[$i];
}
else
{
echo "Error: A problem occurred during file upload!";
}
}
else
{
echo "Plik za duży albo złego typu";
}
}
}
nie wiem czy to !empty jest tak naprawde potrzebne, ale zostawilem.
Pytanie - czy to jest juz z punktu widzenia zawodowych programistow dobrze napisane?SM-S908 |
|
|
|
 |
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL |
 |
|
|
|