Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql,php] grafika w bazie
mitp
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


php programmer usunolem ten post, bo miałem napisać go od nowa, bylo wiele bledow, a kolo 23 przeslao mi odpowiadac forum, padlo i tak juz zostal ten post ... wieczorkiem przedstawie o co chodzi bo w pracy nie mam dostepu do kodu ... sorki

Ten post edytował mitp 16.11.2007, 12:46:54
Go to the top of the page
+Quote Post
php programmer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Zamiast usuwać posta, trzeba było dopisać,
jak rozwiązałeś problem lub chociaż podać link do rozwiązania,
być może ktoś w przyszłości bedzie miał podobny problem
Go to the top of the page
+Quote Post
mitp
post
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


Witam, mam mały problem z wyświetlaniem grafiki z bazy, otóż dołączam plik *.php do pliku w którym mam w sekcji <head></head> następujące znaczniki:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>
  2. <meta http-equiv="Content-Language" content="pl"/>
  3. <title>tytuł</title>


problem w tym że jak chce wyświetlić grafikę, to wyskakują dziwne krzaczki, natomiast jak wykonam sam skrypt, w ktorym nie mam znacznikow meta, to skrypt działa poprawnie i wyswietla zdjecie, jak temu zaradzić?

skrypt:
  1. <?php
  2. ...
  3. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela WHERE user='test' AND id_ogloszenia=2") or
  4. die ("Błąd w zapytaniu !");
  5. $row = mysql_fetch_assoc($zapytanie);
  6. $grafika=$row['zdjecie'];
  7. $typpliku=$row['typ'];
  8. header("Content-type:$typpliku");
  9. print $grafika;
  10. ?>


problem w header("Content-type:$typpliku"); ktory pobieram z bazy, a wczesniej w meta mam już podany i się gryzą ...
Go to the top of the page
+Quote Post
franki01
post
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Moze cos pomoze iconv" title="Zobacz w manualu PHP" target="_manual?
Go to the top of the page
+Quote Post
LBO
post
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Skoro dołączasz to strumienia zdjęcia tekst (w tym wypadku nagłówek dokumentu HTML) to się nie dziw, że nie działa.
Albo HTML, albo zdjęcie.
Go to the top of the page
+Quote Post
mitp
post
Post #6





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


Witam, no ale chyba musi być jakieś rozwiązanie? żeby można było zarówno tekst jak i obrazek wyświetlać?
Go to the top of the page
+Quote Post
wlamywacz
post
Post #7





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

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


No to dajesz plik obrazek.php w nim kod generowania obrazka i robisz
  1. <img src="obrazek.php">

I pozamiatane
Go to the top of the page
+Quote Post
mitp
post
Post #8





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


dzięki, super działa, tylko mam mały problem, a mianowicie jak w tym skrypcie pobrać kilka zdjęć z bazy i później je wyświetlić?

zrobiłem tak: (pokazuje różne id_certyfikatu ale zdjęcie to samo)
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT * FROM $mysql_tabela ORDER BY id_certyfikatu DESC") or 
  5. die ("Błąd w zapytaniu");
  6. while ($rekord = mysql_fetch_array ($zapytanie)) {
  7. $id_certyfikatu = $rekord[0];
  8. $zdjecie = $rekord[1];
  9. $typ = $rekord[2];
  10. $nazwa = $rekord[3];
  11. $rozmiar = $rekord[4];
  12. ?>
  13. <tr>
  14. <td class="n"><font color="#666666">certyfikat:</font></td>
  15. <td class="n"><img src="zdjecie.php"></td>
  16. </tr>
  17. <?php
  18. }
  19. ?>


zdjęcie.php
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela") or
  5. die ("Błąd w zapytaniu !");
  6. $row = mysql_fetch_assoc($zapytanie);
  7. $grafika=$row['zdjecie'];
  8. $typpliku=$row['typ'];
  9. header("Content-type:$typpliku");
  10. print $grafika;
  11. ?>


potrzebuje pomocy

Ten post edytował mitp 20.11.2007, 19:19:36
Go to the top of the page
+Quote Post
krowal
post
Post #9





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Musisz to robić za każdym razem oddzielnie. Czyli taki zapis:
  1. <img src="zdjecie.php?id=1" />
  2. <img src="zdjecie.php?id=2" />
  3. ...

a potem w skrypcie wybierasz z bazy odpowiednie zdjęcie i wyrzucasz do przeglądarki wynik poprzedzając odpowiednim nagłówkiem. Ewentualnie można wybrane z bazy zdjęcia połączyć w jedną całość jeszcze na poziomie PHP a potem w html wywołać jako jedno duże zdjęcie, ale chyba nie o to Ci chodziło.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
LBO
post
Post #10





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Zacznijmy od tego, że takie coś mija się z celem.

Trzymaj w bazie co najwyżej ścieżki do zdjęć, a zdjęcia normalnie na serwerze. Na pewno nie będziesz miał potem takich problemów.
Go to the top of the page
+Quote Post
krowal
post
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Cytat(LBO @ 20.11.2007, 19:43:51 ) *
Zacznijmy od tego, że takie coś mija się z celem.


Wcale się z celem nie mija, wyobraź sobie sytuację gdy chce się zabezpieczyć zdjęcia przed kopiowaniem nakładając na nie znak wodny (przynajmniej na te największe). Najlepiej wtedy zablokować bezpośredni dostęp do zdjęć przez HTTP i wypuszczać je przez jakiś skrypt nakładający zabezpieczenie. Zależy co chce się osiągnąć smile.gif


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
KOMPsognat
post
Post #12





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.10.2006

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


Mając pliki na serwerze wystarczy, że zablokujesz dostęp do folderu z nimi (.htaccess) a już nikt niepowołany się do nich nie dostanie.
Go to the top of the page
+Quote Post
LBO
post
Post #13





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


A nie możesz zdjęc obrobić np po uploadzie, albo, jakimś skryptem obrobić masowo? Uwierz mi, czymś takim można zajechać bazę.
Go to the top of the page
+Quote Post
cicik
post
Post #14





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(LBO @ 20.11.2007, 19:43:51 ) *
Zacznijmy od tego, że takie coś mija się z celem.


Nie zgodzę się. Jeśli ma się wydajny serwer to jak najbardziej jest w tym sens.
Wyobraź sobie, że trzymasz w bazie tylko ścieżki, a zdjęcia na serwerze. Usuwając rekord z bazy nie masz gwarancji, że usunie się zdjęcie z dysku i odwrotnie (tranzakcyjność). Coś się może popsuć pomiędzy tymi dwiema operacjami itd. Jednym słowem nie ma gwarancji zachowania spójności danych. Jeśli zdjęcie masz w bazie to albo usunie się wszystko albo nic.

Jest to mniej wydajne ale coś za coś. W MS SQL Server 2008 jest typ pola FILE. Niby wrzucasz plik do bazy ale w rzeczywistości jest on trzymany w folderze, a w bazie jest tylko link. Ale zrobili to mądrze. Czyli plik ma nadawane odpowiednie uprawnienia przez co nikt normalnie go nie usunie i nie zmodyfikuje. Również tranzakcyjność jest zachowana. Albo zostanie usunięty i plik i informacja z bazy albo ani jedno ani drugie. MySQLe i PostgreSQLe jeszcze tak fajnie nie mają.


--------------------
CMS dla Twojej firmy
Wojciech Małota
Go to the top of the page
+Quote Post
lectric
post
Post #15





Grupa: Zarejestrowani
Postów: 167
Pomógł: 1
Dołączył: 22.08.2006
Skąd: universe

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


Cytat(cicik @ 21.11.2007, 09:51:37 ) *
Nie zgodzę się. Jeśli ma się wydajny serwer to jak najbardziej jest w tym sens.
Wyobraź sobie, że trzymasz w bazie tylko ścieżki, a zdjęcia na serwerze. Usuwając rekord z bazy nie masz gwarancji, że usunie się zdjęcie z dysku i odwrotnie (tranzakcyjność). Coś się może popsuć pomiędzy tymi dwiema operacjami itd. Jednym słowem nie ma gwarancji zachowania spójności danych. Jeśli zdjęcie masz w bazie to albo usunie się wszystko albo nic..


Głupota, uzależniasz akcje od siebie + podwójna kontrola akcji i jest ok.


--------------------
Potrzebujesz dodać darmowe ogłoszenia ?, w takim razie musisz odwiedzić to miejsce !
Presell - tutaj dodasz swoj artykul za darmo ! Presell Page dla wszystkich bez limitów i utrudnień
Masz firme ? Ta baza firm jest dla Ciebie i Twoich znajomych są też śmieszne filmiki
Go to the top of the page
+Quote Post
LBO
post
Post #16





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(cicik @ 21.11.2007, 09:51:37 ) *
MySQLe i PostgreSQLe jeszcze tak fajnie nie mają.


I teraz odpowiedz Sobie na pytanie dlaczego MS SQL rozwiązał to tak, a nie inaczej? Hmmm?
Go to the top of the page
+Quote Post
mitp
post
Post #17





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 29.12.2004

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


czesc, cholercia nie miałem dostepu do neta i nie moglem nic zrobic ... panowie nie działa, a czas mnie strasznie nagli, pomozcie ... zrobiłem tak:
zdjecie.php
  1. <?php
  2. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela") or
  3. die ("Błąd w zapytaniu !");
  4. $row = mysql_fetch_assoc($zapytanie);
  5. $grafika=$row['zdjecie'];
  6. $typpliku=$row['typ'];
  7. header("Content-type:$typpliku");
  8. print $grafika;
  9. ?>

index.php
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT * FROM $mysql_tabela ORDER BY id_certyfikatu DESC") or 
  5. die ("Błąd w zapytaniu");
  6. while ($rekord = mysql_fetch_array ($zapytanie)) {
  7. $id_certyfikatu = $rekord[0];
  8. $zdjecie = $rekord[1];
  9. $typ = $rekord[2];
  10. $nazwa = $rekord[3];
  11. $rozmiar = $rekord[4];
  12. ?>
  13. <tr>
  14. <td class="n"><font color="#666666">certyfikat:</font></td>
  15. <td class="n"><?php print"<img src=\"zdjecie.php?id_certyfikatu=$id_certyfikatu\">"; ?></td>
  16. </tr>
  17. <tr>
  18. <td class="n">&nbsp;</td>
  19. </tr>
  20. <tr>
  21. <td class="n" colspan="2">
  22. <?php echo"<a href=edycja_strony_certyfikaty_usun_certyfikat_zapytanie.php?id_certyfikatu=$id_certyfikatu>
  23. <font color=\"#D01B06\">Usuń certyfikat</font></a>"; ?></td>
  24. </tr>
  25. <?php } ?>


problem w tym, że nadal wyświetla ten sam obrazek dla 2 roznych id, jak klikne usun to jest ok odrownia pola w bazie, ale grafika zawsze jedna, jak to poprawic?

Ten post edytował mitp 29.11.2007, 22:18:41
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: 20.08.2025 - 15:18