• 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

0 głosów
166 wizyt
pytanie zadane 25 maja 2017 w PHP, Symfony, Zend przez Turqus Obywatel (1,380 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,720 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,380 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,720 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,380 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 Maniak (65,670 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,380 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 Maniak (65,670 p.)

Zamień tamto na tę linię:

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

U ciebie to będzie:

(...)<img src=\"newfolder/(...)
komentarz 28 maja 2017 przez Chess Maniak (65,670 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,380 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 Maniak (65,670 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,380 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 Maniak (65,670 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,380 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 Maniak (65,670 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ź 152 wizyt
0 głosów
1 odpowiedź 96 wizyt
0 głosów
1 odpowiedź 52 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

64,244 zapytań

110,636 odpowiedzi

231,943 komentarzy

46,993 pasjonatów

Przeglądających: 256
Pasjonatów: 13 Gości: 243

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...