pafa7a
Well-Known Member
- Joined
- Jul 9, 2009
- Messages
- 1,402
- Reaction score
- 820
Така също би трябвало да стане. Утре ще ви дам и друг вариантАз по си го представям така:
следното си го слагате където искате... config, някой файл който се извиква в header и т.н., файл с функции и пр.
PHP:function update_rankings($time){ $rewards = array (1 => '500', 2 => '300', 3 => '100'); $newtime = time() + (7 * 24 * 60 * 60); prepare("SELECT COUNT(*) as count FROM Rewards WHERE nextTime <= '".$time."' "); $result = fetch(PDO::FETCH_ASSOC); if($result['count'] == 1){ prepare("SELECT TOP 3 AccountID FROM EVENT_INFO ORDER BY Point DESC"); while($characters = fetch(PDO::FETCH_ASSOC)){ $i++; prepare("UPDATE MEMB_CREDITS SET Credits = credits+'".$rewards[$i]."' WHERE memb___id='".$characters['AccountID']."'"); } prepare("UPDATE EVENT_INFO SET Point = '0'"); prepare("UPDATE Rewards SET nextTime = '".$newtime."' "); } }
в своя header:
PHP:update_rankings(time());
и въпросното в query:
Code:CREATE TABLE [dbo].[Rewards]( [nextTime] [int] NOT NULL ) ON [PRIMARY] GO
P.S. Написал съм го така, защото използвам PDO, вие си го направете както ще ви е удобно... И аз нямах възможност да го пробвам!
Edit : feature21 за твоя код според мен когато ще дава кредити за награда няма да работи както трябва защото първата стойност на $i ще е 0 , а $rewards започва от 1. Според мен трябва да е така :
PHP:
prepare("UPDATE MEMB_CREDITS SET Credits = credits+'".$rewards[$i+1]."' WHERE memb___id='".$characters['AccountID']."'");
Edit 3 : Ето и моя вариант за седмици (изпълнява се само в понеделник) Ако искате да промените деня използвайте Mon,Sun....
PHP:
<?php
$rewardDS=array(1=>500,2=>350,3=>150);
$den=date('D');
if($den == 'Mon'){//Vseki ponedelnik
$newtime=time()+(7*24*60*60);
$sedmica=mssql_num_rows(mssql_query("SELECT * FROM Rewards WHERE nextTime <= '$time'"));
if($sedmica == 1){
//DS event
$query=mssql_query("SELECT TOP 3 * FROM EVENT_INFO order by CharacterName desc");
for($i=0;$i < mssql_num_rows($query);++$i)
{
$DScredits=$rewardDS[$i+1];
$ds=mssql_fetch_array($query);
$dsacc=mssql_fetch_row(mssql_query("SELECT Id FROM AccountCharacter WHERE GameID1='$ds[CharacterName]' or GameID2='$ds[CharacterName]' or GameID3='$ds[CharacterName]' or GameID4='$ds[CharacterName]' or GameID5='$ds[CharacterName]'"));
mssql_query("UPDATE MEMB_CREDITS SET credits=credits+'$DScredits' WHERE memb___id='$dsacc[0]'");
if($i==2){
mssql_query("UPDATE EVENT_INFO SET Point='0'");
mssql_query("UPDATE Rewards SET Mesec=Mesec+1");
}
}
//END OF DS
//Sa6toto i za BC samo smeni imenata na tablicite i promenlivite
}
}
?>
Code:
CREATE TABLE [dbo].[Rewards](
[nextTime] [int] NOT NULL
) ON [PRIMARY]
GO
Last edited: