![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Witam
Nie chciałem odkopywać tak starego wątka jakim jest: http://forum.php.pl/index.php?showtopic=60602, dlatego pisze od początku. Bardzo mi zależny na wysokości diva/ilości linijek w nim. Pomysł ze zdjęciem w załączonym temacie wydaje mi się bardzo racjonalne. Stronę robię w Ajaxie, jednak chce, aby była w pełni funkcjonalna podczas gdy ktoś sobie wyłączy obsługę JavaScript, stąd takie kombinowanie ;-) Teraz pytanie apropo zdjęcia. Jak to wykonać zdjęcie z samego html uzywając GD?. Zawartość Diva mam np taką: czy korzystanie z tej metody za pomocą biblioteki GD nie będzie obciążalo zbytnio serwera? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php count(explode("<br", $text)); ?> z tym że jeśli diva masz szerokiego na np 500 px a text w nim wyświetlany jest pisany ciągiem bez znaczników <br> to nic takie zliczanie nie daje. Najlepiej gdybyś liczył ilość znaków w tekście (nie licząc białych znaków) i przyjął jakąś liczbę jako ilość znaków w lini. Z biblioteką GD nie wiem jak to zrobić. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej gdybyś liczył ilość znaków w tekście (nie licząc białych znaków) i przyjął jakąś liczbę jako ilość znaków w lini. Z tej metody korzystałem nawet we flashu! Jest zbyt naiwna. Teoretycznie wszystko pięknie, jednak są różnice szerokości liter! iiiiiiiiii - 10 liter OOOOOOOOOO - 10 liter Szukam czegoś nie zawodnego. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
w takim razie zrób sobie tablice ze znakami i odpowiadającymi im szerokościami w px następnie podziel tekst znając znaczniki które tworzą nową linie (<br>,<p><h1><h2><h3>...). Wylicz sobie ile zajmą odpowiednie słowa + spacje + znaki w podzielonych fragmentach tekstu. podziel to przez szerokość diva i sumuj.
Nie widzę rozwiązania w gd bo i tak musiałbyś dla każdej literki tworzyć nowy obrazek i sprawdzać czy czasem literka czy słowo nie wychodzi za obrazek. Generowanie 1000 takich obrazków na pewno nie sprzyja szybkiemu wykonaniu skryptu. Ten post edytował fander 3.07.2009, 11:21:46 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
http://pl.php.net/manual/pl/function.imagettfbbox.php a wyliczac z tego?
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
To nei ma sensu.. Nie ma czegokolwiek normalniejszego, przecież to PHP->C++?
Może powinienem zaczać od tego do czego jest mi potrzebne takie rozwiązanie. Napisałem sobie korzystając ze Smarty system newsów. Newsy wyświetlane są w ograniczonym wymiarowo divie. Oczywiście z szerokości tekst jest zawijany, jednak gdy newsów jest np 10 o różnej ilości enterów/zawinień wierszy to rzeczą naturalną jest to, że nie mieści się w całym divie. Wobec tego chciałem przewidzieć ile wierszy będzie zajmował każdy newsów i łącząc te dane ze stronicowaniem wszystkich newsów wyświetlać na kazdej z podstron mieszczącą się w ryzach tego głównego Diva ilość newsów. eh.... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
ambitne... btw. przy pomocy funkcji która podał maly_swd jesteś w stanie łatwo wyliczyć ile będziesz miał linii tekstu w pojedynczym newsie. Dzielisz tekst na znaczniki nowej linii sprawdzasz każdą linie czy się nie zawinie itd... to jest do zrobienia. ew. do tableli z newsami dodajesz kolumne z tekstem krótkim i wyświetlasz tylko ten tekst.
ps. W c++ robiłem silnik bazy danych na prace inż i powiem że aby zrobić coś takiego w c++ to musiałbyś tez w to włożyć sporo pracy Ten post edytował fander 3.07.2009, 12:54:38 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
To co napisales mozna zrealizowac w inny sposob:)
w skrocie div z newsami ma szerokosc 300px i wysokosc 400px; overflow chowa wszystko co wystaje poza ten obszar. w div div -> masz newsy po jednej linijce szerokosc auto (300px) i wysokosc ~14px (tyle zajmule linia z fontem 10px), jesli news by sie przelamal do nowej lini to zostanie on ukryty przez overflow. pozdro -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy k0b3 chce w taki sposób standaryzować swój moduł newsów, ja rozumiem że kolega che wyświetlać zawartość całego newsa nie ukrywając części informacji, i jeśli ma 2 duże newsy zajmujące cała wysokość to tylko one się wyświetlają a jeśli ma 10 małych to wyświetla 10 małych jeśli się mieszczą, ale to jest mało praktyczne
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
To jesli ma byc tak jak piszesz to wystarczy wywalic #news div {height: ... i overflow} a zostawic #news {width: 300px; height: 400px; overflow: hidden;}
i bedzie wtedy wyswietlalo tyle ile sie zmiesci w box -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
dobrze mówi polać mu
-- jeszcze jeden taki post i poleci ostrzeżenie ~erix |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
heh... teoretycznie.
- główny <div> o wysokości 435px; - newsy - to zależy - 4liniki(~56px), 20linijek(~280px), 6 linijek(~84px) ... (nie muszą być wszystkie równe) - dodać należy padding od góry i od dołu diva (10px) oraz odstępy między newsami (10px); ... razem 10px+10px+56px+10px+280px+10px+84px = 460px > od głównego Diva Wygląda to mniej więcej tak: ![]() Jak widać ostatni news nie mieści się już w ramach tego dużego diva. I teraz jeśli potrafiłbym przewidzieć ile zajmuje dany news na podstawie tekstu pobranego z tabeli, mógłbym przenieść tego ostatniego newsa na kolejną podstronę newsów. Zrozumiałe?? ![]() Ten post edytował k0b3 3.07.2009, 14:16:56 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
zle podejscie:)
policz sobie tak aby padingi i marginy daly jakis wspolny dzielnik:) i bedzie smigalo -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem o co Ci chodzi...
![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
chodzi o to aby wyliczyc sensownie marginy i paddingi tak aby przy takim przykladzie jak jest podany ladnie sie miescilo.
Najprosciej zrezygnowac z padingow i marginow odzielajacych newsy. I przyjac ile linijek moze wejsc w diva glownego. Inne prostrze rozwiazanie to JS i zapoznanie sie z np mootolsami;) -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
no tak ale jeśli bekiesz miał 1 newsa o wysokości 60px a 2 o wysokości 400 px to będzie ci wyświetlało tylko tego 1 newsa a poniżej niego będzie pustka, zgodnie z twoim zamysłem, pomysł maly_swd jest jak najbardziej odpowiedni do twojego systemu newsów. Najlepiej jakbyś zrobił tak ze masz ograniczona ilość newsów w tym dużym divie a te newsy powinny być również w jakimś stopniu skrócone, i tak masz link "czytaj dalej" który odnosi się do konkretnego newsa
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Macie racje, jednak jeśli zrobię tak jak mówi maly_swd to nie mam pojęcia jak ugryźć stronicowanie newsów.
Inne prostrze rozwiazanie to JS i zapoznanie sie z np mootolsami;) Całą stronę ogólnie prezentuje w ajaxie. Myśle, że nie będzie problemu wrzucić wszystkie newsy do jednego DIVa, a później przez JS przesuwać, tworząc dodając jakieś stronicowanie. Jednak jeśli klient ma wyłączoną obsługę skryptów, chce zrobić stronicowanie bardziej statyczne, aby od razu po stronie serwera wyrzucało mi ile i jakie newsy będą na podstronie 1,2,3...itd. Jak pisałem, stronę opieram o smarty, to bez problemu moge określić, że każdy news ma np. max ilość linijek 5. Przez co na jednej z podstron zmieści się do 4 newsów. Wszystko ładnie, jednak nie przewidzę, czy news np ma mniej niż 5 linijek, co stworzy dziurę. Z drugiej strony zakładając, że będzie miał 5 i więcej tych linijek każdy news to szczerze nie podoba mi się jakby to wyglądało - takie same w ciągu. Cholera, jak nie siedziałem przy tym, a tylko wyobrażałem sobie jak zabrać się do tego, to wszystko było o dużo prostsze.. ![]() // edit Dodam jeszcze, że news o rozmiarze 400px raczej się nie zdarzy. Jak zauważyłeś fander to jest link czytaj dalej, a to co będzie na stronie głównej to tylko nagłówek newsa. // edit 2 Chyba zrobie jak mówicie. Co prawda rozwiązałem problem tak jak wspomniał ktoś wyżej. W tablicy mam każdą szerokość literki, napisałem ładnie algorytm który zlicza mi dokładnie ilość enterów oraz gdy jest użyty <br />. Jednak obawiam się, że taki zabieg po stronie serwera może go przeciażać jeśli odwiedzi go np z 30osób naraz. Co radzicie w teraz? Ten post edytował k0b3 3.07.2009, 15:34:53 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
powiem tak, kiedys robilem na gd to co Ty chcesz uzyskac i powiem tak, jest do zrobienia ale ... troche zabawy i nie wiem czy jest Ci to az tak potrzebne...
ten sposob z divami co Ci podalem jest dobry, szybki ale ma i wady... tak jak juz ktos wspomnial:) zobacz to: http://www.efectorelativo.net/laboratory/noobSlide/ przyklad 8. powinnien byc idealny do newsow;) Bloki dzielisz tak jak podalem z divami z tym ze dla newsa robisz 3 linijki i takich blokow po trzy linijki, czyli jakies 8newsow, pozniej robisz pagowanie z mootolsow przyklad wyzej;) i smiga ladnie pieknie.. Ten post edytował maly_swd 3.07.2009, 15:36:53 -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze nie wiem jak to zrobię. Mam dwie możliwości, muszę chyba to zostawić na chwile, bo już mózg mi się lansuje.
Poniżej kod dla mających taki sam problem i są bardzie za tym rozwiązaniem z tablicą i szerokością literek ![]()
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
mozna zrobic to uniwersalniej prze ttfboxa... odpalasz funkcje ktora robi w tablicy szerokosci literek dla danej czcionki i wielkosci. A pozniej jedziesz tak jak masz w funkcji:)
ps. to co podales jest spoko ale podaj dla jakiego fontu i wielkosci;) ps. i nie dziala na boldach i italicach;) -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:15 |