Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Pasek postępu (oceny)
GreenGo
post
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Witam.
Wie może ktoś jak zrobić aby pasek oceny rysował się automatycznie w zależności od jej wysokości ? Czyli np.
użytkownicy ocenili artykuł na np. 8.46 i chodzi o to aby pasek wyświetlający tą ocene wypełnił się kolorkiem do punku 8.46 biorąc za max 10 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Z góry dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Rysujesz sobie tabelę. Tabela ma szerokość (lub wysokość) 10 (w pikselach) razy jakaś tam wartość (nie wiem jak duży ma być pasek). Następnie za pomocą css ustawiasz kolor tła dla komórki i masz ładny pasek (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował batman 17.08.2006, 22:03:04
Go to the top of the page
+Quote Post
My4tic
post
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


Cytat(batman @ 17.08.2006, 21:02 ) *
Rysujesz sobie tabelę. Tabela ma szerokość (lub wysokość) 10 (w pikselach) razy jakaś tam wartość (nie wiem jak duży ma być pasek). Następnie za pomocą css ustawiasz kolor tła dla komórki i masz ładny pasek (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Troche dziwny pomysł ;-)

A wracając do tematu to nie ma sensu bawić sie w coś co będzie rysowało obrazki z taką dokładnością. Jeśli jednak chcesz to:

http://pl2.php.net/manual/pl/ref.image.php

...jednak radziłbym zrobić oceny artykułu w postaci jakiś gwaizdek lub nawet słupka ale nie z taką dokładnością. Zrob sobie jakiś gif na 10px wysokości i w zależności czy ocena znajduje sie w przedziałach wsatawaisz odpowiednią ilość gwiazdek czy czego tam chcesz np.:

ocena < 0 - zero gwiazdek
0 < ocena < 1 - jedna gwiazdka
1 < ocena < 2 - dwie gwiazdki

..itd.
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Co do gd to nie polecam. Ma duże możliwości ale zamula i wymaga modułu, który nie zawsze jest dostepny u dostawców.
A odnośnie gwiazdek. Jest to pomysł tak samo funkcjonalny jak słupki z jednym wyjątkiem. W przykładzie podanym przez My4tic trzeba będzie napisać trochę if-ów. Po co zaśmiecać kod kolejnymi warunkami?
Go to the top of the page
+Quote Post
GreenGo
post
Post #5





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


gwiazdki miałem do tej pory i właśnie ze względu na czytelność kodu chce to zmienić na taki pasek. Jeśli nie ma innej możliwoście to pewnie skończy się na poszerzającym się obrazku.
Go to the top of the page
+Quote Post
Prph
post
Post #6





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Mozna zrobic tak:

  1. <?php
  2. $iOcena = baza_danych_podaj_ocene();
  3.  
  4. for($i = 1; $i <= $iOcena; $i++)
  5. echo '<gwiazdka>';
  6. ?>


Adrian.
Go to the top of the page
+Quote Post
php programmer
post
Post #7





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

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


Cytat
Troche dziwny pomysł ;-)

Właśnie bardzo dobry pomysł,
użycie CSS dobrze nadaje się do takiego prostego wyksreu
natomiast użycie GD jest w tym przypadku to troche przesada
(z czołgiem na zająca)

na samy dole tej strony przykład
jest użyte właśnie CSS do zrobienia wykresu

Ten post edytował php programmer 18.08.2006, 10:00:24
Go to the top of the page
+Quote Post
tiraeth
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Na dole jest nie tyle CSS to znacznik <img> ze zmienioną szerokością.... klik

Przykład CSS (działa tylko na Firefoxie i Operze):
  1. <style type="text/css">
  2. div.shadows {
  3. margin-top : 1px;
  4. margin-left : 1px;
  5. width : 454px;
  6. padding-right : 1px;
  7. padding-bottom : 1px;
  8. background : #c9c9c9;
  9. -moz-border-radius : 4;
  10. border-radius : 4;
  11. }
  12.  
  13. div.shadows>div.ProgressBar {
  14. top : -1px;
  15. left : -1px;
  16. width : 450px;
  17. height: 11px;
  18. background : #ffffff;
  19. border : solid 1px #000000;
  20. padding : 1px;
  21. position : relative;
  22. -moz-border-radius : 4;
  23. border-radius : 4;
  24. }
  25.  
  26. div.shadows>div.ProgressBar div.percent {
  27. position : absolute;
  28. top : 0;
  29. width : 100%;
  30. margin : auto 0;
  31. background : 0;
  32. text-align : center;
  33. vertical-align : middle;
  34. font-size : 10px;
  35. font-weight : bold;
  36. font-family : Arial, sans-serif;
  37. font-color : #434343;
  38. }
  39.  
  40. div.shadows>div.ProgressBar div.progress {
  41. display : block;
  42. width : 75%;
  43. height : 100%;
  44. background : #ff0000;
  45. -moz-border-radius : 3;
  46. border-radius : 3;
  47. }
  48.  
  49. <div class="shadows">
  50. <div class="ProgressBar">
  51. <div class="progress"></div>
  52. <div class="percent">75%</div>
  53. </div>
  54. </div>
Go to the top of the page
+Quote Post
LBO
post
Post #9





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

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


Cytat(batman @ 18.08.2006, 00:04 ) *
Co do gd to nie polecam. Ma duże możliwości ale zamula i wymaga modułu, który nie zawsze jest dostepny u dostawców.

A o cache nie słyszałeś?

Poza tym mozna gwiazdki wygenerować (stworzyć w PSP, PS) samemu, będzie to raptem z 10 gifów (jeżeli będą połowki gwiazdek).
Go to the top of the page
+Quote Post
GreenGo
post
Post #10





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Ok zdecydowałem się na CSS ale coś nie działa :/

Mama zmienną:
  1. <?php
  2. $width = $ocena2*10;
  3. ?>

a następnie kod wyświetlający pasek:
  1. <div style=\"background-color:#000000; height:10px; width:100px; \">
  2. <div style=\"width:$width px; height:10px; background-color:#3C8EA6;\"></div>
  3. </div>

I nie wiem dla czego ale zawsze zamalowuje mi cały pasek :/
Go to the top of the page
+Quote Post
danek
post
Post #11





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


Zrób coś takiego:
  1. <?
  2. $pasek=$ocena*2; //caly pasek bedzie mial 20 px
  3. $reszta=20-$pasek;
  4. echo'<table><tr><td width='.$pasek.'></td><td width='.$reszta.'></td></tr></table>';
  5. ?>

A po ocenie 8 otrzymasz:
  1. <table><tr><td width=16></td><td width=4></td></tr></table>

Proste...
A w komórkach tabeli zrób odwołanie do klas w CSS
Go to the top of the page
+Quote Post
My4tic
post
Post #12





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


Cytat(php programmer @ 18.08.2006, 08:59 ) *
Właśnie bardzo dobry pomysł


Mylisz sie - tabele nie słuzą do takich rzeczy dloatego nie jest to dobre rozwiązanie. Przykład podany przez tiraeth jest juz duzo lepszy. Chociaz i tak moim zdaniem lepiej zrobić sobie gwiazdki i jakąś funkcje do tego. Na pewno kod bedzie bardziej przejrzysty niz wtedy gdy bedzie w nim pełno tabelek.

Wywołasz sobei funkcje ProgressBar($ocena), funkcja sprawdzi jaki obrazek nalezy wstawic i taki wysle.

Zamiast:

  1. <table><tr><td width=16></td><td width=4></td></tr></table>


bedziesz miał jedno:

  1. <img>


Pzdr
Go to the top of the page
+Quote Post
tiraeth
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Udało mi się zrobić alternatywny styl dla InternetExplorera (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Teraz w trzech przeglądarkach pasek postępu wygląda w miarę podobnie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

http://phpfi.com/142501
Go to the top of the page
+Quote Post
phpion
post
Post #14





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




A mi sie podobaja takie proste paski postepu:
llllllllllllllllllllllllllllll 40%
cos takiego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wystarczy uzyc dwukrotnie str_repeat() wypisujacego literke 'l' (male L) i po sprawie.
Mozesz tez uzyc zwyklego gifa o wymiarach 1x1 px i ustawic wysokosc stala np. na 20px a szerokosc wstawiac dynamicznie (np. dla 40% width: 40px;)
Albo system z gwiazdkami analogicznie do pierwszego podanego przeze mnie: np. 4 razy wyswietlasz gwiazdki zakolorowane, po nich 6 razy gwiazdki puste (dla 40%).

Ten post edytował phpion.com 19.08.2006, 19:43:06
Go to the top of the page
+Quote Post
slawek_master
post
Post #15





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 4.01.2006

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


@phpion.com efektowne i efektywne (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) mi sie tam podoba:)
Go to the top of the page
+Quote Post

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: 15.09.2025 - 21:39