Skocz do zawartości

switch case a upload zdjęć


qark

Rekomendowane odpowiedzi

Witam

Chciałem użyć funkcji switch case do uploadu zdjęć. W zaleznosci od parametru "name" pliki byly by zapisywane w roznych kolumanch ale w jednym wierszu tabeli danych Mam problem nie wiem jak wskazać parametr name aby funkcja wykonywała się różnie w zależności od jego warości "plik1", "plik2" i "plik3"

Poniżej zamieszczam kod skryptu i formularza.

switch ( ??????wskazanie wartośi name???){

case 'plik1':
if (is_uploaded_file($_FILES[plik1][tmp_name])
{
if ($_FILES['plik']['error'] != 0)
      {
     $error['miniaturka'] = 'Wystąpił błąd przy ładowaniu pliku.';
     echo $_FILES['plik']['error'];
      }
   if ($_FILES['plik']['size'] > 104857600)
      {
     $error['miniaturka'] = 'Maksymalny rozmiar ładowanego pliku to 3 MB.';
      }
    $rozszerzenie = substr($_FILES['plik']['name'],-4);
   switch (strtolower($rozszerzenie))
    {
   case '.jpg':
     $rozszerzenie = 'jpg';
     $typ = 1;
     break;

   case '.jpeg':
     $rozszerzenie = 'jpg';
     $typ = 1;
     break;

   case '.gif':
     $rozszerzenie = 'gif';
     $typ = 1;
     break;

   case '.png':
     $rozszerzenie = 'png';
     $typ = 1;
     break;


   default:
     $error['plik'] = 'Możesz dodac jedynie pliki z rozszerzeniami .jpg .gif .png';
     break;

    }

   $nazwa = 0;
   while (file_exists('miniaturka/'. $nazwa .'.'. $rozszerzenie))
    {
     $nazwa++;
    }

   $miniaturka = 'miniaturka/'.$nazwa.'.'. $rozszerzenie;

   if (!move_uploaded_file($_FILES['plik']['tmp_name'], $miniaturka))
    {
     $error['plik'] = 'Błąd przy ładowaniu pliku.';
    }
   }

break;	
} 

A formularz wygladal by tak

<tr><td style=\"font-family:verdana;font-size:12px;\" rowspan=\"2\">Foto:</td><td><input type=\"file\" name=\"plik1\" size=\"20\" value=\"".$_POST['plik1']."\" /></td></tr>

<tr><td class=\"dodaj\">{$error['zdanie']}</td></tr>
<tr><td style=\"font-family:verdana;font-size:12px;\" rowspan=\"2\">Foto duze:</td><td><input type=\"file\" name=\"plik2\" size=\"20\" value=\"".$_POST['plik2']."\" /></td></tr>

<tr><td class=\"dodaj\">{$error['zdanie']}</td></tr>
<tr><td style=\"font-family:verdana;font-size:12px;\" rowspan=\"2\">Miniaturka:</td><td><input type=\"file\" name=\"plik3\" size=\"20\" value=\"".$_POST['plik3']."\" /></td></tr>

Sprawdź Kod SWIFT banków w Polsce np. SWIFT PKO BP. Kod SWIFT jest potrzebny do przelewów zagranicznych i krajowych przelewów walutowych

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety nie udało mi się wprowadzić tego pomysłu w życie, błędu nie wyświetla ale sciezki do plików nie zapisuja sie w bazie danych.

Walcze z tym dalej, prosze o jakieś sugestie, podpowiedzi.

switch ($_FILES){

case 'plik1':

	$plik_tmp1 = $_FILES['tmp_name'];
	$plik_nazwa1 = $_FILES['name'];

		if (is_uploaded_file($plik_tmp1))
				{
				move_uploaded_file($plik_tmp1, "foto/$plik_nazwa1");

				$zdjecie = 'foto/'.$plik_nazwa1;

			}
break;

case 'plik2':

	$plik_tmp2 = $_FILES['tmp_name'];
	$plik_nazwa2 = $_FILES['name'];

		if (is_uploaded_file($plik_tmp2))
				{
				move_uploaded_file($plik_tmp2, "foto/$plik_nazwa2");

				$duzefoto = 'duzefoto/'.$plik_nazwa2;
				}

break;
case 'plik3':

	$plik_tmp3 = $_FILES['tmp_name'];
	$plik_nazwa3 = $_FILES['name'];

		if (is_uploaded_file($plik_tmp3))
				{
				move_uploaded_file($plik_tmp3, "foto/$plik_nazwa3");

				$miniaturka = 'miniaturka/'.$plik_nazwa3;
			}



break;




}/*koniec switch*/

 if (!$error)
 {
  $typ = 1;
   if (!mysql_query('insert into `plotki` (`tytul`, `zdanie`, `miniaturka`, `zdjecie`, `gorace`, `artykul`, `typ`, `createtime`) values (  \''.mysql_value($_POST['tytul']).'\',\''.mysql_value($_POST['zdanie']).'\',\''.$zdjecie. '\',\''.$duzefoto. '\',\''.$miniaturka. '\', \''.mysql_value($_POST['artykul']).'\',\''.$typ. '\',now())'))
   {
     $error['blad'] = 'Nie można dodać pozycji do bazy danych.';
   }
   else
   {
     header("Location: [url="https://www.0plotek.pl/panel/zatwierdz/&quot%3b%29;"]https://www.0plotek.pl/panel/zatwierdz/");[/url]
   }
 }

Sprawdź Kod SWIFT banków w Polsce np. SWIFT PKO BP. Kod SWIFT jest potrzebny do przelewów zagranicznych i krajowych przelewów walutowych

Odnośnik do komentarza
Udostępnij na innych stronach

Zgubiłeś w tablicy nazwę przekazywaną z formularza

nie

$_FILES['name']

tylko

$_FILES['plik1']['name'];

$_FILES['plik1']['tmp_name'];

$_FILES['plik1']['error'];

$_FILES['plik1']['type'];

itd

I w ostatnim przykładzie brakuje Ci obsługi błedów.

Ten IF stwierdzi że nigdy nie ma błędu.

if (!$error)

.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za kolejną wskazówkę, narazie nie udało mi się tego zrobic, dalej wszystko oprocz src do obrazkow do bazy sie dodaje,

chmody sa ok, ale obrazki sie nie uploaduja. To pewnie z konstrukcja tego switch casa cos jest nie tak.

Ma ktos lepszy pomysl niz switch case zeby zuploadowac na serwer i zapisac sciezki w jednym wierszu bazy dla 3 obrazkow na raz?

Poniżej kod po poprawkach, może tam tkwi jakiś mały błąd

	
switch ($_FILES){

case $_FILES['plik1']:





	$plik_tmp1 = $_FILES['plik1']['tmp_name'];
	$plik_nazwa1 = $_FILES['plik1']['name'];

		if (is_uploaded_file($plik_tmp1))
				{
				move_uploaded_file($plik_tmp1, "foto/$plik_nazwa1");

				$zdjecie = 'foto/'.$plik_nazwa1;

			}
break;

case $_FILES['plik2']:

	$plik_tmp2 = $_FILES['plik2']['tmp_name'];
	$plik_nazwa2 = $_FILES['plik2']['name'];

		if (is_uploaded_file($plik_tmp2))
				{
				move_uploaded_file($plik_tmp2, "duzefoto/$plik_nazwa2");

				$duzefoto = 'duzefoto/'.$plik_nazwa2;
				}





break;
case $_FILES['plik3']:




	$plik_tmp3 = $_FILES['plik3']['tmp_name'];
	$plik_nazwa3 = $_FILES['plik3']['name'];

		if (is_uploaded_file($plik_tmp3))
				{
				move_uploaded_file($plik_tmp3, "miniaturka/$plik_nazwa3");

				$miniaturka = 'miniaturka/'.$plik_nazwa3;
			}



break;




}/*koniec switch*/

 if (!$error)
 {
  $typ = 1;
   if (!mysql_query('insert into `plotki` (`tytul`, `zdanie`, `miniaturka`, `zdjecie`, `gorace`, `artykul`, `typ`, `createtime`) values (  \''.mysql_value($_POST['tytul']).'\',\''.mysql_value($_POST['zdanie']).'\',\''.$zdjecie. '\',\''.$duzefoto. '\',\''.$miniaturka. '\', \''.mysql_value($_POST['artykul']).'\',\''.$typ. '\',now())'))
   {
     $error['blad'] = 'Nie można dodać pozycji do bazy danych.';
   }

Sprawdź Kod SWIFT banków w Polsce np. SWIFT PKO BP. Kod SWIFT jest potrzebny do przelewów zagranicznych i krajowych przelewów walutowych

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz to ja sam nie wiem w jakim celu chciałeś zastosować switch?

Jezeli chcesz za jednym razem uploadowac wszystkie pliki, to switch tu jest nie na miejscu. Switch wybiera jedną mozliwość.

Usuń wszystkie komendy i klamry dotyczące switcha i operacja wykona się dla wszystkich plików po kolei.

Ale w takiej postaci nie możesz zostawić ten kod, bez obsługi błedów i sprawdzania co zostaje uploadowane, czy wogule zostaje przesylany jakiś plik, czy kopiowanie do katalogu przebiega pomyslnie itp.

Na potrzeby tych trzech plikow można już napisać jedną funkcję, aby nie powielać kodu trzy razy.

Na czas projektowania wyswietlaj sobie zawartość zmiennych i tablic.

Np tablice FILES:

print "\r\n<pre>\r\n";

print_r($_FILES);

print "\r\n</pre>\r\n";

Przed wykonaniem zapytania do bazy też możesz sobie wyświetlić całe to zapytanie i bedziesz wiedział dokladnie co zostaje zapisane w bazie.

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności