2011-07-17 13 views
1

さて、私は達成システムを持っており、ポイントを正しく追加する以外は素晴らしい作品です。条件が満たされた場合にデータベースに更新する例を次に示します。複数のif文のポイントをまとめて追加することはできませんか?

if($members['Active']==1){  
    $Achievement1=mysql_query("SELECT * FROM ". 
            "myachievements WHERE ". 
           "Handle='$members[Handle]' and AchievementId='1'"); 
    $Achievement2=mysql_num_rows($Achievement1); 
    $tehdate=date('Y-m-d'); 
    $Points = '50'; 
    $newscore=$members['Points']+$Points; 
    if ($Achievement2 == 0) {   
     mysql_query("INSERT INTO `myachievements` 
         (`Handle` , `AchievementId` , `Date`) VALUES 
          ('$members[Handle]', '1' , '$tehdate')" 
        )or die(mysql_error()); 

     mysql_query ("UPDATE members SET Achievement = 'Y' WHERE ". 
         "Handle = '$members[Handle]'")or die(mysql_error()); 
     mysql_query ("UPDATE members SET Points = '$newscore' WHERE ". 
         "Handle = '$members[Handle]'")or die(mysql_error()); 
    } 

} 

上記の達成率は、アカウントを有効にするためのものです。今私は約35の成果をそれぞれ別のIDで持っています。したがって、私のメインのインクルードファイルには、これらの2つのif文の35個のセットがあります。私のメンバーのテーブルの私のテストユーザープロフィールは、すでに35の成果のうち19の条件を満たしています。ポイントの追加を除いて、すべてがデータベース内で正しく更新されます。ポイント合計は約1000ポイント以上になるはずですが、いつも私には150ポイントが与えられます。私は何が間違っているのか分かりません。どんな助けもありがとう。

答えて

1
私はそれは、ポイントを追加しません、それ自身の機能の中に、データベースのものを移動した後、私はあなたが増加し、 $members['Points']のベースポイント値保存しないからだと言う理由を具体的に言うことができない

if($members['Active']==1) 
{ 
    $Points = '50'; 
    $newscore = $members['Points'] + $Points; 

    if (0 == achievement_get_count($members['Handle'], 1)) 
    { 
    achievement_add($members['Handle'], 1, date('Y-m-d')); 
    achievement_set_points($members['Handle'], $newscore); 
    } 
} 

/** achivement mysql functions */ 

function achievement_get_count($memberHandle, $achievementId) { 
    $Achievement1=mysql_query("SELECT * FROM myachievements WHERE Handle='$memberHandle' and AchievementId='$achievementId'"); 
    return mysql_num_rows($Achievement1); 
} 

function achievement_add($memberHandle, $achievementId, $date) { 
    mysql_query("INSERT INTO `myachievements` (`Handle` , `AchievementId` , `Date`) 
    VALUES (
     '$memberHandle', '$achievementId' , '$date')") 
    or die(mysql_error()); 
} 

function achievement_set_points($memberHandle, $points) { 
    mysql_query ("UPDATE members SET Achievement = 'Y', Points = '$points' WHERE Handle = '$memberHandle'")or die(mysql_error()); 
} 
+0

お越しいただき、ありがとうございました。これは問題を絞り込むのに役立ちました。 – Brad45

+0

あなたはもう喜んで喜んでコーディングしています。 – hakre

関連する問題