2011-07-05 11 views
0

私は本当にこの1つの助けが必要です。私はあなたのケースをベースにmysqlの更新をしようとしているが、私はそれが正しいとは思わない。 ここに私が達成しようとしているものがあります。 は、私は、次のフィールドケースステートメントに基づいてmysqlデータベースを更新する

user_id, rank, weekly, monthly, justwinners 
1   9  0  0  0 
2   29  0  0  0 
3   8  0  0  0 
4   10  0  0  0 
5   12  0  0  0 

何私が達成したいことは iは2011年5月7日の開始日を持っていると言うことができます特定の日付に基づいて、毎週、毎月とjustwinnersフィールドを更新することで、テーブルを持っています。 $ startdate = 5-07-2011; 12/07/2011の1週間の終わりに、私は最高ランク1のユーザの週間フィールドを1に更新したいと考えています。同時に、同時に最高の順位を持つ次の3人のユーザの フィールドを更新します。 今週19/07/2011の第2週の終わりに、値がまだ「0」から2になる最も高いランクのユーザーの週単位のフィールドを更新し、 の値を持つjustwinnersフィールドを更新したいまだ0になっています。 これは月間のフィールドを更新する1ヶ月の時間になるまで続きます。 これはこれまで私がこれまで働いていないことを考え出すことができたものです。

//Initiate the database connection here 
function get_db_conn() { 
    $conn = mysql_connect(HOST, DB_USER, DB_PASSWORD) or die('Could not Connect!'); 
    mysql_select_db(DATABASE, $conn) or die ('could not connect to database'); 
    return $conn; 
} 

function updateWinners($limit, $field) { 
$conn = get_db_conn(); 
    switch($field) { 
    case "weekly" : 
    $limit = 1; 

    case "monthly" : 
    $limit = 1 ; 

    case "giftpack" : 
    $limit = 10 ; 

    default: 
    $limit = 1 ; 
    } 

    $sqlquery = "SELECT * FROM application rank DESC " ; 
    $sqlquery .= " where $field < 1 "; 
    $sqlquery .= " LIMIT $limit "; 

    $result = mysql_query($sqlquery); 
    $user_data = mysql_fetch_row($result); 
    if(isset($user_data)) { 
     $user_data = 0 ;  
     while($user_data){ 
     $uid = $user_data(user_id); 
     $rank = $user_data(rank); 

    $query = "INSERT INTO application_winners (user_id, rank, date) VALUES ('$uid', '$rank' 'now()')"; 
    mysql_query($query) or die('Error, insert winners query failed'); 

      switch ($action) { 
     case "weekly": 
     $startdate = "5-07-2011"; 
     $sqlquery = "UPDATE application SET weekly = CASE 
      WHEN (CURDATE() = (startdate * 7)) 
      THEN weekly = '1' 
      WHEN (CURDATE() = (startdate * 14)) 
      THEN weekly = '2' 
      WHEN (CURDATE() = (startdate * 30)) 
      THEN weekly = '3' 
      ELSE weekly 
      END"; 



       } 

     $user_data = $user_data + 1; 
     } //endwhile 
    } 
    else { 
    echo "Error in updating the winners"; 
    } 

} 

これを実装する方法がわかっている場合は、親切に分かち合う。

答えて

0

ちょうど発言として - あなたは挿入があり、それに続いて更新があります。あなたは挿入部分でこれを行うことができます。何かのように:第二のスイッチのための「$アクション」私は密接にすべてのものを見ていなかったが、あなたは、変数を使用している

$query = "INSERT INTO application_winners (user_id, full_name, rank, date, $field) VALUES ('$uid', '$user_fullname', '$rank' 'now()', '$updatevalue')"; 
mysql_query($query) or die('Error, insert winners query failed'); 
0

が、それはあなたのコードのどこにも存在していません。..

+0

はい、どこでも何のアクションがありません、私は本当に知らない、実際に私は何だDOIこれらのコード行では無視されます。私はこれまでに行ったことを見ずに自分のシステムを実装する最良の方法を手伝ってくれるだけです。 – stanley

0

を変更してみてください:

$sqlquery = "UPDATE application SET weekly = CASE 
     WHEN (CURDATE() = (startdate * 7)) 
     THEN weekly = '1' 
     WHEN (CURDATE() = (startdate * 14)) 
     THEN weekly = '2' 
     WHEN (CURDATE() = (startdate * 30)) 
     THEN weekly = '3' 
     ELSE weekly 
     END"; 

へ:

$sqlquery = "UPDATE application SET weekly = CASE 
     WHEN (CURDATE() = (startdate * 7)) 
     THEN '1' 
     WHEN (CURDATE() = (startdate * 14)) 
     THEN '2' 
     WHEN (CURDATE() = (startdate * 30)) 
     THEN '3' 
     ELSE weekly 
     END"; 
+0

投稿していただきありがとうございますが、これを実装するにはどうすればよいのか本当に助けが必要です。私は、私がこれらのコード行で何をしているのか分かっていないと思う。 – stanley

関連する問題