Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Dodawanie obrazka do bazy
Fonev
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (0%)
-----


Witam próbuje zrobić prosty formularz dodający do bazy pytania, niektóre z obrazkami, a inne bez.
Wyskakuje mi błąd przy checkboxa i nie wiem co z tym fantem już poradzić. Druga sprawa to taka, że nie chce mi dodać do bazy obrazków...
obrazek w bazie jest typu mediumblob .

Mój formularz:

  1.  
  2. <table><tr bgcolor="#dadada"><td>Pytanie</td></tr>
  3. <Form action="dodpyt.php" method="POST" ENCTYPE="multipart/form-data"><tr><td><input type="text" name="pytanie" size="50" value=""></td></tr>
  4. <tr bgcolor="#dadada"><td>Odpowiedz A</td></tr>
  5. <tr><td><input type="text" name="odpA" value="" size="50"></td></tr>
  6. <tr bgcolor="#dadada"><td>Odpowiedz B</td></tr>
  7. <tr><td><input type="text" name="odpB" value="" size="50"></td></tr>
  8. <tr bgcolor="#dadada"><td>Odpowiedz C</td></tr>
  9. <tr><td><input type="text" name="odpC" value="" size="50"></td></tr>
  10. <tr bgcolor="#dadada"><td>Odpowiedz D</td></tr>
  11. <tr><td><input type="text" name="odpD" value="" size="50"></td></tr>
  12. <tr bgcolor="#dadada"><td>Poprawna</td></tr>
  13. <tr><td> A - <input type="checkbox" name="aa" value="1"> B - <input type="checkbox" name="bb" value="1"> C - <input type="checkbox" name="cc" value="1"> D - <input type="checkbox" name="dd" value="1"></td></tr>
  14. <tr bgcolor="#dadada"><td> Obrazek: </td></tr>
  15. <tr><td><INPUT type="file" name="obrazek">
  16. <tr bgcolor="#dadada"><td>Punkty</td></tr>
  17. <tr><td><input type="text" name="pkt" value=""></td></tr>
  18. <tr bgcolor="#dadada"><td>Z jakiego kursu:</td></tr>
  19. <tr><td><input type="text" name="nr_kursu" value=""></td></tr>
  20. <tr><td><input type="submit" name="Dodaj" value="Dodaj"></tr></td>
  21. </form></table>
  22.  
  23.  



i kod w php którym próbuje to doać do bazy...

  1.  
  2. <?php
  3.  
  4. if(isset($_POST['Dodaj']))
  5. {
  6. $pytanie = $_POST['pytanie'];
  7. $odpa = $_POST['odpA'];
  8. $odpb = $_POST['odpB'];
  9. $odpc = $_POST['odpC'];
  10. $odpd = $_POST['odpD'];
  11. if (empty($_POST['aa'])) { $poprawnaA = 0; } elseif (isset($_POST['aa']) && $_POST['aa'] == 1) { $poprawnaA = 1; }
  12. if (empty($_POST['bb'])) { $poprawnaB = 0; } elseif (isset($_POST['bb']) && $_POST['bb'] == 1) { $poprawnaB = 1; }
  13. if (empty($_POST['cc'])) { $poprawnaC = 0; } elseif (isset($_POST['cc']) && $_POST['cc'] == 1) { $poprawnaC = 1; }
  14. if (empty($_POST['dd'])) { $poprawnaD = 0; } elseif (isset($_POST['dd']) && $_POST['dd'] == 1) { $poprawnaD = 1; }
  15. $pkt = $_POST['pkt'];
  16. $nr_kursu = $_POST['nr_kursu'];
  17. if(isset($_FILES['obrazek']))
  18. {
  19. if($_FILES['obrazek']['error'] == UPLOAD_ERR_OK)
  20. {
  21. $fhandle = fopen($_FILES['obrazek']['tmp_name'], "r");
  22. $content = base64_encode(fread($fhandle, $_FILES['obrazek']));
  23. fclose($fhandle);
  24. $sql= mysql_query("INSERT INTO pytania VALUES( '','$pytanie', '$odpa', '$odpb', '$odpc', '$odpd', '$poprawnaA', '$poprawnaB', '$poprawnaC', '$poprawnaD', '$content', '$pkt', '$nr_kursu')");
  25. header("Location: przeglad_pytan.php");
  26. }
  27. }
  28. else
  29. {
  30. $sql= mysql_query("INSERT INTO pytania VALUES( '','$pytanie', '$odpa', '$odpb', '$odpc', '$odpd', '$poprawnaA', '$poprawnaB', '$poprawnaC', '$poprawnaD', '', '$pkt', '$nr_kursu')");
  31. header("Location: przeglad_pytan.php");
  32. }
  33. }
  34.  
  35. ?>
  36.  


Prosiłbym o jakąś wskazówkę, gdyż pierwszy raz próbuje umieścić plik w bazie...
Z góry dzięki za cokolwiek.

Ten post edytował Fonev 26.03.2015, 14:10:31
Go to the top of the page
+Quote Post
Beniooo
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 26
Dołączył: 26.01.2012
Skąd: Ci to przyszło do głowy?

Ostrzeżenie: (0%)
-----


Nie wrzucaj do bazy obrazków, to przy większych projektach bardzo zasobożerne, wrzucaj je sobie do jakiegoś określonego katalogu, a do bazy tylko ścieżkę do nich.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Możesz konkretniej opisać problem? Bo "nie dodaje obrazka do bazy" nie wiele mi mówi. Masz na myśli, że w ogóle nie dodaje rekordu, czy że kolumna, gdzie powinno wstawić base64 obrazka jest pusta?

Zacząłbym od poprawnego otworzenia obrazka:

  1. $content = base64_encode(file_get_contents($_FILES['obrazek']['tmp_name']));


A jeśli to nie pomoże to przyjrzałbym się zapytaniu przed jego wykonaniem.

Jakbyś od razu nie robił przekierowania to być może zdołałbyś zobaczyć jakieś błędy...

Cytat(Beniooo @ 27.03.2015, 12:46:15 ) *
Nie wrzucaj do bazy obrazków, to przy większych projektach bardzo zasobożerne, wrzucaj je sobie do jakiegoś określonego katalogu, a do bazy tylko ścieżkę do nich.


Jeśli przy wykonywaniu zapytania na danej tabeli nie pobiera się kolumny z obrazkiem, to nie ma tragedii.
Go to the top of the page
+Quote Post
Forti
post
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Cytat
Jeśli przy wykonywaniu zapytania na danej tabeli nie pobiera się kolumny z obrazkiem, to nie ma tragedii.


Jest tragedia. Tak się nie robi i nie ma co tu dyskutować. Bazy danych służą do trzymania treści, nie plików.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(Forti @ 27.03.2015, 13:24:29 ) *
Jest tragedia. Tak się nie robi i nie ma co tu dyskutować. Bazy danych służą do trzymania treści, nie plików.


Nie, nie ma tragedii. Zrób sobie testy wydajnościowe. Czyli plik nie jest treścią według Ciebie? Więc czym w takim razie? Czasem istnieje taka konieczność. Ale co ja tam wiem, widocznie w banku się nie umiemy bazą danych obsłużyć. Mam nadzieję, że nie masz u nas pieniędzy.
Go to the top of the page
+Quote Post
Forti
post
Post #6





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Cytat(b4rt3kk @ 27.03.2015, 13:59:53 ) *
Nie, nie ma tragedii. Zrób sobie testy wydajnościowe. Czyli plik nie jest treścią według Ciebie? Więc czym w takim razie? Czasem istnieje taka konieczność. Ale co ja tam wiem, widocznie w banku się nie umiemy bazą danych obsłużyć. Mam nadzieję, że nie masz u nas pieniędzy.


Drama? (IMG:style_emoticons/default/biggrin.gif)

Trzymając plik poza bazą masz do niego wszelki dostęp. Trzymając w bazie musisz otworzyć połączenie. I nie uwierze, że trzymanie pliku w bazie jest wydajniejsze jak po prostu w folderze ;] any proof?
Go to the top of the page
+Quote Post
10log
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

Ostrzeżenie: (0%)
-----


Żeby tylko na otwarciu połączenia się skończyło to by było do przełknięcia ale przecież taki obrazek z bazy musi zdekodować z base64 i wypluć faktyczny obrazek. To już może być znaczący narzut. Dużo prościej i szybciej pobrać z bazy ścieżkę do niego i tak używać.
Go to the top of the page
+Quote Post
Forti
post
Post #8





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Cytat(10log @ 27.03.2015, 14:36:02 ) *
Żeby tylko na otwarciu połączenia się skończyło to by było do przełknięcia ale przecież taki obrazek z bazy musi zdekodować z base64 i wypluć faktyczny obrazek. To już może być znaczący narzut. Dużo prościej i szybciej pobrać z bazy ścieżkę do niego i tak używać.


Gościu pracuje w banku i wie lepiej. Obrazki z bazy szybciej się pobiera niż lokalizacje i poniej obrazek. Czekam na jakiś benchmark.
Go to the top of the page
+Quote Post
kosmos
post
Post #9





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

Ostrzeżenie: (0%)
-----


Bezapelacyjnie obrazy na dysku, w bazie ścieżki do plików.
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Jak zapisujesz obrazki w bazie to niepotrzebnie puchnie i to bardzo. Do tego operacje na plikach są prostsze, takie jak zmiana formatu itd.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(Forti @ 27.03.2015, 14:39:16 ) *
Gościu pracuje w banku i wie lepiej. Obrazki z bazy szybciej się pobiera niż lokalizacje i poniej obrazek. Czekam na jakiś benchmark.


Proszę czytać ze zrozumieniem i nie przypisywać mi słów, których nie napisałem. Gdzie napisałem, że jest to szybsze lub wydajeniejsze?

Napisałem tylko, że czasem istnieje taka konieczność, jeśli nie potrafisz sobie wyobrazić takiej potrzeby to znaczy, że widocznie jeszcze mało widziałeś i mało słyszałeś.

Jedyne co stwierdziłem, to fakt, że gdy nie pobieramy w zapytaniu kolumny z zawartością pliku, to nie ma tragedii (czyli czas odczytu nie jest przesadnie długi), temu zaprzeczasz?

Nigdzie nie napisałem, że jest to metoda lepsza i szybsza, jeśli napisałem, to proszę zacytuj ten fragment mojej wypowiedzi. Czekam na cytat.

Ten post edytował b4rt3kk 27.03.2015, 15:46:00
Go to the top of the page
+Quote Post
Forti
post
Post #12





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Cytat(b4rt3kk @ 27.03.2015, 15:45:16 ) *
Proszę czytać ze zrozumieniem i nie przypisywać mi słów, których nie napisałem. Gdzie napisałem, że jest to szybsze lub wydajeniejsze?

Napisałem tylko, że czasem istnieje taka konieczność, jeśli nie potrafisz sobie wyobrazić takiej potrzeby to znaczy, że widocznie jeszcze mało widziałeś i mało słyszałeś.

Jedyne co stwierdziłem, to fakt, że gdy nie pobieramy w zapytaniu kolumny z zawartością pliku, to nie ma tragedii (czyli czas odczytu nie jest przesadnie długi), temu zaprzeczasz?

Nigdzie nie napisałem, że jest to metoda lepsza i szybsza, jeśli napisałem, to proszę zacytuj ten fragment mojej wypowiedzi. Czekam na cytat.


Cytat(b4rt3kk @ 27.03.2015, 13:59:53 ) *
Nie, nie ma tragedii. Zrób sobie testy wydajnościowe. Czyli plik nie jest treścią według Ciebie? Więc czym w takim razie? Czasem istnieje taka konieczność. Ale co ja tam wiem, widocznie w banku się nie umiemy bazą danych obsłużyć. Mam nadzieję, że nie masz u nas pieniędzy.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #13





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Mały test na czytanie ze zrozumieniem. Czego ten cytat dowodzi? Jest tam napisane, że odczyt z bazy jest szybszy niż z dysku? Czy choćby jest tam cień takiej sugestii?
Go to the top of the page
+Quote Post
Forti
post
Post #14





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Ja napisałem, że jest tragedia BO tak się nie robi. Ty mi wyjeżdzasz z testami na wydajność. Udajesz teraz żę wcale tego nie miałeś na myśli? Idź dalej pracować w banku (IMG:style_emoticons/default/wink.gif) Tam wiecie jak używać baz danych.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #15





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(Forti @ 27.03.2015, 16:40:04 ) *
Ja napisałem, że jest tragedia BO tak się nie robi. Ty mi wyjeżdzasz z testami na wydajność. Udajesz teraz żę wcale tego nie miałeś na myśli?


Ja napisałem, że nie ma tragedii, jak się nie pobiera kolumny z zawartością pliku. Chyba czas wrócić do podstawówki i doszkolić się z zakresu czytania ze zrozumieniem.

Mam na myśli, że takie zapytanie:
  1. SELECT id, name FROM files;


jest znacznie szybsze niż takie zapytanie:
  1. SELECT * FROM files;


I że w pierwszym przypadku nie ma tragedii.

Cytat(Forti @ 27.03.2015, 16:40:04 ) *
Idź dalej pracować w banku (IMG:style_emoticons/default/wink.gif) Tam wiecie jak używać baz danych.


Po co ta ironia? To nie moja wina, że Ci w życiu nie wyszło.

Ten post edytował b4rt3kk 27.03.2015, 16:54:24
Go to the top of the page
+Quote Post
pasman
post
Post #16





Grupa: Zarejestrowani
Postów: 70
Pomógł: 4
Dołączył: 16.03.2012

Ostrzeżenie: (0%)
-----


w dyskusji czy przechowywać obrazki w bazie, są za i przeciw.
cena hostingu ani wydajność nie zawsze są priorytetem.
Go to the top of the page
+Quote Post
Forti
post
Post #17





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


B4rt4k czy ty jesteś tak głupi za przeproszeniem czy takiego udajesz? Nie interesują mnie i nikogo momenty kiedy tego obrazka nie potrzebujesz, lecz KIEDY GO POTRZEBUJESZ. A wówczas nie trzyma się plików w bazie. Koniec tematu -,-
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #18





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(Forti @ 27.03.2015, 17:32:37 ) *
B4rt4k czy ty jesteś tak głupi za przeproszeniem czy takiego udajesz? Nie interesują mnie i nikogo momenty kiedy tego obrazka nie potrzebujesz, lecz KIEDY GO POTRZEBUJESZ. A wówczas nie trzyma się plików w bazie. Koniec tematu -,-


Ależ proszę, ja się nie gniewam. Przewiń sobie kilka postów wyżej, a zresztą wyręczę Cię, bo myślenie to nie jest Twoja mocna strona, więc pewnie nie pojmiesz, póki Ci się tego nie rozłoży na elementy pierwsze. A więc przeczytaj:

Cytat
Jeśli przy wykonywaniu zapytania na danej tabeli nie pobiera się kolumny z obrazkiem, to nie ma tragedii.


Żeby Cię odciążyć i żebyś nie musiał przepracowywać zwojów mózgowych, to powiem na co należy zwrócić tu uwagę, otóż kluczem jest słowo JEŚLI. Uwaga! Bo będzie miało to kolosalne znaczenie później. Po krótce tylko powiem, że jest to warunek logiczny implikujący jakieś zdarzenie, gdy warunek sprawdzający jest prawdą. Zwrócił bym tu też uwagę, na równie ważne słowo w tym zdaniu TO.

Jak iż logika jest Ci zupełnie obca jak widać, napisałeś w kolejnym poście takie oto zdanie, cytując poprzednie:

Cytat
Jest tragedia. Tak się nie robi i nie ma co tu dyskutować. Bazy danych służą do trzymania treści, nie plików.


Możemy się tu rozwodzić nad definicją tragedii, ale bynajmniej nie chodzi tutaj o gatunek literacki. Już wyjaśniam co autor miał na myśli. Otóż - w momencie, kiedy z pewnych powodów jesteśmy zmuszeni trzymać treść pliku w bazie, to gdy nie pobieramy w/w kolumny to "nie ma tragedii" jeśli chodzi o odczytywanie danych z bazy, czyli czas dostępu nie odbiega od normy. Wiem, że to ciężkie do pojęcia, ale mam nadzieję, że przystępnie Ci to wytłumaczyłem. Zwróć proszę uwagę na warunek logiczny w pierwszym cytowanym zdaniu!

Ty tak się składa, zanegowałeś właśnie to zdanie. Może nie pojąłeś jego sensu, może głębia Cię przerosła. Nie wiem. Nie jestem psychologiem, nie mnie oceniać.

Ten post edytował b4rt3kk 27.03.2015, 17:46:22
Go to the top of the page
+Quote Post
Forti
post
Post #19





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


ok, masz racje. Póki nie pobieramy obrazka to tragedii nie ma. Jednak trzymamy tam ten plik po to by gdzieś go wykorzystać. Nie ważne gdzie i jak - tak się nie robi.

Nie potrafię sobie wyobrazić sytuacji gdzie jestem zmuszony trzymać obrazek w bazie danych. Masz strone i baze - masz serwer. Masz tylko baze - prawdopodobnie również masz serwer na którym stoi coś co pobiera dane z ów bazy.
Go to the top of the page
+Quote Post
Fonev
post
Post #20





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (0%)
-----


SUPER!

  1. $content = base64_encode(file_get_contents($_FILES['obrazek']['tmp_name']));


Dzięki b4rt3kk dodawanie do bazy obrazka działa. Jeśli chodzi o wydajność to nie powinno to mocno obciążać gdyż ważą one max 20kB.
Tylko teraz jest problem, że jak nie dodam w formularzu obrazka to nic nie doda do bazy....
Go to the top of the page
+Quote Post
Beniooo
post
Post #21





Grupa: Zarejestrowani
Postów: 260
Pomógł: 26
Dołączył: 26.01.2012
Skąd: Ci to przyszło do głowy?

Ostrzeżenie: (0%)
-----


Wait... what?!
To... gdy nie dodasz obrazka w formularzu, to ma się pojawić magiczna wróżka i sobie go namalować?
Go to the top of the page
+Quote Post
Fonev
post
Post #22





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (0%)
-----


ma dodac te pola ktore sa a obrazka skoro nie ma to ma nie dodawac. Nie jest on wymagany. Raz bedzie raz go nie bedzie.
Go to the top of the page
+Quote Post
Beniooo
post
Post #23





Grupa: Zarejestrowani
Postów: 260
Pomógł: 26
Dołączył: 26.01.2012
Skąd: Ci to przyszło do głowy?

Ostrzeżenie: (0%)
-----


Sprawdzaj w kodzie, czy obrazek został wrzucony przez formularz, a jeśli nie, to wrzuć do bazy w miejsce obrazka null
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 22:00