0

わかりましたので、ユーザーがタスクを完了するたびにジャックポット エントリを授与しようとしていますが、タスクが一定額以上を授与したときに複数のエントリを提供したいと考えています。

これを分解してみましょう。

ユーザーが $0.05 以上の賞金を獲得するタスクを完了すると、ジャックポットへのエントリが 1 つ与えられます。私が達成しようとしているのはこれです。0.50 ドル相当のタスクを完了すると、追加で 1 エントリを受け取り、さらに 0.25 ドルごとにさらに 1 エントリを取得するため、1.00 ドル相当のタスクを完了すると、合計 4 エントリを取得する必要があります。最初の $0.05 の場合は 1、$0.50 の価値があるタスクの場合は 1、$0.75 に到達する場合は 1、$1.00 に到達する場合はさらに 1 つ

これを行う方法がわかりません。したがって、データベースでの更新に関して私が持っているのはこれだけです。

if($offprate >= $rafminp || $offcrate >= $rafminc){
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'1' WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
}

これは最初の $0.15 だけです

4

1 に答える 1

1

私は単純に考えすぎていますか?

$amount = 0.5;
$credits = 0;
switch($amount) {
  case 0.05: $credits = 1; break;
  case 0.50: $credits = 2; break;
  case 0.75: $credits = 3; break;
  case 1.00: $credits = 4; break;
}
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'$credits' WHERE username = ?");

または多分:

$all_amounts = array(0.05, 0.50, 0.75, 1.00);
$credits = array_search($amount, $all_amounts)+1; # returns -1 when not found

正確な値がない場合は、switch ステートメントを if-else カスケードに置き換えます。


あなたの質問を読み直すと、金額に上限はないようです。その場合:

$credits = 0;
if($amount == 0.05)
  $credits = 1;
if($amount >= 0.50) 
  $credits = floor(2+($amount-0.50)/0.25);
于 2012-12-01T17:40:07.617 に答える