• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP - Wrzucanie kilku zdjęć na raz

VPS Starter Arubacloud
0 głosów
781 wizyt
pytanie zadane 25 maja 2017 w PHP przez Turqus Obywatel (1,420 p.)
Cześć jak zrobić wrzucanie kilku zdjęć na raz do bazy do danej oferty?

Zrobić 2 tabelki

Jedna odpowiedzialna za oferte

Druga odpowiedzialna za galerie

W tabelce galeria zrobić 10 pól w które będą zapisywane zdjęcia po kolei, że jak na przyklad 3 tylko chce wrzucić to zapiszą się w pierwszych 3 kolumnach. i mozna max 10 zdjec wrzucic

Coś na takiej zasadzie?

2 odpowiedzi

+1 głos
odpowiedź 25 maja 2017 przez Boshi VIP (100,240 p.)
Nie!

Robisz 2 tabele polaczone 1:n

coś na zasadzie  product[id,name itd] photoProduct[id, id_product, src]

Zapisujesz w transakcji..  co daje ci możliwość dodania  jednego rekordu do product i np 6 rekordów do tabeli photoPropduct.
komentarz 25 maja 2017 przez Turqus Obywatel (1,420 p.)

Okej, a jak z dodawaniem?

Mam wstępnie tak:

            <button type="submit" class="btn btn-success">Dodaj</button>

Tylko po dodaniu, moge raz, jakby to zrobić zeby po wybraniu zdjęc jedno po drugim ustawiało się nizej w kolejce do wrzucenia?

 

2. Pyt

Wtedy jak wysłanie do bazy będzie wyglądać? wczesniej mialem jeden insert, a teraz tyle ile razy zdjęcie się dodało tyle razy insert pójdzie z argumentem do funkcji z inna nazwą zdjęć tak?

komentarz 25 maja 2017 przez Boshi VIP (100,240 p.)
1 nie rozumiem pytania kompletnie.

2 dwa inserty, jeden do tabeli product, drugi do photoProduct.

albo

https://stackoverflow.com/questions/5178697/mysql-insert-into-multiple-tables-database-normalization
komentarz 25 maja 2017 przez Turqus Obywatel (1,420 p.)
Chodzi mi o to że tworzę ofertę do której chce wrzucić 6 zdjęć

na ta chwile mam sposób taki że mam buttona przegladaj wybieram 1 plik (zdjecie) i wiecej sie nie da. I chodzi o to jak zrobic zebym mogl sobie przy tworzeniu oferty dodawac zdjecia tak z 6 od razu niz pozniej pojedynczo jakos je dodawac.
–1 głos
odpowiedź 25 maja 2017 przez Chess Szeryf (76,710 p.)
edycja 25 maja 2017 przez Chess
<form enctype="multipart/form-data" action="" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    Send this file: <input name="userfile[]" type="file" multiple/>
    <input type="submit" value="Send File" />
</form>

<?php


if(!isset($_FILES['userfile'])){
	//echo 'nie ma tego user FILE ';
}else{ 
	$uploaddir = 'C:/xampp/htdocs/turqus/directoryd/';
	for($i=0;$i<=1;$i++){ 
		if(!array_key_exists($i,$_FILES['userfile']['name'])){
			//echo 'nie isteniej taki klucz';
		}else{ 
			$uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
			
		if(file_exists($uploaddir.$_FILES['userfile']['name'][$i])){
			echo 'nazwa zajeta/istnieje, wiec nie dodano pliku na server, zmien nazwe i sporbuj ponownie.';
			exit;
		}else{ 
			
			if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {

				echo 'pomyslnie';
			}else{ 
				echo 'nei pomyslnie';
			}
		}
		if(!array_key_exists($i,$_FILES['userfile']['name'])){
			//echo 'nie isteniej taki klucz';
		}else{ 
			file_put_contents("{$_FILES['userfile']['name'][$i]}.txt",print_r($_FILES['userfile']['name'][$i],true));
			echo '<br />'."<img src=\"".file_get_contents("{$_FILES['userfile']['name'][$i]}.txt")."\"/>";
		}
		}
	}	 
}


?>

Po naciśnięciu przeglądaj wybrać 6 zdjęć możesz w ten sposób, że wpiszesz nazwę pliku w cudzysłowach oraz oddzielisz je spacją. Przykład:

"rabbit.png" "rabbit4.png"

Edit: zedytowałem.

komentarz 28 maja 2017 przez Turqus Obywatel (1,420 p.)

Siema mam ten kod, ustawilem sciezke, wybralem pliki do wrzucenia i przenosząc tworzy sie plik txt ale nie przenosi zdjecia , co to moze byc? :(

i mam cos takiego:

 

W razie w daje kod:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Source code generated using layoutit.com">
    <meta name="author" content="LayoutIt!">
  </head>
  <body>
      <form enctype="multipart/form-data" action="" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    Send this file: <input name="userfile[]" type="file" multiple/>
    <input type="submit" value="Send File" />
</form>
 
</div>
  </body>
</html>

<?php
if(!isset($_FILES['userfile'])){
    echo 'nie ma tego user FILE ';
}else{ 
    $uploaddir = 'C:/xampp/htdocs/nauka/newfolder/';
    for($i=0;$i<=1;$i++){ 
        if(!array_key_exists($i,$_FILES['userfile']['name'])){
            echo 'nie isteniej taki klucz';
        }else{ 
            $uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
             
        if(file_exists($uploaddir.$_FILES['userfile']['name'][$i])){
            echo 'nazwa zajeta/istnieje, wiec nie dodano pliku na server, zmien nazwe i sporbuj ponownie.';
            exit;
        }else{ 
             
            if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
 
                echo 'pomyslnie';
            }else{ 
                echo 'nei pomyslnie';
            }
        }
        if(!array_key_exists($i,$_FILES['userfile']['name'])){
           echo 'nie isteniej taki klucz';
        }else{ 
            file_put_contents("{$_FILES['userfile']['name'][$i]}.txt",print_r($_FILES['userfile']['name'][$i],true));
            echo '<br />'."<img src=\"".file_get_contents("{$_FILES['userfile']['name'][$i]}.txt")."\"/>";
        }
        }
    }    
}
?>

 

komentarz 28 maja 2017 przez Chess Szeryf (76,710 p.)

Zamień tamto na tę linię:

(...)<img src=\"directoryd/(...)

U ciebie to będzie:

(...)<img src=\"newfolder/(...)
komentarz 28 maja 2017 przez Chess Szeryf (76,710 p.)
<form enctype="multipart/form-data" action="" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    Send this file: <input name="userfile[]" type="file" multiple/>
    <input type="submit" value="Send File" />
</form>
 
<?php
 
 
if(!isset($_FILES['userfile'])){
    //echo 'nie ma tego user FILE ';
}else{ 
    $uploaddir = 'C:/xampp/htdocs/turqus/directoryd/';
    for($i=0;$i<=count($_FILES['userfile']['name'])-1;$i++){ 
        if(!array_key_exists($i,$_FILES['userfile']['name'])){
            //echo 'nie isteniej taki klucz';
        }else{ 
            $uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
             
        if(file_exists($uploaddir.$_FILES['userfile']['name'][$i])){
            echo 'nazwa zajeta/istnieje, wiec nie dodano pliku na server, zmien nazwe i sporbuj ponownie.';
            exit;
        }else{ 
             
            if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
 
                echo 'pomyslnie';
            }else{ 
                echo 'nei pomyslnie';
            }
        }
        if(!array_key_exists($i,$_FILES['userfile']['name'])){
            //echo 'nie isteniej taki klucz';
        }else{ 
            file_put_contents("{$_FILES['userfile']['name'][$i]}.txt",print_r($_FILES['userfile']['name'][$i],true));
            echo '<br />'."<img src=\"directoryd/".file_get_contents("{$_FILES['userfile']['name'][$i]}.txt")."\"/>";
        }
        }
    }    
}
 
 
?>

 

komentarz 28 maja 2017 przez Turqus Obywatel (1,420 p.)

Ok wrzuca i przenosi juz tylko nie wyswietla, blad z czytaniem pliku?

        }else{ 
            file_put_contents("{$_FILES['userfile']['name'][$i]}.txt",print_r($_FILES['userfile']['name'][$i],true));
            echo '<br />'."<img src=\"newfolder".file_get_contents("{$_FILES['userfile']['name'][$i]}.txt")."\"/>";
        }
        }

 

I ogolnie pytanie mam, gdzie zmienne sie tu zapisuja w postaci nazwy i rozszerzenia?

$_FILES['userfile'] tutaj?

komentarz 28 maja 2017 przez Chess Szeryf (76,710 p.)
$_FILES['userfile']['name'][$i]

Powyższy kod ma za zadanie wyświetlić nazwę pliku. Jeśli chcesz to sprawdzić to napisz tak:

print_r($_FILES);

Jeśli chodzi o nie wyświetlanie się np. obrazków to weź skopiuj mój ostatni kod, ponieważ lekko go zmodyfikowałem. Pozmieniaj w nim tylko ścieżki do plików na swoje.

komentarz 30 maja 2017 przez Turqus Obywatel (1,420 p.)

Tam jest taki problem ze ustawiona jest pętla, na iles wykonań, nie da rady zrobic tak żeby zliczało ilosc przesłanych zdjeć i tyle razy by ta petla sie wykonala? Bo aktualnie jest tak ze wrzucam 3zdjecia a wrzuca sie 2, a jak dam 6 to tez mniej sie wrzuci

Zrobilem aktualnie na 11 razy, a da rade zrobic tak by zczytywalo ile zdjec?

if(!isset($_FILES['userfile'])){
    echo 'nie ma tego user FILE ';
}else{ 
    $uploaddir = 'C:/xampp/htdocs/nauka/newfolder/';
    for($i=0;$i<=10;$i++){ 
        if(!array_key_exists($i,$_FILES['userfile']['name'])){
            echo 'nie isteniej taki klucz';
        }else{ 
            $uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
			echo basename($_FILES['userfile']['name'][$i]) . "<br />";
             
        if(file_exists($uploaddir.$_FILES['userfile']['name'][$i])){
            echo 'nazwa zajeta/istnieje, wiec nie dodano pliku na server, zmien nazwe i sporbuj ponownie.';
            exit;
        }else{ 
            if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
                echo 'pomyslnie';
            }else{ 
                echo 'nei pomyslnie';
            }
        }
        }
    }    
}

 

komentarz 30 maja 2017 przez Chess Szeryf (76,710 p.)

Przecież wkleiłem ci poprawiony kod w moim przedostatnim poście. Weź skopiuj całość wklej do siebie i pozmieniaj ścieżki. A linię, którą poprawiłem to:

for($i=0;$i<=count($_FILES['userfile']['name'])-1;$i++){ /* ... */ }

 

komentarz 30 maja 2017 przez Turqus Obywatel (1,420 p.)
hehe dzieki jestes wielki :D

Jesli bede chcial wrzucac te zdjecia teraz do bazy to moge w tym miejscu

            $uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
            echo basename($_FILES['userfile']['name'][$i])."<br/>";

gdzie echo otworzyc polaczenie i wrzucac wraz z petla zdjecia ?
komentarz 30 maja 2017 przez Chess Szeryf (76,710 p.)
edycja 30 maja 2017 przez Chess

W ostatnim else mniej więcej będzie taki kod (ścieżka do pliku wysyłana do bazy):

$query = $link->query("INSERT INTO ZDJECIA values(null,\"{$_FILES['userfile']['name'][$i]}\");");

Zabezpiecz skrypt przed dublowaniem się rekordów. Możesz to zrobić np. zakładając klucz do tabeli UNIQUE lub możesz to zrobić innym sposobem bez tego klucza. Po prostu musisz sprawdzić, czy taka ścieżka do zdjęcia już jest bazie czy nie.

Zamiast exit napisz return lub nie pisz tam nic.

 

Podobne pytania

0 głosów
1 odpowiedź 379 wizyt
0 głosów
0 odpowiedzi 127 wizyt
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 12 stycznia 2020 w PHP przez halotelefonek Bywalec (2,410 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...