webForumDet fria alternativet

Plussa på tid (30 dagar)?

Databaser & SQLur Databashanterare & SQL

13 svar · 935 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Vad är det för fel på denna kod?

if ($rad['plus_till'] == '0000-00-00 00:00:00'){
$till = get_date_time(gmtime() + 30*86400); 
} else { 
$till = "plus_till = $rad[plus_till] + 30*86400"; 
}

mysql_query("UPDATE users SET class = '1', plus_till = '$till' WHERE username = '$medlem'");

Varje gång jag ska "plussa på" 30 dagar, så nollställs fältet till "0000-00-00 00:00:00". :(

Medlem sedan juni 20014 421 inlägg
#2

använd mysqls date_add istället.

http://www.w3schools.com/SQL/func_date_add.asp

Medlem sedan juli 20041 271 inlägg
#3

colione skrev:

använd mysqls date_add istället.

http://www.w3schools.com/SQL/func_date_add.asp

Ok! Men jag förstår inte den funktionen riktigt. :r

Medlem sedan dec. 200012 464 inlägg
#4
update users
   set class = 1,
        plus_till = plus_till + interval '30' day
 where username = '$medlem'
Medlem sedan juli 20041 271 inlägg
#5

Jag får fortfarande inte till det. :x

Har detta:

if ($rad['plus_till'] == '0000-00-00 00:00:00'){ 
$datum = date("Y-m-d H:i:s", strtotime("+30 day"));

} else { 
$datum = date($rad['plus_till'], strtotime("+30 day"));
}

mysql_query("UPDATE users SET class = '1', plus_till = plus_till + '$datum', WHERE username = '$medlem'");
Medlem sedan juli 20041 271 inlägg
#6

*bump*

Medlem sedan dec. 20025 483 inlägg
#7

Om du skriver ut den färdiga SQL-frågan så ser du att den inte ser likadan ut som LarsGs exempel. T.ex. saknas interval.

Medlem sedan juli 20041 271 inlägg
#8

Peter S skrev:

Om du skriver ut den färdiga SQL-frågan så ser du att den inte ser likadan ut som LarsGs exempel. T.ex. saknas interval.

De exempel jag har sett, använder inte "INTERVAL", utan ADDDATE eller date_add, men jag förstår inte hur det fungerar.

Medlem sedan juli 20041 271 inlägg
#9

Någon som kan hjälpa mig med detta?

Om fältet "plus_till" har "0000-00-00 00:00:00", ska 30 dagar läggas till från dagens datum.
Om fältet "plus_till" redan har data, ska 30 dagar läggas till (plussas på) från det datumet som redan finns sparat i fältet.

(Koden ska användas till en VIP funktion.)

Medlem sedan juli 20041 271 inlägg
#10

*bumpellibump* :x :r

Medlem sedan dec. 200012 464 inlägg
#11
update users
   set class = 1,
        plus_till = case when plus_till = '0000-00-00 00:00:00' then 
                    current_date else plus_till end + interval '30' day
 where username = '$medlem'
Medlem sedan juli 20041 271 inlägg
#12

LarsG skrev:

update users
   set class = 1,
        plus_till = case when plus_till = '0000-00-00 00:00:00' then 
                    current_date else plus_till end + interval '30' day
 where username = '$medlem'

Tack!

Datumet stämmer men klockslag sparas inte. :q

Medlem sedan juli 20041 271 inlägg
#13

*bump*

Medlem sedan juni 200032 969 inlägg
#14

Använd current_timestamp istället då.

136 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)