Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> galeria zdjęć - od czego zacząć
japolak
post 19.06.2011, 19:34:03
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


Witam
mysle nad stworzeniem galerii w swoim serwisie

Założenia mam takie coś ala serwisy społecznościowe:
czyli każdy użytkownik sobie wrzuca swoje zdjęcia/ - zjęcia sa podpiete do jego profilu, czyli wchodząc w jego profil można obejrzeć dodane przez niego zdjęcia.

jak to rozwiązac od strony bazy danych i od systemu plików/

czy rozwiązanie dla systemu plików typu:
na serwerze mam katalog users/gallery/i np. folder z urzytkownikami od id 1-100, 101 - 200, itd / nastepnie folder z konkretnym id uzytkownika i tam dopiero jego zdjęcia,

a od strony myslq
tabela gallery gdzie byloby id_użyt, nazwa_zdjęcia, lokalizacja

czy może macie lepsze rozwiazanie dla tego typu problemu??


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
tehaha
post 19.06.2011, 19:54:24
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


prawie ok, tylko po co te foldery 1-100 itd, od razu dajesz folder z ID użytkownika a nazwa zdjęcia to ID zdjęcia, nazwy zdjęcia najlepiej jest zmienić bo po co Ci oryginalne nazwy poza tym musiałbyś sprawdzać czy już taka nazwa nie jest zajęta

w mysql:
- id zdjęcia
- opis
- id użytkownik / lub id galerii jeżeli użytkownik może mieć więcej galerii
- rozszerzenie / jeżeli dopuszczasz możliwość zapisu zdjęć w różnych formatach, ale w takim serwisie to chyba najlepiej wszystko przekonwertować do skompresowanego jpg

jeżeli nie wiesz jak zabrać się za pisanie klasy do skalowania zdjęcia to użyj czegoś gotowego , wpisz w google thumbnail class to znajdziesz dużo gotowców
Go to the top of the page
+Quote Post
japolak
post 19.06.2011, 20:24:04
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


ok.. dzieki za podpowiedź

natomiast co do

Cytat(tehaha @ 19.06.2011, 20:54:24 ) *
prawie ok, tylko po co te foldery 1-100 itd, od razu dajesz folder z ID użytkownika a nazwa zdjęcia to ID zdjęcia, nazwy zdjęcia najlepiej jest zmienić bo po co Ci oryginalne nazwy poza tym musiałbyś sprawdzać czy już taka nazwa nie jest zajęta


no to myslac do przodu.. wiem ze w tej chwili przesadnie..
no ale gdyby;)

jak by mi sie naroilo przykładowo 50 000 uzytkowników
to czy nie za duzo bylo by folderów w jednym katalogu? i czy to by w jakims sensie nie spowalnialo pracy..
gdzies kiedys czytalem o takim rozwiazaniu zeby zrobić wieksze rozbicie na foldery, ala cos w podobie co napisalem

... hmm
a tak do tego tematu jeszcze jedno pytanie...

jesli chciałbym aby uzytkownik miał swój awatar
to gdzie dodać ten awatar? łaczenie z jego wszystkimi zdjęciami. i w jakiś sposób w bazie danych zaznaczyć które zdjęcie jest awatarem?
czy moze jakieś inne standartowe rozwiązanie?



Wiem, że pytania które zadaje są w sumie banalne , bo mozna zrobić tak jak sie chce

ale chodzi mi tu o optymalne rozwiązania, aby nie wracać do problemu i drugi raz się nad nim zastanawiać


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
tehaha
post 19.06.2011, 20:32:04
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat
jak by mi sie naroilo przykładowo 50 000 uzytkowników
to czy nie za duzo bylo by folderów w jednym katalogu? i czy to by w jakims sensie nie spowalnialo pracy..
gdzies kiedys czytalem o takim rozwiazaniu zeby zrobić wieksze rozbicie na foldery, ala cos w podobie co napisalem

No ale w jaki sposób posiekanie tego na foldery po 100 ma usprawnić pracę? Szczerze mówiąc dla mnie struktura folderów to raczej kwestia porządkowa bo wątpię, żeby taki układ zwiększał jakoś wydajność, chociaż to też zależy od faktycznej liczby plików i folderów, ja bym na początku to olał. Ale przecież jak chcesz to żaden problem. Tylko jestem ciekaw czy z projektowaniem bazy danych, system cache'owania itd tak samo idziesz w przód, czy tylko wyłapałeś jakąś błachostkęsmile.gif

Co do avataru osobiście robię tak, że umieszczam plik o nazwie avatar.jpg w folderze zdjęć użytkownika czyli np. files/users/15/avatar.jpg, wtedy nie muszę wykonywać połączenia do bazy danych tylko sprawdzam czy istnieje avatar samą funkcją file_exists()

generalnie chodzi mi o to, że albo faktycznie robisz serwis pod duże obciążenie i dziesiątki tysięcy użytkowników, albo nie, bo samo kombinowanie ze strukturą folderów przy tym jak wszystko inne kompletnie leży to tylko zbędna komplikacja dla Ciebie, na początek zrób tak żeby to było wygodne w użyciu i żeby pliki były skalowane i kompresowane

Ten post edytował tehaha 19.06.2011, 20:39:53
Go to the top of the page
+Quote Post
japolak
post 19.06.2011, 20:49:03
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


Cytat(tehaha @ 19.06.2011, 21:32:04 ) *
generalnie chodzi mi o to, że albo faktycznie robisz serwis pod duże obciążenie i dziesiątki tysięcy użytkowników, albo nie, bo samo kombinowanie ze strukturą folderów przy tym jak wszystko inne kompletnie leży to tylko zbędna komplikacja dla Ciebie, na początek zrób tak żeby to było wygodne w użyciu i żeby pliki były skalowane i kompresowane



w sumie racja
prawdopodobieństwo tak duzego powodzenia w moim przypadku jest praktycznie zerowe..

no to zanim przejde do pracy mam jeszcze jedno pytanie co do tej podpowiedzi skalowania i kompresowania..

robić skalowanie za każdym razem w locie - przez php - aby rozmiary pliku bym mniejszy,
czy tylko jednorazowo przy zapisywaniu pliku i robić duplikat "miniaturki" w innym folderze?

kompresowanie?? plik jpg juz jest sam z siebie skompresowany.. -- co do zabawy w funkcje graficzne w php - to jeszcze w tym sie za bardzo nie bawiłem..
-------------


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
tehaha
post 19.06.2011, 21:15:19
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


skalowanie - oczywiście tylko i wyłącznie jednorazowo przy uploadzie pliku przez użytkownika, tym drugim to byś zamordował serwer, najlepiej zdjęcie robisz sobie w 2 wymiarach: duże i miniaturka do wyświetlania w galerii
kompresja - chodzi mi o to, że możesz ustawić sobie kompresję podczas skalowania dla jpg w zakresie 0-100, dla dużych zdjęć kompresja 80 jset ok, a dla miniaturek możesz z mniejszymi kombinować
Go to the top of the page
+Quote Post
japolak
post 19.06.2011, 21:26:05
Post #7





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


ok.. dzieki wielkie .. troche mi to rozjaśniło postawiony przeze mnie problem
..

Przejdę teraz do częsci praktycznej .. jak napotkam na jakieś większe problemy to dopisze w tym temacie..

pozdrawiam i miłej nocki życzę..

Dzięki


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
by_ikar
post 20.06.2011, 08:57:15
Post #8





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Jeżeli stronę masz na jakimś hostingu współdzielonym, typu home, nazwa itp to liczba katalogów ma znaczenie. Już dokładnie nie pamiętam, jaka to liczba była, ale niektóre hostingi, mają limity na ilość katalogów. Tzn nie jest to pewnie nigdzie napisane, ale były sytuacje jak na forum ludzie pisali że usługodawca pisze im maile że zablokuje im serwer, ponieważ przez zbyt dużą liczbę katalogów, backup wykonuje się dłużej, czy też nie może się wykonać. I taka liczba katalogów przeszkadza jedynie podczas backupu. Tyle w kwestii katalogów wink.gif samo ich trzymanie na serwerze raczej nie wpływa na wydajność.
Go to the top of the page
+Quote Post
japolak
post 25.06.2011, 09:51:39
Post #9





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


hej
kolejne pytanie co do tematu:)

a konkretnie albumu

aktualnie tak wyglada poziom rozwoju mojej galerii:

  1. CREATE TABLE IF NOT EXISTS `user_album` (
  2. `id_user` int(10) UNSIGNED NOT NULL,
  3. `album_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `album_name` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  5. `album_desc` text COLLATE utf8_polish_ci NOT NULL,
  6. `album_thumb` int(10) UNSIGNED NOT NULL,
  7. `album_access` int(2) UNSIGNED NOT NULL,
  8. `add_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  9. PRIMARY KEY (`album_id`,`id_user`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;


  1. CREATE TABLE IF NOT EXISTS `user_photo` (
  2. `photo_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_user` int(10) UNSIGNED NOT NULL,
  4. `album_id` int(10) UNSIGNED NOT NULL,
  5. `id_cat` int(10) UNSIGNED NOT NULL,
  6. `file_name` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  7. `photo_name` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  8. `photo_desc` text COLLATE utf8_polish_ci NOT NULL,
  9. `add_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  10. `counter` int(10) UNSIGNED NOT NULL,
  11. PRIMARY KEY (`photo_id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;


i teraz tak sie zastanawiam..
założenie mam takie że użytkownik bez wcześniejszego ręcznego tworzenia gallerii moze odrazu wgrywać sobie zdjęcia.
a te zdjęcia wtedy będą wyświetlane jako że są w głównej gallerii ..

i mam dylemat taki czy tą główna (domyśla) galerie rejestrować w bazie zaraz przy rejestracji użytkownika .
czy wogóle jej nie wykazywać. - a poźniej w wynikach zdjęcia które nie sa przypisane do żadnej z gallerii bedą wrzócane zapytaniem do tej głównej.
-- tylko nie wiem czy w ten sposób nie narobie sobie zbyt dużo roboty..

słucham waszych opinii.


temat juz nie aktualny..

w sumie sam się rozwiązałsmile.gif

album główny ma zawsze wartość '0'
wiec obyło sie bez większych kombinacji ..

pobieranie danych z bazy: klasa danych;
  1. public function get_photo_album($user,$album_id){
  2.  
  3. $sql="select * from user_photo where id_user ='".$user."' and album_id='".$album_id."'order by add_date_photo desc";
  4. $connect=$this->connect_bd();
  5. $result=$connect->query($sql);
  6. if (!$result){echo "blad w get photo album"; return false;}
  7. if ($result->num_rows>0)
  8. {
  9. $result=$this->result_bd_to_table($result);
  10. return $result;
  11. }
  12. }


ta funkcja działa dla każdej możliwości.


a wywoływana przez:
formatowanie wyników z bazy - klasa formatowania:
  1.  
  2. public function display_user_album($table_albums){
  3.  
  4.  
  5. if (!is_array($table_albums)) {
  6. echo "<li> Brak dostępnych kategorii </li>";
  7. return;
  8.  
  9.  
  10. }
  11. foreach ($table_albums as $row) {
  12.  
  13. ?><div class="product-photo">
  14. <p>
  15. <?php
  16. if($row['album_thumb']=='null'){echo "cos pokrecilem";}else{
  17. ?>
  18. <a href='../users/gallery.php?album=<?php echo $row['album_id'];?>'><img src='../themes/new/albums_def.png' width='100' height='100' ><br><?php echo $row['album_name'];?></a>
  19. <?php
  20.  
  21. }
  22. ?>
  23. </p>
  24. </div><?php
  25. }
  26.  
  27. //wyswietlanie linku od galerii glownej
  28. ?><div class="product-photo">
  29. <p>
  30. <a href='../users/gallery.php?album=0'><img src='../themes/new/albums_def.png' width='100' height='100' ><br>Album główny</a>
  31. </p>
  32.  
  33. </div><?php
  34.  
  35. }


zawsze wyświetla prawidłowe wartości.

plik docelowy : gallery.php ktory wyświetla zawartosc w zaleznosci od wyboru galerii
  1. class change extends user_view{
  2.  
  3.  
  4. public function display_contents (){
  5.  
  6. $get_user=new data_user();
  7. $user_real_id=$get_user->get_user_real_id($_SESSION['login']);
  8. $album_id=$_GET['album'];
  9. $get=new data_user();
  10. $table_photo=$get->get_photo_album($user_real_id['id'],$album_id);
  11.  
  12. ?><div id="contentuser"><div class="title">Album:</div><div class="post"><div class="entry">
  13. <?php
  14.  
  15.  
  16.  
  17. $show=new user_view();
  18. $show->display_photo_album($table_photo);
  19. ?>
  20.  
  21.  
  22. </div>
  23. </div></div>
  24. <?php
  25.  
  26. //zamyka display contents
  27. }
  28. //zamyka klase
  29. }
  30.  



a tak out of topic:
czy takie pisanie kodu jak ja.. jest ok.. czy to raczej sieczka? wg. was?


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
jackraymund
post 25.06.2011, 21:31:02
Post #10





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


a tak zapytam, nie łatwiej by było zrobić tak?
przy w mysql przy użytkownikach id to nazwa folderu, typu
mam id 1
wchodzi do folderu, wtedy pętelka for i pokazanie wszystkich fotek


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
japolak
post 26.06.2011, 08:46:21
Post #11





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


Cytat(jackraymund @ 25.06.2011, 22:31:02 ) *
a tak zapytam, nie łatwiej by było zrobić tak?
przy w mysql przy użytkownikach id to nazwa folderu, typu
mam id 1
wchodzi do folderu, wtedy pętelka for i pokazanie wszystkich fotek


niby tak..
ale w bazie przechowuje dodatkowe dane.. co do każdego pliku, każdy plik tez moze byc w innym albumie itd.
wiec jak ty widzisz tu swoją koncepcje?


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:05