Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Masowy upload plików (drobnostka)
in5ane
post 16.05.2007, 17:51:53
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam,
chciałem aby ktoś mi pomógł jak tutaj zrobić, żeby w tym uploadzie po zauploadoawniu nie pisał napis "Ogłoszenie dodano poprawnie" tyle razy ile wysłano dany plik tylko jeden raz i że jak któryś plik nie został przesłany z jakiejś przyczyny (np. nie to rozszerzenie, za duży rozmiar czy inne), to żeby wyświetliło który to plik (oryginalną nazwę, nie tę utworzoną).

Oto mój kod:
  1. <?php
  2. if (isset($_FILES['Plik']))
  3. {
  4.  $cnt=count($_FILES["Plik"]["name"]);
  5.  
  6.  for($i=0;$i<$cnt;$i++)
  7.  {
  8. if($_FILES["Plik"]["name"][$i]!='' && $_FILES["Plik"]["size"][$i]>0)
  9. {
  10. $exts=strtolower(substr($_FILES["Plik"]["name"][$i],-3));
  11.  
  12. if ($exts == "gif" || $exts == "jpg" || $exts == "png")
  13. {
  14. srand((double)microtime()*1000000);
  15. $nazwa = md5(uniqid(rand()));
  16. $kr = ".";
  17. if (move_uploaded_file($_FILES["Plik"]["tmp_name"][$i],'fotki/'.''.$nazwa.''.''.$kr.''.''.$exts.''))
  18. {
  19.  echo('<center>Twoje ogłoszenie jest już umieszczone.</center>');
  20.  $query = "INSERT INTO zdjecia (id, nazwa_pliku, id_osoby) VALUES ('', '$nazwa$kr$exts', '$id');";
  21.  $result = mysql_query ($query);
  22.  $querys = "UPDATE users SET status='1' WHERE id='$id';";
  23.  $results = mysql_query ($querys);
  24.  }
  25.  else
  26.  {
  27.  switch($_FILES["Plik"]["error"][$i])
  28. {
  29. case 1: echo('Przesyłany plik jest większy niż zezwala konfiguracja serwera.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  30. case 2: echo('Przesyłany plik jest wiekszy niż zezwala formularz.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  31. case 3: echo('Przesłano tylko część pliku.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  32. case 4: echo('Plik nie został przesłany.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  33. }
  34.  }
  35. }
  36. else
  37. {
  38.  echo('Przesyłany plik nie jest plikiem graficznym.<br><br><a href="java script:history.go(-1)">Wstecz</a>');
  39. }
  40.  } 
  41.  }
  42. }
  43. ?>


Z góry dziękuję za pomoc. Formularz jest jasny, więc go nie dawałem.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Hekko
post 16.05.2007, 18:58:40
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 23
Dołączył: 1.12.2003

Ostrzeżenie: (10%)
X----


Na szybko wymyśliłem coś takiego (troche prymitywnie ale powinno działać):

  1. <?php
  2. if (isset($_FILES['Plik']))
  3. {
  4.  $cnt=count($_FILES["Plik"]["name"]);
  5.  $blad=0;
  6.  for($i=0;$i<$cnt;$i++)
  7.  {
  8. if($_FILES["Plik"]["name"][$i]!='' && $_FILES["Plik"]["size"][$i]>0)
  9. {
  10. $exts=strtolower(substr($_FILES["Plik"]["name"][$i],-3));
  11.  
  12. if ($exts == "gif" || $exts == "jpg" || $exts == "png")
  13. {
  14. srand((double)microtime()*1000000);
  15. $nazwa = md5(uniqid(rand()));
  16. $kr = ".";
  17. if (move_uploaded_file($_FILES["Plik"]["tmp_name"][$i],'fotki/'.''.$nazwa.''.''.$kr.''.''.$exts.''))
  18. {
  19.  $brakbledu=1;
  20.  
  21.  $query = "INSERT INTO zdjecia (id, nazwa_pliku, id_osoby) VALUES ('', '$nazwa$kr$exts', '$id');";
  22.  $result = mysql_query ($query);
  23.  $querys = "UPDATE users SET status='1' WHERE id='$id';";
  24.  $results = mysql_query ($querys);
  25.  }
  26.  else
  27.  {
  28.  $brakbledu=0;
  29.  switch($_FILES["Plik"]["error"][$i])
  30. {
  31. case 1: echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' jest większy niż zezwala konfiguracja serwera.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  32. case 2: echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' jest wiekszy niż zezwala formularz.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  33. case 3: echo('Przesłano tylko część pliku '.$_FILES["Plik"]["name"][$i].'.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  34. case 4: echo('Plik '.$_FILES["Plik"]["name"][$i].' nie został przesłany.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  35. }
  36.  }
  37.  
  38. }
  39. else
  40. {
  41.  echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' nie jest plikiem graficznym.<br><br><a href="java script:history.go(-1)">Wstecz</a>');
  42. }
  43.  } 
  44.  $blad=$blad+$brakbledu;
  45.  }
  46.  if($blad==$cnt)
  47.  {
  48.  echo('<center>Twoje ogłoszenie jest już umieszczone.</center>');
  49.  }
  50.  
  51. }
  52. ?>


--------------------
Tani hosting - Hekko.pl | PHP 5.2/5.3/5.4/5.5/5.6 | MySQL 5.5 |
Hosting już od 49 zł rocznie! Domena pl do każdego pakietu!
Go to the top of the page
+Quote Post
in5ane
post 16.05.2007, 19:44:24
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Nie działa, nic się nie wyświetlać, aha i wprowadzić zabezpieczenie, że jak ktoś nie doda ani jednego zdjęcia to też wyświetla błąd.

Tzn. tak było jak zrobiłem kilka błędów (w jednym złe rozszerzenie, w drugim zły format,a trzecie dobre było).

Ten post edytował in5ane 16.05.2007, 19:46:57


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Hekko
post 16.05.2007, 20:34:18
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 23
Dołączył: 1.12.2003

Ostrzeżenie: (10%)
X----


Tak już działa na 100%:

  1. <?php
  2. if (isset($_FILES['Plik']))
  3.  
  4. $cnt=count($_FILES["Plik"]["name"]);
  5. $brakbledu=0;
  6. $blad=0;
  7. for($i=0;$i<$cnt;$i++)
  8. {
  9.  if($_FILES["Plik"]["name"][$i]!='' && $_FILES["Plik"]["size"][$i]>0)
  10.  {
  11.  $iloscplikow++;
  12.  $exts=strtolower(substr($_FILES["Plik"]["name"][$i],-3));
  13.  
  14.  if ($exts == "gif" || $exts == "jpg" || $exts == "png")
  15.  {
  16.  srand((double)microtime()*1000000);
  17.  $nazwa = md5(uniqid(rand()));
  18.  $kr = ".";
  19.  if (move_uploaded_file($_FILES["Plik"]["tmp_name"][$i],'fotki/'.''.$nazwa.''.''.$kr.''.''.$exts.''))
  20.  {
  21. $brakbledu++;
  22. $query = "INSERT INTO zdjecia (id, nazwa_pliku, id_osoby) VALUES ('', '$nazwa$kr$exts', '$id');";
  23. $result = mysql_query ($query);
  24. $querys = "UPDATE users SET status='1' WHERE id='$id';";
  25. $results = mysql_query ($querys);
  26. }
  27. else
  28. {
  29. $blad++;
  30. switch($_FILES["Plik"]["error"][$i])
  31.  {
  32.  case 1: echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' jest większy niż zezwala konfiguracja serwera.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  33.  case 2: echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' jest wiekszy niż zezwala formularz.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  34.  case 3: echo('Przesłano tylko część pliku '.$_FILES["Plik"]["name"][$i].'.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  35.  case 4: echo('Plik '.$_FILES["Plik"]["name"][$i].' nie został przesłany.<br><br><a href="java script:history.go(-1)">Wstecz</a>');break;
  36.  }
  37. }
  38.  
  39.  }
  40.  else
  41.  {
  42. echo('Przesyłany plik '.$_FILES["Plik"]["name"][$i].' nie jest plikiem graficznym.<br><br><a href="java script:history.go(-1)">Wstecz</a>');
  43.  }
  44. } 
  45.  
  46. }
  47.  
  48. if($iloscplikow==0) { echo "Brak plików"; }
  49. else {
  50. if($brakbledu==$iloscplikow)
  51. {
  52. echo('<center>Twoje ogłoszenie jest już umieszczone.</center>');
  53. }
  54. }
  55.  
  56. ?>


--------------------
Tani hosting - Hekko.pl | PHP 5.2/5.3/5.4/5.5/5.6 | MySQL 5.5 |
Hosting już od 49 zł rocznie! Domena pl do każdego pakietu!
Go to the top of the page
+Quote Post
in5ane
post 17.05.2007, 05:54:55
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Działa extra smile.gif

Wielkie dzięki tongue.gif

Ten post edytował in5ane 17.05.2007, 05:58:41


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
jasiek
post 20.05.2007, 11:28:03
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 20.05.2007

Ostrzeżenie: (0%)
-----


aarambo.gif Drobny problem w tym widzę, jeżeli ktos zechce w drugim podejściu do przesłania zdjęć podać te same zdjęcia ponieważ jedno tylko bedzie takie ktore nie spełnia warunków to w bazie bedziesz miał zdublowane zdjęcia, moim zdaniem nalezało by w pierwszej kolejnosci spradzić czy wszytko jest ok i dopiero w drugim kroku dopisać do bazy danych, ale za pomysł dziękuje szukałem czegoś takiego cool.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 06:46