2017-04-06 7 views
0

投稿に基づいてレベルシステムを作成しました。レベルごとのパーセンテージを取得

Level 1 = 1-25 posts 
Level 2 = 26-50 posts 
Level 3 = 51-250 posts, etc... 

私はまた、あなたはこのような何かので、プログレスバー通常

を表示するようになりたかった:

$author_posts = 15; 
$progress = ($author_posts * 100)/25; //(level 1) 

進捗率は、その後60%です。

しかし、ユーザーが既にlevel 3に達した場合はどうすればよいですか?

if($author_posts >= '250') { 
    $progress = '100'; 
} elseif($author_posts < '51') { 
    $progress = '0'; 
} else { 
    $progress = // what should I use here? 
} 


<div class="progress-bar" style="width:<?php echo esc_attr($progress); ?>%;"></div> 
+0

はあなたが割合で意味を明確にすることはできますか?それは次のレベルまでパーセントですか? –

+0

基本的な数学=($ author_posts/250)* 100 – nogad

+0

現在のレベル(レベル3)内のパーセンテージです。または、レベル3がクリアされるまでのパーセンテージのパーセンテージと同じです。 $ progress($ author_posts * 100)/(250 - 51); ' – kiarashi

答えて

2

ご含まifブロックは、彼らがそのレベルの下限をヒットするまで、ユーザーが0%の進捗であることを意味します。その境界の下にある以前の投稿のどれも、それが突破された後のパーセンテージとしてカウントされないと仮定できますか?これは、51〜250のポストだけがパーセンテージポイントとしてカウントされ、200個のポストを含むことを意味します(両端を含む)。したがって、1ポスト= 0.5%。

よう

$progress = round((($author_posts - 51)/200) * 100) 

51 = 1%ポスト= 0%

52ポスト(切り上げ)

200ポスト= 75%

再使用可能な場合この式のバージョンは

012のようになります
$progress = round((($author_posts - $lower)/(($upper - $lower) + 1)) * 100) 

$upperおよび$lower各レベル内で境界が再定義されています。

+0

はい、それはまさに正しいことです。あなたの公式では、エラーを引き起こす余分な ')'が追加されました。 :) – kiarashi

+0

申し訳ありませんが、私はチェックせずに編集しました。更新しました。これがあなたの質問に答えるなら、同意してください。 – domwrap

+0

受け入れられました。ありがとうございました! – kiarashi

0

使用この:

if($author_posts >= '250') { 
    $progress = '100'; 
} elseif($author_posts < '51') { 
    $progress = '0'; 
} else { 
    $progress = (($author_posts - 50)/200) * 100; 
} 

<div class="progress-bar" style="width:<?php echo esc_attr($progress); ?>%;"></div> 
関連する問題