![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.08.2008 Skąd: Breslau Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie
![]() Przeszukałem już chyba wszystkie fora ale niestety nie znalazłem tego czego szukałem. Zwracam się zatem o pomoc do Was. Aktualnie robie sklepik internetowy. Stronka w PHP, baza SQL 2000. Do tej pory radziłem sobie z wszystkim (pasjont) ale natrafiłem na rzecz która jest dla mnie nie do przejścia :/ A są to: obrazki w bazie. Jak ugryść ten temat? Posiadam w swojej bazie tabelkę Towary, aktulnie poprzez polecanie PHP wyciagam na strone stan danego towaru, ilosc sztuk itp. Chciałem teraz dołączyc fotki. Mam kilka pytań: - czy dopisać do tabelki TOWARY, pozycje fotki odppwiedzialną za fotki danego produktu czy robić nową, inną tabelkę FOTKI? - wiem, że można fotkę zapisać w bazie ale lepszym wyjściem jest chyba umieszczenie w niej adresu fotki w którym można ją znaleść, na jakiej zasadzie to sie odbywa? - czy w SQLu 2000 działa polecenie BLOB? Jeśli tak to jak? Chciałbym aby polecenie PHPowe wyciagało z bazy fotkę (tj. jej adres) odpowiednią do danego zdjecia. Ścieżka fotek - d:\shop\fotki\drukarki\hp.jpg Tabelka TOWAR CREATE TABLE [dbo].[Towar] ( [Id_Towar] [int] NOT NULL , [Id_Producent] [int] NOT NULL , [Id_Cennik] [int] NOT NULL, [Nazwa] [char] (30) NOT NULL , [Cena] [numeric] (9) NOT NULL , [Opis] [char] (45) NOT NULL , [Ilosc] [char](15) NULL , [Waga] [char](10) NULL ) ON [PRIMARY] GO Proszę o pomoc. Nie wzgardze żadną radą. Czytałem na ( jeśli mogę użyć tego stwierdzenia naszym forum) podobny wątek. Ale tam kolega jest już nieźle obeznany w tym co robi tylko nie może osiągnąc koncowego efektu. Ja niestety jestem jeszcze w malinach ![]() Pomóżcie |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 99 Pomógł: 15 Dołączył: 29.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Często w bazie przydatne jest pole 'params' w którym trzymasz wszystkie parametry wyświetlania w postaci tablicy, w tym ścieżki fotek.
1.Czemu params a nie od razu 'photo' ? ZA: + generalnie możesz założyć, że każdy obiekt (produkt/kategoria/user) ma jakies parametry i z pełnym spokojem dodac takie pole do tabel w bazie + nie musisz poszerzać tabel za każdym razem, gdy dopiszesz nową funkcjonalność + możesz tam trzymać wszystkie dane, które nie bardzo poddaja się schematyzacji, np podpis obrazka, obraz na lewo-prawo, bez dumania, czy wszystkie obrazki beda mialy podpis i poszerzania zapytania sql + przechowywanie 2 obrazkow , czy nawet całej ich galerii lub filmu/prezentacji nie stanowi problemu PRZECIW: - trzeba napisać funkcję do obsługi parametrów pobranie: z bazy wylatuje param1=wartosc1|param2=wartosc2, trzeba to explodowac i pobrac wartosc zmiana/zapis: pobrac, explodowac, nadpisac/ustawic, implodowac zapisac do bazy - można tam trzymać tylko takie dane względem których nigdy nie będziemy chcieli sortowac ani filtrować 2. Ścieżki ? Znawcą nie jestem ... ale jak na razie wszystkie przydatne skrypty operujące na obrazkach używają ścieżek i cos mi sie zdaje, że trzymanie obrazów w bazie jest upierdliwe i mocno uzależniające od platformy bazy danych. Pomyśl również o zarządzaniu zdjęciami... promocja świąteczna: cpanel->file manager->kompresja->ftp->na dysk->mail do grafika->teee stary sypnij mi tam jakieś choinki w tle ... backup, wrzut nowych fotek pod starymi nazwami i od razu jest świątecznie ![]() Pewnie przez DB też się da ale jakoś nie spieszno mi pozbywać się możliwości ftpowania grafik. reasumując: napewno ścieżki i na pewno w tej samej tabeli |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 403 Pomógł: 68 Dołączył: 20.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja jestem trochę innego zdania, oczywiście zgadzam się z przedmówcą w sprawie ścieżek generalnie jest to najlepszy sposób i nie zaśmieca bazy danych ale NIE W TEJ SAMEJ TABELI mogę zaproponować tabelę zdjęcia o 3 polach ID_Zdjecia Sciezka ID_Produktu
dlaczego? ano dlatego że dany produkt może mieć wtedy kilka fotek i bardzo łatwo będzie je wyciągnąć podczas gdy pole zdjęcie w tabeli Towar może zawierać 1- ścieżkę do 1 zdjęcia - i wtedy jest ok 2- plątaninę kilku ścieżek - i tu trzeba do wszystko rozdzielać itd w skrypcie Ten post edytował f1xer 5.08.2008, 07:35:43 -------------------- Pomogłem? wyraź to i kliknij "Pomógł"
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Trzymanie zdjęć w bazie danych ułatwia zarządzanie nimi, ale traci się nieco na wydajności. W przypadku sklepu internetowego zdjęcia towarów nie są jakąś wielce istotną sprawą, więc można je trzymać na dysku. Musisz tylko sam zadbać o to, żeby miały unikalne nazwy. W takim razie tabela [zdjecia] wyglądać powinna wyglądać tak jak podał f1xer.
Jeśli jednak chciałbyś te zdjęcia mieć w bazie, to struktura powinna wyglądać mniej więcej tak: Kod +--------------+-------------+------------+-------------------+-------------------------+ | ID_zdjecia | ID_towaru | zdjecie | nazwa_pliku | ostatnia_aktualizacja | +--------------+-------------+------------+-------------------+-------------------------+ | 1 | 1 | #BINARY# | samochodzik.jpg | 2008-08-05 11:32:48 | | 2 | 1 | #BINARY# | samochodzik.gif | 2008-08-05 11:32:50 | | 3 | 2 | #BINARY# | pomarancza.jpg | 2008-07-25 14:01:40 | Kolumna [zdjecie] typu IMAGE Przy każdym żądaniu wyświetlenia zdjęcia sprawdzasz, czy przesłano nagłówek If-Modified-Since. Jeśli tak, to porównujesz datę z nagłówka z datą w bazie. Jeżeli zdjęcie nie było ostatnio aktualizowane, to wysyłasz nagłówki: Kod HTTP/1.x 304 Not Modified Last-Modified: Sat, 21 Apr 2007 01:08:10 GMT Jeżeli tego nagłówka nie przesłano, lub zdjęcie było ostatnio modyfikowane, to wysyłasz nagłówki: Kod HTTP/1.x 200 OK Content-Type: image/xxx Content-Length: 12345 Last-Modified: Sat, 21 Apr 2007 01:08:10 GMT Cache-Control: public oraz "treść zdjęcia" z bazy danych. Oczywiście Content-Type tworzysz na podstawie rozszerzenia zdjęcia, a Last-Modified na podstawie daty z bazy danych. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:04 |