Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ilość EXP usera w formie grafiki (belki)
Soulast
post
Post #1





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Mam oto taki kod leveli użytkownika:

  1. if ($points >= 0 && $points < 100){
  2. $level_up="1";
  3. }
  4. if ($points >= 100 && $points < 200){
  5. $level_up="2";
  6. }
  7. if ($points >= 200 && $points < 400){
  8. $level_up="3";
  9. }
  10. if ($points >= 400 && $points < 600){
  11. $level_up="4";
  12. }
  13. if ($points >= 600 && $points < 900){
  14. $level_up="5";
  15. }


próbuje zrobić tak aby poza nr levela była pokazana belka a długość jej pokazywałby ile np % jest aktualnie zdobyte w danym levelu.

dodałem jescze css:

  1. <div class='bar' style='width:-----a tutaj właśnie jakiś kod np ile % zostało zdobyte w danym levelu ----;'>$level</div>
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Proste pytanie, co to jest procent?
Go to the top of the page
+Quote Post
pedro84
post
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Naucz się zadawać pytania. Masz problem z obliczaniem procentów? Nie wierzę...

Cytat(erix @ 25.06.2010, 17:26:34 ) *
Proste pytanie, co to jest procent?

(IMG:style_emoticons/default/biggrin.gif)

Ten post edytował pedro84 25.06.2010, 16:27:42
Go to the top of the page
+Quote Post
sannin
post
Post #4





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Robisz div o długości 100px z tłem (ramka tak jak tutaj http://img465.imageshack.us/i/6pn2.jpg/) i w nim drugi div z tłem - pliczek o szerokości 1px i ustawiasz divowi width.

Ten post edytował sannin 25.06.2010, 16:31:18
Go to the top of the page
+Quote Post
Soulast
post
Post #5





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Cytat(sannin @ 25.06.2010, 17:29:40 ) *
Robisz div o długości 100px z tłem (ramka tak jak tutaj http://img465.imageshack.us/i/6pn2.jpg/) i w nim drugi div z tłem - pliczek o szerokości 1px i ustawiasz divowi width.


To już mam wpisywanie ręcznie % działa bezproblemowo lecz, nie mam pojęcia jak to podpiąć pod powyższy kod aby np czytał różnicę level pomiędzy 300 - 600 exp.

dokładnie mam na myśli oto taki kod:
  1. if ($points >= 600 && $points < 900){
  2. $level_up="5";
  3. }
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Człowieku, proste odejmowanie... :X
Go to the top of the page
+Quote Post
pedro84
post
Post #7





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(Soulast @ 25.06.2010, 18:24:23 ) *
To już mam wpisywanie ręcznie % działa bezproblemowo lecz, nie mam pojęcia jak to podpiąć pod powyższy kod aby np czytał różnicę level pomiędzy 300 - 600 exp.

dokładnie mam na myśli oto taki kod:
  1. if ($points >= 600 && $points < 900){
  2. $level_up="5";
  3. }

Wybacz, ale czy Ty jesteś kretynem? Różnica pomiędzy 300 a 600 wynosi... UWAGA 300.Skąd wziąłem tę magiczną liczbę. Z zaje... trudnego działania: 300-600=300...

Ludzie...
Go to the top of the page
+Quote Post
Soulast
post
Post #8





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Cytat(pedro84 @ 25.06.2010, 18:34:56 ) *
Wybacz, ale czy Ty jesteś kretynem? Różnica pomiędzy 300 a 600 wynosi... UWAGA 300.Skąd wziąłem tę magiczną liczbę. Z zaje... trudnego działania: 300-600=300...

Ludzie...


Super dzięki za pomoc ale zanim zaczniesz obrażać kogoś przeczytaj uważnie pytanie.

Wiem ile to się równa ale nie mam pojęcia gdzie to wpisać!Nie bez powodu zadaje pytanie w Przedszkolu.
Go to the top of the page
+Quote Post
Wicepsik
post
Post #9





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


Jeśli różnica wynosi 300 to 3 expa to 1%.
Go to the top of the page
+Quote Post
Blame
post
Post #10





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Nie denerwuj się na nich, to przez te wuwuzele (IMG:style_emoticons/default/winksmiley.jpg)
Ogólnie to sprawa jest trochę bardziej skomplikowana, bo żeby pokazać aktualny procent zdobytego doświadczenia, musimy znać jego całość. To zależy głównie od tego, czy do każdego następnego poziomu jest potrzebne tyle samo punktów, czy im wyższy poziom tym więcej, to raz. Druga sprawa to ilość tych poziomów, bo jeśli jest jakiś limit to można by zrobić zwykłego switch'a, jeśli nie to najwygodniej byłby znaleźć sobie jakiś schemat.
Na początek powiedz nam jak z tymi punktami, w zależności od poziomu, potem będziemy myśleć dalej (IMG:style_emoticons/default/smile.gif)
@\/ Me?

Ten post edytował Blame 25.06.2010, 17:59:10
Go to the top of the page
+Quote Post
pedro84
post
Post #11





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(Soulast @ 25.06.2010, 18:48:53 ) *
Super dzięki za pomoc ale zanim zaczniesz obrażać kogoś przeczytaj uważnie pytanie.

Wiem ile to się równa ale nie mam pojęcia gdzie to wpisać!Nie bez powodu zadaje pytanie w Przedszkolu.

Gdzie masz obrażanie? To pytanie. Z polskim też na bakier? Ale jeśli ktoś nie wie jak odjąć 300 od 600 albo ma problem z obliczeniem jednego procenta z liczby 300 to... szkoda słów.

Nie wiesz gdzie wpisać? No ludzie... Rusz głową. No.. Zabolało? Nie? To jedziemy dalej. Skoro utworzyłeś sobie belkę (zakładam, że wszystko już zrobione) to wartość procentową wpisujesz w miejscu gdzie...ustalasz szerokość tej belki...

@up: Ty kpisz, co nie?

Ten post edytował pedro84 25.06.2010, 17:58:03
Go to the top of the page
+Quote Post
Soulast
post
Post #12





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Kod nie jest mój próbuje go jedynie urozmaicić.Wartości poziomów a raczej który to ma level są wyczytywane z tabeli sql takim zapytaniem :

  1. $user=mysql_query("SELECT name,level FROM members ORDER BY id");
  2. while(list($name,$level)=mysql_fetch_row($user))


więc nie mam opcji nadawania im ręcznie width='%'

do tego jest includowany plik level.php gdzie widnieją kody poziomów przykład zapodałem na początku tematu.

Oraz różnice pomiędzy poziomami są różne.

Ten post edytował Soulast 25.06.2010, 18:22:06
Go to the top of the page
+Quote Post
Blame
post
Post #13





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Hę? To skąd ty bierzesz te punkty? Znaczy ile kto ma na danym poziomie?
No ale przyjmijmy, że skądś je tam wczytujesz, to teraz przedstawię ci schemat jak ja bym to zrobił, tak żeby zbytnio nie komplikować sprawy i żeby to działało:
$poziom - to będzie poziom usera,
$punkty - a to będą jego punkty na danym poziomie,
$punkty_max - tu mamy ilość punktów potrzebną do następnego poziomu.
Na początek tworzysz switch'a, który w zależności od wartości zmiennej $poziom będzie obliczał % doświadczenia, trzeba to zrobić z racji tego, że jak powiedziałeś im wyższy poziom, tym więcej punktów trzeba zdobyć do następnego. Ale uwaga, ma to sens, dopóty dopóki poziomów jest niedużo, tak <10. Potem najlepiej jakbyś sobie wypracował jakiś wzór, nie wiem, może $punkty_max = $poziom * 100 i wtedy będziesz mógł mieć tylko jedno działanie. No ale wróćmy do switch'a, przykład(zakładamy, że user ma 40pkt a do następnego poziomu musi mieć 200):
  1. switch($poziom){
  2. case 1:
  3. $punkty_max = 200;
  4. $exp = intval($punkty/$punkty_max*100); // wychodzi nam 20
  5. break;
  6. }

Intval użyłem, abyśmy nie otrzymywali liczb dziesiętnych, bo nie można ustalić czemuś szerokości np. 0,3 px. Teraz pora na html i CSS. Cała filozofia polega na tym, aby - jak już ktoś napisał - zrobić dwa div'y, jeden w drugim. Nazwijmy je #max i #exp. #max ma ustawioną szerokość 100px i wysokość dowolną, byleby taką samą miał #max, temu drugiemu ustawiamy tylko wysokość i jakieś tło na początek, szerokość będziemy mu ustalać dynamicznie za pomocą wcześniej otrzymanej zmiennej $max. Teraz następny przykład(zawieje trochę gotowcem (IMG:style_emoticons/default/winksmiley.jpg) , sam HTML, z CSS musisz sobie poradzić sam według moich wskazówek):
  1. <div id="max">
  2. <div id="exp" style="width=<?echo $exp;?>;">
  3. </div>
  4. </div>

I to już koniec, ale się upisałem (IMG:style_emoticons/default/tongue.gif) Dwa kilo mięsa się należy (IMG:style_emoticons/default/cool.gif)
Wszystko pisane z głowy także przepraszam za ew. błędy.

Ten post edytował Blame 25.06.2010, 20:31:55
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~pedro84:
Cytat
Wybacz, ale czy Ty jesteś kretynem?

Żółta kartka, pilnuj się.

Cytat
Ogólnie to sprawa jest trochę bardziej skomplikowana, bo żeby pokazać aktualny procent zdobytego doświadczenia, musimy znać jego całość. To zależy głównie od tego, czy do każdego następnego poziomu jest potrzebne tyle samo punktów, czy im wyższy poziom tym więcej, to raz.

Ludzie, obliczanie procentów jest w podstawówce... Różnica między zakresami = N, bieżący poziom = x, do wzoru wystarczy podstawić, uch...

Cytat
  1. <div id="exp" style="width=<?echo $exp;?>;">

width: Xunit; jak już.

Cytat
Wiem ile to się równa ale nie mam pojęcia gdzie to wpisać!

http://rtfm.killfile.pl - jakoś wszyscy zrozumieli to tak, że pytałeś, jak to policzyć. I czasem naprawdę warto się zastanowić kilkukrotnie, tak samo przeczytać swoją wypowiedź, bo nikt nie siedzi w Twojej głowie i nie wie, co tak naprawdę miałeś na myśli, a co przekazałeś tekstem.

I radzę skończyć jakiekolwiek personalne wycieczki, macie od tego PW.
Go to the top of the page
+Quote Post
sannin
post
Post #15





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Cytat(pedro84 @ 25.06.2010, 18:34:56 ) *
Wybacz, ale czy Ty jesteś kretynem? Różnica pomiędzy 300 a 600 wynosi... UWAGA 300.Skąd wziąłem tę magiczną liczbę. Z zaje... trudnego działania: 300-600=300...

Ludzie...


Sorry za oftopa ale to jest -300, a to jest różnica. Więc jak widzisz każdy popełnia błędy.
Go to the top of the page
+Quote Post
Blame
post
Post #16





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Cytat(erix @ 25.06.2010, 22:15:53 ) *
width: Xunit; jak już.

No tak, jak już mówiłem mogłem się pomylić/coś pominąć (IMG:style_emoticons/default/tongue.gif) Więc powinno być:
  1. <div id="exp" style="width=<?echo $exp;?>px;">

Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
No tak, jak już mówiłem mogłem się pomylić/coś pominąć Więc powinno być:

Uch:
  1. <div id="exp" style="width: <?PHP echo $exp;?>px">

Dwukropek, a nie znak równości.
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 - 03:54