![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam napisany formularz, który wrzuca do bazy w mysql (a dokładniej do danej tablicy) wartości, poprzez Insert into oraz input type file. Wszystko działa ok przy wrzucaniu pojedynczych wartości do komórek w tabeli.
Teraz chcę zrobić tak, aby przy przysyłaniu pliku poprzez input, przesyłał do danej komórki w bazie kilka plików jednocześnie. Dodałem multiple name="files[]", lecz dana zmienna $plik wrzuca tylko i wyłącznie jedną wartość. Czego użyć, aby w danej komórce w tabeli pojawiło się kilka wartości za jednym przesyłem? Deklaracja zmiennej: $pliki = trim($_FILES['pliki']['name']); Wrzucenie pliku do tabeli: $query = "INSERT INTO nazwa_tabeli VALUES (0,NOW(),'wartosc_pierwsza','wartosc_druga','$pliki')" Wysłanie za pomocą input: <input type="file" multiple name="pliki[]" id="pliki" name="pliki" value="<?php if(!empty($pliki)) echo $pliki; ?>"/> Przy tego typu rozwiązaniu oczywiście występuje informacja, że $plik spodziewa się jednego parametru. Dziękuję za pomoc Ten post edytował ob1 9.04.2018, 20:00:13 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Czegoś tutaj nie rozumiem. Możesz pokazać większy kawałek kodu odpowiadający za przesłanie plików? I żebyśmy się dobrze zrozumieli, chcesz aby DWA pliki były zapisane w bazie w jednej komórce? Tak?
(Nie za bardzo rozumiem po co Ci value w tym input z file) Ten post edytował leonpro778 10.04.2018, 07:54:22 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedź: dokładnie, chcę aby więcej niż jedna wartość zostały zapisane w danej kolumnie - ich liczba ma zależeć od liczby przysłanych plików, wybranych przez użytkownika dzięki multiple w formularzu.
Cześć. Rozchodzi się o to, że mam stworzoną tabelę w mysql, która odpowiada za wyświetlanie przesłanych plików od administratora do danego użytkownika. Czyli działa to tak, że "administrator" wybiera użytkownika z listy (pobranej z bazy danych), do którego chce przesłać dane pliki (jpg, pdf itd, bez ustalonej z góry liczby, czy to 1 plik czy 5) - użytkownik jest pobierany przez get 'user'. Dochodzimy więc do ostatecznego etapu, w którym administrator wybrał użytkownika i dzięki przyciskowi ładującemu plik z dysku "przeglądaj" wybiera za pomocą np ctrl klika plików z dysku, które chce przesłać danemu użytkownikowi. Oczywiście w momencie przesłania jednego pliku nie ma problemu, ponieważ wtedy w kolumnie tabeli "pliki" pojawia się adres pliku, który został zapisany na dysku. Problem jest taki, jak to zrobić aby w danej kolumnie zapisać kilka plików jednocześnie. W jaki sposób to zrobić, a raczej czy można do danej kolumny wrzucić kilka wartości (więcej niż jedną) ? W formularzu jest opcja multiple, pod wybór kilku plików jednocześnie. Pytanie, jak zmodyfikować php? Jak to ugryźć (chociaż teoretycznie) ?
Po przeróbkach poniższy fragment kodu, a dokładniej echo wyświetla przesłaną nazwę plików prawidłowo, lecz dokładnie to samo muszę wstawić do kolumny "pliki" w mysql, poprzez zmienną "tablica_z_plikami" .....
..... Ten post edytował ob1 10.04.2018, 12:39:02 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 445 Pomógł: 3 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Skoro pobierasz z formularza tabele to zapis musi być w pętli który wykonujesz Np: użyj pętli for wtedy będzie ci powtarzał zapytanie i zapisywał więcej plików .
Ten post edytował mrk9109 10.04.2018, 14:03:36 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
ok dzięki, tylko który fragment kodu mam wziąć w pętlę?
Ten post edytował ob1 11.04.2018, 07:38:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 445 Pomógł: 3 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
zapytanie musi być podam ci przykład u mnie z kodu w którym wgrywam kilka zdjęć na raz .
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
ok, a w jaki sposób powinna być zadeklarowana zmienna $pliki?, ponieważ jest jakiś błąd i wyskakuje info z else
Ten post edytował ob1 12.04.2018, 09:37:40 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wrzuć ten błąd tutaj.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Efekt: cały czas wywyala "Wystąpił problem przy przesyłaniu plików." Ten post edytował ob1 12.04.2018, 10:08:27 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 17.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Wstawiłem, efekt informacje:
"string(20) "test-obrazek-dwa.jpg" " kolumna pliki w bazie jest typu blob. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 445 Pomógł: 3 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
nie do końca to wykorzystałeś bo np: move_uploaded_file masz dalej po za pętlą
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 17.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
mrk: move_uploaded_file wrzuciłem w pętlę i nic się nie zmieniło
wxm: nie wiem gdzie jest błąd. Będę wdzięczny za podpowiedź. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przecież błąd wskazuje na to, że skrypt wywala się już przy pierwszym IF'ie (drugim licząc SUBMIT). Tam szukaj błędu.
Zobacz co masz:
Tutaj sprawdzasz: Jak w stringu ma być COŚ z indeksem NAME ![]() Zamień tą powyższą linijkę na:
i szukaj dalej Ten post edytował leonpro778 12.04.2018, 19:15:17 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Zamieniłem na $pliki = $_FILES['pliki'] oraz if (isset($pliki)) i efekt jest taki:
array(5) { ["name"]=> string(17) "test-obrazek2.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(32) "/alt/var/lib/php/pngis/phpL6C0r5" ["error"]=> int(0) ["size"]=> int(6194) } |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
...oraz if (isset($pliki)) i efekt jest taki: Tego akurat nie zmieniaj. Zostaw jak było, czyli: array(5) { ["name"]=> string(17) "test-obrazek2.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(32) "/alt/var/lib/php/pngis/phpL6C0r5" ["error"]=> int(0) ["size"]=> int(6194) } Tutaj przecież widzisz, że masz już tablicę z indeksem "name" ![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Zostawiam:
$pliki = $_FILES["pliki"]; if (isset($pliki['name'])){ efekt: array(5) { ["name"]=> string(17) "test-obrazek2.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(32) "/alt/var/lib/php/pngis/phpFoK1qP" ["error"]=> int(0) ["size"]=> int(6194) } Kod:
Ten post edytował ob1 12.04.2018, 20:19:29 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
No i na czym Ci się zatrzymuje? Masz strasznie dużo tych if'ów, dopisz sobie jakieś else do każdego z nich tak abyś mógł sprawdzić, gdzie skrypt się zatrzymuje bo po przejściu pierwszego IF'a nie będziesz miał żadnych innych komunikatów (oczywiście nie licząc błędów PHP).
if ($_FILES['pliki']['error'] == 0) { Pamiętaj jeszcze o tej linijce. Masz mieć KILKA plików dlatego tutaj już robisz pętlę FOREACH. Do swojego inputa z plikami name zmień na name="pliki[]" |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 20.02.2018 Ostrzeżenie: (0%) ![]() ![]() |
Info:
problem dotyczy tego $target = UPLOADPATH . $pliki; twierdząc, że chcę zamienić tablicę na string "array(5) { ["name"]=> string(17) "test-obrazek2.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(32) "/alt/var/lib/php/pngis/phpJdj6iT" ["error"]=> int(0) ["size"]=> int(6194) } Notice: Array to string conversion in /alt/home/........php on line 111" input jest taki: <input type="file" name="pliki[]" multiple="multiple"/> <br/><br/>
Efekt: informacja: array(5) { ["name"]=> array(2) { [0]=> string(16) "test-obrazek.jpg" [1]=> string(17) "test-obrazek2.jpg" } ["type"]=> array(2) { [0]=> string(10) "image/jpeg" [1]=> string(10) "image/jpeg" } ["tmp_name"]=> array(2) { [0]=> string(32) "/alt/var/lib/php/pngis/phpXDY1it" [1]=> string(32) "/alt/var/lib/php/pngis/phpFFM8Jq" } ["error"]=> array(2) { [0]=> int(0) [1]=> int(0) } ["size"]=> array(2) { [0]=> int(12765) [1]=> int(6194) } } Ten post edytował ob1 12.04.2018, 20:59:00 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:33 |