Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Menah 23:36
 » luckyluc 23:27
 » Wolf 23:25
 » selves 23:24
 » wrrr 23:24
 » fiskomp 23:14
 » Visar 23:10
 » Magnus 23:07
 » luzak2363 23:05
 » ToM78 22:50
 » Kool@ 22:48
 » doxent 22:44
 » tian 22:41
 » zibi13 22:41
 » Logan 22:38
 » Tomasz 22:37
 » Chrisu 22:33
 » XepeR 22:29
 » DJopek 22:15
 » rainy 22:11

 Dzisiaj przeczytano
 36870 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
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

  1. 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

  2. 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

  3. 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"

    1. 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

      1. 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

        1. czyli nie w tym problem , kubazzz 22/08/08 21:49
          mowiac krotko.

          SM-S908

      2. 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

        1. 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

  4. 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!

    1. 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

      1. 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!

  5. RTMF , Holyboy 22/08/08 22:28
    ehhh http://pl2.php.net/.../pl/features.file-upload.php

    Strength is irrelevant.
    Resistance is futile.
    We wish to improve ourselves.

    1. RTMF - Real Time Mind Fuc*er , john565 22/08/08 22:32
      dwukropek p

      f*ck

      1. neheh , Holyboy 22/08/08 22:38
        of coz RTFM :)

        Strength is irrelevant.
        Resistance is futile.
        We wish to improve ourselves.

  6. 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