Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ilość EXP usera w formie grafiki (belki)
Forum PHP.pl > Forum > Przedszkole
Soulast
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>
erix
Proste pytanie, co to jest procent?
pedro84
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?

biggrin.gif
sannin
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.
Soulast
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. }
erix
Człowieku, proste odejmowanie... :X
pedro84
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...
Soulast
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.
Wicepsik
Jeśli różnica wynosi 300 to 3 expa to 1%.
Blame
Nie denerwuj się na nich, to przez te wuwuzele 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 smile.gif
@\/ Me?
pedro84
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?
Soulast
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.
Blame
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 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 tongue.gif Dwa kilo mięsa się należy cool.gif
Wszystko pisane z głowy także przepraszam za ew. błędy.
erix
~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.
sannin
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.
Blame
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ąć tongue.gif Więc powinno być:
  1. <div id="exp" style="width=<?echo $exp;?>px;">

erix
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.