Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Upload plików na serwer i zapis ich do MySQL
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


Witam serdecznie,
Chcę zrobić formularz poprzez który będzie można dodawać informacje do bazy danych oraz jednocześnie przesyłać pliki (i zapisywać je do bazy danych MySQL) - jednocześnie.

Zrobiłem coś takiego:
  1. <?
  2.  
  3. if ($_GET[ips] == "dodajklienta" && $_GET[p] == "zapisdanych"){
  4. echo"<font color=\"#008000\"><p align =\"center\">Dane zostały zapisane do systemu!!</p></font><br/>";
  5.  
  6. $path_thumbs = "temp"; // katalog temp
  7. $logo_tmp = $_FILES["umowa"]["tmp_name"];
  8. $logo_name = $_FILES["umowa"]["name"];
  9. $logo_size = $_FILES["umowa"]["size"];
  10. $logo_type = $_FILES["umowa"]["type"];
  11. $path_thumbs = "temp";
  12. $losowa_nazwa = md5(microtime());
  13. $pobierz_rozszerzenie = explode ('.', $logo_name);
  14. $rozszerzenie = $pobierz_rozszerzenie[count($pobierz_rozszerzenie)-1];
  15. $thumb_path = substr($logo_tmp,0,strrpos($logo_tmp, '.')).'_min.'.$rozszerzenie;
  16. $PSize = filesize($thumb_path);
  17. $mysqlPicture = addslashes(fread(fopen($Picture1, "r"), $PSize));
  18.  
  19.  
  20. $SQL = "INSERT INTO baza (`id` ,`imie_nazwisko` ,`nazwa_firmy`, `adres_firmy`, `kod_miasto_firmy`, `pesel`, `nip`, `nr_dowodu`, `dowod_wydany_przez`, `zamieszkaly`, `telefon_kontaktowy`, `email`, `notatka` , `firma_wlasciciel`, `plik1`) VALUES (NULL , '$_GET[imie_nazwisko]', '$_GET[nazwa_firmy]', '$_GET[adres_firmy]', '$_GET[kod_miasto_firmy]', '$_GET[pesel]', '$_GET[nip]', '$_GET[nr_dowodu]', '$_GET[dowod_wydany_przez]', '$_GET[zamieszkaly]', '$_GET[telefon_kontaktowy]', '$_GET[email]', '$_GET[notatka]', '$_SESSION[pfirma]', '$mysqlPicture');";
  21. $res = mysql_query($SQL);
  22. }
  23. ?>
  24. <form action="" method="get">
  25. <table align = "center">
  26. <input type="hidden" name="p" value="zapisdanych" />
  27. <input type="hidden" name="ips" value="dodajklienta" />
  28. <tr><td>Imię i nazwisko:</td><td><input type="text"  name="imie_nazwisko" value="" size="35" maxlength="40"/></td></tr>
  29. <tr><td>Nazwa firmy:</td><td><input type="text"  name="nazwa_firmy" value="" size="35" maxlength="40"/></td></tr>
  30. <tr><td>Adres firmy:</td><td><input type="text"  name="adres_firmy" value="" size="35" maxlength="30"/></td></tr>
  31. <tr><td>Miasto i  kod pocztowy:</td><td><input type="text" name="kod_miasto_firmy" value="" size="35" maxlength="30"/></td></tr>
  32. <tr><td>Pesel:</td><td><input type="text" name="pesel" value="" size="35" maxlength="11"/></td></tr>
  33. <tr><td>Nip:</td><td><input type="text"  name="nip" value="" size="35" maxlength="14"/></td></tr>
  34. <tr><td>Nr. dowodu:</td><td><input  type="text" name="nr_dowodu" value="" size="35" maxlength="12"/></td></tr>
  35. <tr><td>Wydany przez:</td><td><input  type="text" name="dowod_wydany_przez" value="" size="35" maxlength="35"/></td></tr>
  36. <tr><td>Zamieszkały:</td><td><input  type="text" name="zamieszkaly" value="" size="35" maxlength="65"/></td></tr>
  37. <tr><td>Telefon:</td><td><input  type="text" name="telefon_kontaktowy" value="" size="35" maxlength="20"/></td></tr>
  38. <tr><td>Email:</td><td><input  type="text" name="email" value="" size="35" maxlength="35"/></td></tr>
  39. <tr><td>Notatka:</td><td><textarea name="notatka" cols="31" rows="10"></textarea></td></tr>
  40. <tr><td>Skan umowy:</td><td><input name='umowa' type='file'  /></td></tr>
  41. <tr><td>Plik2:</td><td><input name='plik2' type='file'  /></td></tr>
  42. <tr><td>Plik3:</td><td><input name='plik3' type='file'  /></td></tr>
  43. <input type=hidden name=abc value=abc>
  44. <input type='hidden' name='MAX_FILE_SIZE' value='15424000'>
  45. <tr><td></td><td><input type="button"  value="Zapisz"/></td></tr></form>
  46. </table>
  47. <?
  48. }
  49. ?>


Chciałbym żeby skrypt:
1. zapisał dane wprowadzone przez użytkownika
2. zapisał plik dołączony do formularza do bazy danych (mam pola w MySQL typu longbloob).

Próbuje z pobraniem pliku do katalogu tymczasowego na serwerze i zapisem do bazy, ale coś nie działa... skrypt zapisuje tylko dane wprowadzone przez użytkownika (bez plików).

Wiecie może co jest źle zrobione?


Łukasz

Ten post edytował northwest 18.05.2009, 22:12:53
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie zapisuj plików do bazy. Jest to nieoptymalne i bez sensu.

Zapisuj pliki w osobnym katalogu, a w bazie tylko ścieżkę/nazwę.

Cytat
skrypt zapisuje tylko dane wprowadzone przez użytkownika (bez plików).

Może rozmiar przekracza max_packet_size. Ciężko powiedzieć. Ale nie będę się nad tym rozwodził, bo rozwiązanie jest nieoptymalne. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
northwest
post
Post #3





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


rozmiar pliku nie przekracza maksymalnego rozmiaru...

Tylko w moim przypadku muszę mieć te dane w bazie... sad.gif wiesz może jak to zrobić?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tylko w moim przypadku muszę mieć te dane w bazie...

Uzasadnij ten przypadek, bo póki co, nie ma on żadnego uzasadnienia.

Cytat
wiesz może jak to zrobić?

Zdumpuj sobie to zapytanie i spróbuj wykonać ręcznie, np. przez konsolkę.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
northwest
post
Post #5





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


te zmienne $_FILE są jakby puste... plik nie przechodzi :/

chce mieć te dane w bazie ponieważ moja aplikacja będzie pracowała na różnnym poziomie (localhost,net), aplikacje c# i php...smile.gif

bardzo zależy mi na poprawieniu ww kodu...
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
chce mieć te dane w bazie ponieważ moja aplikacja będzie pracowała na różnnym poziomie (localhost,net), aplikacje c# i php...

Mimo wszystko - baza, to baza, a nie system plików. Już w NTFS jest baza - ale mówimy o dwóch różnych przypadkach; NTFS jest zoptymalizowane do przechowywania w bazie plików MNIEJSZYCH niż 1 KiB, reszta siedzi sobie w klastrach, a w MFT tylko informacje, gdzie jest plik. Ucz się od ekspertów, wiele głów myślało nad FS, a nie tylko kilka. ;]

Jeśli chcesz konkretnie w Twoim zastosowaniu, to możesz przecież via HTTP/FTP pobierać, a będzie efektywniej; zapytania na pewno będą krócej wykonywane.

Cytat
te zmienne $_FILE są jakby puste... plik nie przechodzi :/

A co z formularzem? Na pewno są takie same nazwy pól?

edit@down: +odpowiedni enctype.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zapoznaj sie dokladnie z tym linkiem:
http://pl2.php.net/manual/pl/features.file...post-method.php
bo twoj formularz jest daleki od formularza, ktory powinien wysylac pliki. Przyjrzyj sie szczegolnie konstrukcji <form ....

POzatym formularz wysylaj metodą post a nie get, a juz w szczegolnosci gdy mają byc przesylane pliki


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 19.08.2025 - 09:04