Jump to content
php.lv forumi

precentage


KalashaLv

Recommended Posts

Heyy, problēmiņa.

Vēlos uztaisīt precentage līniju kas sākas no jauna ar jaunu ranga sasniegšanu.

domāju, ka var šādi, bet kas man ir jāraksta iekš "pipshimax"?

gan jau ka šis kods ir galīgi garām.

ā un ja kas izmantoju ipbwi.

$pipshi = $ipbwi->member->pips();
pipshimax = ;
        $percents = round(($pipshi / $pipshimax) * 100);

Link to comment
Share on other sites

Ehh :D
pieņemsim, ka userim ir 5 "pipshi".
Ja tu pats izvēlies maksimālo "pipshi" skaitu katrā līmenī, ko useris var iegūt, piemēram, = 100, tad
procentuāli tas sanāk 5x100/100 = 5% no "pipshimax".

Labāk jau skaiti pipshus kopā (0 līdz 10'000, pofig) un tad dali ar pipshimax, tad dalījums būs esošais līmenis, bet atlikums būs esošie pipshi, Pamatskola.

Link to comment
Share on other sites

2 minutes ago, Val said:

Ehh :D
pieņemsim, ka userim ir 5 "pipshi".
Ja tu pats izvēlies maksimālo "pipshi" skaitu katrā līmenī, ko useris var iegūt, piemēram, = 100, tad
procentuāli tas sanāk 5x100/100 = 5% no "pipshimax".

Labāk jau skaiti pipshus kopā (0 līdz 10'000, pofig) un tad dali ar pipshimax, tad dalījums būs esošais līmenis, bet atlikums būs esošie pipshi, Pamatskola.

paskaidrot tu māki, es darīt to nemācēšu. 
tur tā lieta, ka mācos php tikai :D

 

Link to comment
Share on other sites

Tad izmanto loģiku, matemātiku vai uzzime vizuāli shēmu (blokshēmu) varbūt vieglāk saprast.

  • Janodefinē katra nakamā līmņa minimālais punktu skaits $levels[ 2 => 100, 3 => 150, 4 => 200...]
  • Atrodi aktīvo līmeni . Piemēram, ja lietotājam ir 152 punkti tad izejot cauri visiem leveliem lai atrastu pašreizejo līmeni  ( 100 <= 152 && $level > $user_level) {$user_level = $level;} tadejadi tas apstāsies pie 3 līmeņa ...
  • Procenti nepieciešami lai sasniegtu nākamo līmeni .  Piemērs   1 -  (152 - 150) / (200 - 150)   ... 1 - 2 / 50 = 1 - 0.04 = 96%
$user_level = 1;
$levels = [1 => 0, 2 => 100, 3 => 150, 4 => 200];
$user_points = 200;

foreach ($levels as $level => $points) {
    if ($points <= $user_points && $level > $user_level) {
        $user_level = $level;
    }
}

$level_start_points = $levels[$user_level];
$next_level_start_points = isset($levels[$user_level + 1]) ? $levels[$user_level + 1] : 0;
$prc = ($next_level_start_points) ? ($user_points - $level_start_points) / ($next_level_start_points - $level_start_points) : NULL;

 

Link to comment
Share on other sites

32 minutes ago, zeCode said:

Tad izmanto loģiku, matemātiku vai uzzime vizuāli shēmu (blokshēmu) varbūt vieglāk saprast.

  • Janodefinē katra nakamā līmņa minimālais punktu skaits $levels[ 2 => 100, 3 => 150, 4 => 200...]
  • Atrodi aktīvo līmeni . Piemēram, ja lietotājam ir 152 punkti tad izejot cauri visiem leveliem lai atrastu pašreizejo līmeni  ( 100 <= 152 && $level > $user_level) {$user_level = $level;} tadejadi tas apstāsies pie 3 līmeņa ...
  • Procenti nepieciešami lai sasniegtu nākamo līmeni .  Piemērs   1 -  (152 - 150) / (200 - 150)   ... 1 - 2 / 50 = 1 - 0.04 = 96%

$user_level = 1;
$levels = [1 => 0, 2 => 100, 3 => 150, 4 => 200];
$user_points = 200;

foreach ($levels as $level => $points) {
    if ($points <= $user_points && $level > $user_level) {
        $user_level = $level;
    }
}

$level_start_points = $levels[$user_level];
$next_level_start_points = isset($levels[$user_level + 1]) ? $levels[$user_level + 1] : 0;
$prc = ($next_level_start_points) ? ($user_points - $level_start_points) / ($next_level_start_points - $level_start_points) : NULL;

 

Ja to automatizē, something like this?

$user_level = $ipbwi->member->pips();
$levels = [1 => 0, 2 => 10, 3 => 20, 4 => 30, 5 => 40, 6 => 50];
$user_points = $info['posts'];

foreach ($levels as $level => $points) {
    if ($points <= $user_points && $level > $user_level) {
        $user_level = $level;
    }
}

$level_start_points = $levels[$user_level];
$next_level_start_points = isset($levels[$user_level + 1]) ? $levels[$user_level + 1] : 0;
$prc = ($next_level_start_points) ? ($user_points - $level_start_points) / ($next_level_start_points - $level_start_points) : NULL;

 

Link to comment
Share on other sites

Es ieteiktu  pieskirt $user_points vienibu skaitu cik tev foruma ieraktsi vai darbibas atteicigajam lietotājam, nu uz ka pamata tu piesķirsi līmeni.

$user_level vajadzetu but tikai no apgalaba no 1 lidz 6 tava gadijuma ja tu brutāli uzstādisi tad tas nestrādās ... 

Piemeram, ja

$ipbwi->member->pips(); ir 33 ... 
$user_level = 4 , 
$level_start_points = 30, 
$next_level_points = 40,
$prc = (33-30) / (40 - 30) = 3/10 = 0.3 ( 30% )
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...